Add user agent data for image upload/download requests

This commit is contained in:
Hank Grabowski 2024-06-20 18:24:14 -04:00
parent f45ace3567
commit feb799dd20
6 changed files with 47 additions and 76 deletions

View file

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
import 'package:provider/provider.dart';
import '../globals.dart';
import '../services/auth_service.dart';
class LoginAwareCachedNetworkImage extends StatelessWidget {
@ -22,12 +23,12 @@ class LoginAwareCachedNetworkImage extends StatelessWidget {
Widget build(BuildContext context) {
final profile = context.watch<AccountsService>().currentProfile;
Map<String, String>? headers;
Map<String, String> headers = {'user-agent': userAgent};
try {
final imageServer = Uri.parse(imageUrl).host;
if (imageServer == profile.serverName) {
headers = {'Authorization': profile.credentials.authHeaderValue};
headers['Authorization'] = profile.credentials.authHeaderValue;
}
} catch (e) {
_logger.severe('Error Parsing ImageURL: $e');

View file

@ -717,6 +717,7 @@ class RemoteFileClient extends FriendicaClient {
url,
headers: {
'Authorization': _profile.credentials.authHeaderValue,
'user-agent': userAgent,
},
);
@ -742,6 +743,7 @@ class RemoteFileClient extends FriendicaClient {
final postUri = Uri.parse('https://$serverName/api/friendica/photo/create');
final request = http.MultipartRequest('POST', postUri);
request.headers['Authorization'] = _profile.credentials.authHeaderValue;
request.headers['user-agent'] = userAgent;
if (usePhpDebugging) {
request.headers['Cookie'] = 'XDEBUG_SESSION=PHPSTORM;path=/';
}

View file

@ -19,10 +19,10 @@ enum _RequestType {
const _expireDuration = Duration(seconds: 2);
class _UserAgentClient extends http.BaseClient {
http.Client _inner;
class RelaticaUserAgentHttpClient extends http.BaseClient {
final http.Client _inner;
_UserAgentClient() : _inner = http.Client();
RelaticaUserAgentHttpClient() : _inner = http.Client();
@override
Future<http.StreamedResponse> send(http.BaseRequest request) {
@ -124,7 +124,7 @@ class _ExpiringRequestCache {
print('Returning cached response for $type => $url');
response = _responses[requestStub]?.response ?? http.Response('', 555);
} else {
final request = _UserAgentClient().get(
final request = RelaticaUserAgentHttpClient().get(
url,
headers: headers,
);
@ -196,7 +196,7 @@ FutureResult<String, ExecError> postUrl(
requestHeaders['Cookie'] = 'XDEBUG_SESSION=PHPSTORM;path=/';
}
try {
final request = _UserAgentClient().post(
final request = RelaticaUserAgentHttpClient().post(
url,
headers: requestHeaders,
body: jsonEncode(body),
@ -227,7 +227,7 @@ FutureResult<String, ExecError> putUrl(
}) async {
_logger.fine('PUT: $url \n Body: $body');
try {
final request = _UserAgentClient().put(
final request = RelaticaUserAgentHttpClient().put(
url,
headers: headers,
body: jsonEncode(body),
@ -258,7 +258,7 @@ FutureResult<String, ExecError> deleteUrl(
}) async {
_logger.fine('DELETE: $url');
try {
final request = _UserAgentClient().delete(
final request = RelaticaUserAgentHttpClient().delete(
url,
headers: headers,
body: jsonEncode(body),

View file

@ -1,11 +1,11 @@
import 'dart:convert';
import 'package:html/parser.dart';
import 'package:http/http.dart' as http;
import 'package:result_monad/result_monad.dart';
import '../models/exec_error.dart';
import '../models/link_preview_data.dart';
import 'network_utils.dart';
const ogTitleKey = 'og:title';
const ogDescriptionKey = 'og:description';
@ -35,7 +35,7 @@ FutureResult<LinkPreviewData, ExecError> getLinkPreview(String url) async {
FutureResult<List<MapEntry<String, String>>, dynamic> _getOpenGraphData(
String url) async {
return runCatchingAsync<List<MapEntry<String, String>>>(() async {
final response = await http.get(Uri.parse(url));
final response = await RelaticaUserAgentHttpClient().get(Uri.parse(url));
if (response.statusCode != 200) {
return buildErrorResult(
type: ErrorType.serverError,

View file

@ -181,10 +181,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
url: "https://pub.dev"
source: hosted
version: "1.18.0"
version: "1.17.2"
color_blindness:
dependency: "direct main"
description:
@ -309,10 +309,10 @@ packages:
dependency: transitive
description:
name: ffi
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.0"
file:
dependency: transitive
description:
@ -733,30 +733,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.8.1"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
url: "https://pub.dev"
source: hosted
version: "10.0.0"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
url: "https://pub.dev"
source: hosted
version: "2.0.1"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
url: "https://pub.dev"
source: hosted
version: "2.0.1"
lints:
dependency: transitive
description:
@ -785,18 +761,18 @@ packages:
dependency: transitive
description:
name: matcher
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
url: "https://pub.dev"
source: hosted
version: "0.12.16+1"
version: "0.12.16"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
url: "https://pub.dev"
source: hosted
version: "0.8.0"
version: "0.5.0"
media_kit:
dependency: "direct main"
description:
@ -873,10 +849,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
url: "https://pub.dev"
source: hosted
version: "1.11.0"
version: "1.9.1"
mime:
dependency: transitive
description:
@ -953,26 +929,26 @@ packages:
dependency: "direct main"
description:
name: package_info_plus
sha256: b93d8b4d624b4ea19b0a5a208b2d6eff06004bc3ce74c06040b120eeadd00ce0
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
url: "https://pub.dev"
source: hosted
version: "8.0.0"
version: "4.2.0"
package_info_plus_platform_interface:
dependency: transitive
description:
name: package_info_plus_platform_interface
sha256: f49918f3433a3146047372f9d4f1f847511f2acd5cd030e1f44fe5a50036b70e
sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
url: "https://pub.dev"
source: hosted
version: "3.0.0"
version: "2.0.1"
path:
dependency: "direct main"
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.8.3"
path_parsing:
dependency: transitive
description:
@ -1303,18 +1279,18 @@ packages:
dependency: "direct main"
description:
name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
url: "https://pub.dev"
source: hosted
version: "1.11.1"
version: "1.11.0"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.1"
stream_transform:
dependency: transitive
description:
@ -1359,10 +1335,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
url: "https://pub.dev"
source: hosted
version: "0.6.1"
version: "0.6.0"
time_machine:
dependency: "direct main"
description:
@ -1547,14 +1523,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.17"
vm_service:
dependency: transitive
description:
name: vm_service
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
url: "https://pub.dev"
source: hosted
version: "13.0.0"
volume_controller:
dependency: transitive
description:
@ -1567,18 +1535,18 @@ packages:
dependency: transitive
description:
name: wakelock_plus
sha256: "14758533319a462ffb5aa3b7ddb198e59b29ac3b02da14173a1715d65d4e6e68"
sha256: f268ca2116db22e57577fb99d52515a24bdc1d570f12ac18bb762361d43b043d
url: "https://pub.dev"
source: hosted
version: "1.2.5"
version: "1.1.4"
wakelock_plus_platform_interface:
dependency: transitive
description:
name: wakelock_plus_platform_interface
sha256: "422d1cdbb448079a8a62a5a770b69baa489f8f7ca21aef47800c726d404f9d16"
sha256: "40fabed5da06caff0796dc638e1f07ee395fb18801fbff3255a2372db2d80385"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "1.1.0"
watcher:
dependency: transitive
description:
@ -1591,10 +1559,10 @@ packages:
dependency: transitive
description:
name: web
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
url: "https://pub.dev"
source: hosted
version: "0.5.1"
version: "0.1.4-beta"
web_socket_channel:
dependency: transitive
description:
@ -1607,10 +1575,10 @@ packages:
dependency: transitive
description:
name: win32
sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb"
sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574
url: "https://pub.dev"
source: hosted
version: "5.5.0"
version: "5.1.1"
win32_registry:
dependency: transitive
description:
@ -1652,5 +1620,5 @@ packages:
source: hosted
version: "3.1.2"
sdks:
dart: ">=3.3.0 <4.0.0"
flutter: ">=3.19.0"
dart: ">=3.1.0 <4.0.0"
flutter: ">=3.10.0"

View file

@ -38,7 +38,7 @@ dependencies:
network_to_file_image: ^4.0.1
objectbox: ^2.3.1
objectbox_flutter_libs: ^2.3.1
package_info_plus: ^8.0.0
package_info_plus: ^4.2.0
path: ^1.8.2
path_provider: ^2.0.11
provider: ^6.0.4