From a99cf4d4c3fee90dfe223cc394d9ed29b44781cd Mon Sep 17 00:00:00 2001 From: Emanuele Stefanini Date: Sun, 16 Apr 2023 14:17:35 +0200 Subject: [PATCH 1/3] added basic authentication --- lib/src/transmission.dart | 30 ++++++++++++++++++++++-------- pubspec.lock | 37 +++++++++++++++++++++++++++---------- pubspec.yaml | 2 ++ 3 files changed, 51 insertions(+), 18 deletions(-) diff --git a/lib/src/transmission.dart b/lib/src/transmission.dart index 0d6e322..4b8852e 100644 --- a/lib/src/transmission.dart +++ b/lib/src/transmission.dart @@ -1,6 +1,10 @@ +import 'dart:convert'; + import 'package:dio/dio.dart'; const csrfProtectionHeader = 'X-Transmission-Session-Id'; +const basicAuthentication = 'Authorization'; +const proxyBasicAuthentication = 'Proxy-Authorization'; const methodAddTorrent = 'torrent-add'; const methodRemoveTorrent = 'torrent-remove'; @@ -104,15 +108,25 @@ class Transmission { /// [proxyUrl] url use as a proxy, urls will be added at the end before request, default to null /// [enableLog] boolean to show http logs or not factory Transmission( - {String? baseUrl, String? proxyUrl, bool enableLog = false}) { + {String? baseUrl, + String? proxyUrl, + bool enableLog = false, + String? username, + String? password}) { baseUrl ??= 'http://localhost:9091/transmission/rpc'; - return Transmission._( - Dio(BaseOptions( - baseUrl: proxyUrl == null - ? baseUrl - : proxyUrl + Uri.encodeComponent(baseUrl))), - proxyUrl != null, - enableLog); + Dio client = Dio(BaseOptions( + baseUrl: proxyUrl == null + ? baseUrl + : proxyUrl + Uri.encodeComponent(baseUrl))); + if (username != null && password != null) { + String auth = base64.encode(utf8.encode('$username:$password')); + if (proxyUrl != null) { + client.options.headers[proxyBasicAuthentication] = 'Basic $auth'; + } else { + client.options.headers[basicAuthentication] = 'Basic $auth'; + } + } + return Transmission._(client, proxyUrl != null, enableLog); } /// close all connexions diff --git a/pubspec.lock b/pubspec.lock index 67ce930..51e4ce0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,64 +5,81 @@ packages: dependency: transitive description: name: charcode - url: "https://pub.dartlang.org" + sha256: "8e36feea6de5ea69f2199f29cf42a450a855738c498b57c0b980e2d3cca9c362" + url: "https://pub.dev" source: hosted version: "1.2.0" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "6d4193120997ecfd09acf0e313f13dc122b119e5eca87ef57a7d065ec9183762" + url: "https://pub.dev" source: hosted version: "1.15.0" + crypto: + dependency: "direct main" + description: + name: crypto + sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + url: "https://pub.dev" + source: hosted + version: "3.0.2" dio: dependency: "direct main" description: name: dio - url: "https://pub.dartlang.org" + sha256: bf173c8bc66b776e3c2892b6ac56ac1a5ad73d21dd06d337f9fe656f63612947 + url: "https://pub.dev" source: hosted version: "4.0.0" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: e362d639ba3bc07d5a71faebb98cde68c05bfbcfbbb444b60b6f60bb67719185 + url: "https://pub.dev" source: hosted version: "4.0.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "2ad4cddff7f5cc0e2d13069f2a3f7a73ca18f66abd6f5ecf215219cdb3638edb" + url: "https://pub.dev" source: hosted version: "1.8.0" source_span: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: d5f89a9e52b36240a80282b3dc0667dd36e53459717bb17b8fb102d30496606a + url: "https://pub.dev" source: hosted version: "1.8.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: dd11571b8a03f7cadcf91ec26a77e02bfbd6bbba2a512924d3116646b4198fc4 + url: "https://pub.dev" source: hosted version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a88162591b02c1f3a3db3af8ce1ea2b374bd75a7bb8d5e353bcfbdc79d719830 + url: "https://pub.dev" source: hosted version: "1.2.0" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: "53bdf7e979cfbf3e28987552fd72f637e63f3c8724c9e56d9246942dc2fa36ee" + url: "https://pub.dev" source: hosted version: "1.3.0" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=2.14.0 <3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index f298269..f1fa857 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,6 +7,8 @@ environment: sdk: '>=2.12.0 <3.0.0' dependencies: + crypto: ^3.0.2 dio: '>=4.0.0 <5.0.0' + dev_dependencies: From c7473dd0ab0e3584480f87b7b64d9e8dc48eefe1 Mon Sep 17 00:00:00 2001 From: Emanuele Stefanini Date: Sun, 16 Apr 2023 14:38:07 +0200 Subject: [PATCH 2/3] testing configuration --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index bb431f0..a5abd90 100644 --- a/.gitignore +++ b/.gitignore @@ -73,3 +73,6 @@ build/ !**/ios/**/default.pbxuser !**/ios/**/default.perspectivev3 !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages + +# VSCODE related +.vscode/launch.json From 4c924e6e0d952c85235a2008a657c16502a7b3a0 Mon Sep 17 00:00:00 2001 From: Emanuele Stefanini Date: Sun, 16 Apr 2023 14:47:49 +0200 Subject: [PATCH 3/3] removed useless dependences --- pubspec.lock | 10 +--------- pubspec.yaml | 1 - 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 51e4ce0..af76a8e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -17,14 +17,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.15.0" - crypto: - dependency: "direct main" - description: - name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 - url: "https://pub.dev" - source: hosted - version: "3.0.2" dio: dependency: "direct main" description: @@ -82,4 +74,4 @@ packages: source: hosted version: "1.3.0" sdks: - dart: ">=2.14.0 <3.0.0" + dart: ">=2.12.0 <3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index f1fa857..832299a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,7 +7,6 @@ environment: sdk: '>=2.12.0 <3.0.0' dependencies: - crypto: ^3.0.2 dio: '>=4.0.0 <5.0.0'