Skip to content

Commit c81f752

Browse files
committed
Add headers to image writer
1 parent 93d68cb commit c81f752

6 files changed

Lines changed: 16 additions & 17 deletions

File tree

lib/ImageWriter.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import 'dart:math';
55
import 'dart:typed_data';
66

77

8+
import 'package:LoliSnatcher/ViewUtils.dart';
89
import 'package:get/get.dart';
910
import 'package:http/http.dart' as http;
1011

@@ -65,7 +66,7 @@ class ImageWriter {
6566
if(fileExists || item.isSnatched.value == true) return null;
6667
try {
6768
Uri fileURI = Uri.parse(item.fileURL);
68-
var response = await http.get(fileURI);
69+
var response = await http.get(fileURI,headers: ViewUtils.getFileCustomHeaders(booru,checkForReferer: true));
6970
if (SDKVer < 30 && settingsHandler.extPathOverride.isEmpty) {
7071
await Directory(path!).create(recursive:true);
7172
await image.writeAsBytes(response.bodyBytes, flush: true);

lib/ViewUtils.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
import 'package:flutter/cupertino.dart';
22
import 'package:flutter/material.dart';
33

4-
import 'package:LoliSnatcher/SearchGlobals.dart';
54
import 'package:LoliSnatcher/libBooru/Booru.dart';
65

76
class ViewUtils {
87

98
// unified http headers list generator for dio in thumb/media/video loaders
10-
static Map<String, String> getFileCustomHeaders(SearchGlobal searchGlobal, {bool checkForReferer = false}) {
9+
static Map<String, String> getFileCustomHeaders(Booru booru, {bool checkForReferer = false}) {
1110
// a few boorus doesn't work without a browser useragent
1211
Map<String,String> headers = {"user-agent": "Mozilla/5.0 (Linux x86_64; rv:86.0) Gecko/20100101 Firefox/86.0"};
1312
// some boorus require referer header
1413
if(checkForReferer) {
15-
Booru? curBooru = searchGlobal.selectedBooru.value;
16-
switch (curBooru.type) {
14+
switch (booru.type) {
1715
case 'World':
18-
if(curBooru.baseURL!.contains('rule34.xyz')) {
16+
if(booru.baseURL!.contains('rule34.xyz')) {
1917
headers["referer"] = "https://rule34xyz.b-cdn.net";
20-
} else if(curBooru.baseURL!.contains('rule34.world')) {
18+
} else if(booru.baseURL!.contains('rule34.world')) {
2119
headers["referer"] = "https://rule34storage.b-cdn.net";
2220
}
2321
break;

lib/widgets/CachedThumbBetter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class _CachedThumbBetterState extends State<CachedThumbBetter> {
6666
_dioCancelToken = CancelToken();
6767
DioLoader newClient = DioLoader(
6868
isMain ? thumbURL : widget.booruItem.thumbnailURL,
69-
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
69+
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
7070
cancelToken: _dioCancelToken,
7171
onProgress: _onBytesAdded,
7272
onEvent: _onEvent,

lib/widgets/MediaViewerBetter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class _MediaViewerBetterState extends State<MediaViewerBetter> {
6464
_dioCancelToken = CancelToken();
6565
client = DioLoader(
6666
imageURL,
67-
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
67+
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
6868
cancelToken: _dioCancelToken,
6969
onProgress: _onBytesAdded,
7070
onEvent: _onEvent,

lib/widgets/VideoApp.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class _VideoAppState extends State<VideoApp> {
9898
_cancelToken = CancelToken();
9999
client = DioLoader(
100100
widget.booruItem.fileURL,
101-
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
101+
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
102102
cancelToken: _cancelToken,
103103
onProgress: _onBytesAdded,
104104
onEvent: _onEvent,
@@ -127,7 +127,7 @@ class _VideoAppState extends State<VideoApp> {
127127
_sizeCancelToken = CancelToken();
128128
sizeClient = DioLoader(
129129
widget.booruItem.fileURL,
130-
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
130+
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
131131
cancelToken: _sizeCancelToken,
132132
onEvent: _onEvent,
133133
);
@@ -372,7 +372,7 @@ class _VideoAppState extends State<VideoApp> {
372372
videoController = VideoPlayerController.network(
373373
widget.booruItem.fileURL,
374374
videoPlayerOptions: Platform.isAndroid ? VideoPlayerOptions(mixWithOthers: true) : null,
375-
httpHeaders: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
375+
httpHeaders: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
376376
);
377377
}
378378
// mixWithOthers: true, allows to not interrupt audio sources from other apps

lib/widgets/VideoAppDesktop.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class _VideoAppDesktopState extends State<VideoAppDesktop> {
110110
_cancelToken = CancelToken();
111111
client = DioLoader(
112112
widget.booruItem.fileURL,
113-
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
113+
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
114114
cancelToken: _cancelToken,
115115
onProgress: _onBytesAdded,
116116
onEvent: _onEvent,
@@ -139,7 +139,7 @@ class _VideoAppDesktopState extends State<VideoAppDesktop> {
139139
_sizeCancelToken = CancelToken();
140140
sizeClient = DioLoader(
141141
widget.booruItem.fileURL,
142-
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
142+
headers: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
143143
cancelToken: _sizeCancelToken,
144144
onEvent: _onEvent,
145145
);
@@ -357,7 +357,7 @@ class _VideoAppDesktopState extends State<VideoAppDesktop> {
357357
// print('uri: ${widget.booruItem.fileURL}');
358358
media = Media.network(
359359
widget.booruItem.fileURL,
360-
extras: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
360+
extras: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
361361
startTime: Duration(milliseconds: 50),
362362
);
363363
}
@@ -382,14 +382,14 @@ class _VideoAppDesktopState extends State<VideoAppDesktop> {
382382
// print('uri: ${widget.booruItem.fileURL}');
383383
media = Media.network(
384384
widget.booruItem.fileURL,
385-
extras: ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: true),
385+
extras: ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: true),
386386
startTime: Duration(milliseconds: 50),
387387
);
388388
}
389389
isLoaded = true;
390390

391391
videoController = Player(id: widget.index);
392-
videoController!.setUserAgent(ViewUtils.getFileCustomHeaders(widget.searchGlobal, checkForReferer: false).entries.first.value);
392+
videoController!.setUserAgent(ViewUtils.getFileCustomHeaders(widget.searchGlobal.selectedBooru.value, checkForReferer: false).entries.first.value);
393393
videoController!.setVolume(viewerHandler.videoVolume);
394394
// videoController!.open(
395395
// media!,

0 commit comments

Comments
 (0)