From 8efd8f1dc8df8180ea7658467484653d8ee46079 Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Sun, 7 Jun 2026 13:32:07 +0200 Subject: [PATCH] fix(jellyfin): upload artwork as binary --- lib/services/jellyfin_client.dart | 1 - lib/services/jellyfin_client/parts/metadata_edit.dart | 2 +- test/services/jellyfin_client_urls_test.dart | 8 ++++---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/services/jellyfin_client.dart b/lib/services/jellyfin_client.dart index 2b3cdc79..9637ad20 100644 --- a/lib/services/jellyfin_client.dart +++ b/lib/services/jellyfin_client.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import 'dart:convert'; import 'package:flutter/foundation.dart' show visibleForTesting; import 'package:http/http.dart' as http; diff --git a/lib/services/jellyfin_client/parts/metadata_edit.dart b/lib/services/jellyfin_client/parts/metadata_edit.dart index 266853b1..2d092236 100644 --- a/lib/services/jellyfin_client/parts/metadata_edit.dart +++ b/lib/services/jellyfin_client/parts/metadata_edit.dart @@ -68,7 +68,7 @@ mixin _JellyfinMetadataEditMethods on MediaServerCacheMixin { }) async { final response = await _http.post( '/Items/${_segment(itemId)}/Images/${_segment(imageType)}', - body: base64Encode(bytes), + body: bytes, headers: {'Content-Type': contentType}, ); throwIfHttpError(response); diff --git a/test/services/jellyfin_client_urls_test.dart b/test/services/jellyfin_client_urls_test.dart index 637603cf..afb170f3 100644 --- a/test/services/jellyfin_client_urls_test.dart +++ b/test/services/jellyfin_client_urls_test.dart @@ -3016,15 +3016,15 @@ void main() { expect(requests[1].queryParameters['imageUrl'], 'https://img.example/poster.jpg'); }); - test('uploadItemImage sends base64 image body and image content type', () async { + test('uploadItemImage sends binary image body and image content type', () async { Uri? capturedUri; - String? capturedBody; + List? capturedBody; Map? capturedHeaders; final client = JellyfinClient.forTesting( connection: _conn(), httpClient: MockClient((request) async { capturedUri = request.url; - capturedBody = request.body; + capturedBody = request.bodyBytes; capturedHeaders = request.headers; return http.Response('', 204); }), @@ -3040,7 +3040,7 @@ void main() { expect(success, isTrue); expect(capturedUri!.path, '/Items/item-1/Images/Primary'); - expect(capturedBody, base64Encode([0xff, 0xd8, 0xff, 0x00])); + expect(capturedBody, [0xff, 0xd8, 0xff, 0x00]); expect(capturedHeaders!['Content-Type'] ?? capturedHeaders!['content-type'], 'image/jpeg'); });