@@ -7,6 +7,26 @@ import Foundation
77
88
99class qBitRequest {
10+ static private var basicAuth : Server . BasicAuth ?
11+
12+ static func setBasicAuth( auth: Server . BasicAuth ? ) {
13+ self . basicAuth = auth
14+ }
15+
16+ private static func getSession( ) -> URLSession {
17+ let configuration = URLSessionConfiguration . default
18+
19+ if let basicAuth = qBitRequest. basicAuth {
20+ // Set the auth header
21+ configuration. httpAdditionalHeaders = [
22+ " Authorization " : " Basic \( basicAuth. getAuthString ( ) ) "
23+ ]
24+ }
25+
26+ // Return a new session with this configuration
27+ return URLSession ( configuration: configuration)
28+ }
29+
1030 static func prepareURLRequest( path: String , queryItems: [ URLQueryItem ] ) -> URLRequest {
1131 let cookie = qBittorrent. getCookie ( )
1232 let url = qBittorrent. getURL ( )
@@ -51,7 +71,7 @@ class qBitRequest {
5171 }
5272
5373 static func requestTorrentListJSON( request: URLRequest , completionHandler: @escaping ( [ Torrent ] ) -> Void ) {
54- URLSession . shared . dataTask ( with: request) {
74+ self . getSession ( ) . dataTask ( with: request) {
5575 data, response, error in
5676 if let data = data {
5777 do {
@@ -65,13 +85,13 @@ class qBitRequest {
6585 }
6686
6787 static func requestUniversal( request: URLRequest ) {
68- URLSession . shared . dataTask ( with: request) {
88+ self . getSession ( ) . dataTask ( with: request) {
6989 data, response, error in
7090 } . resume ( )
7191 }
7292
7393 static func requestTorrentManagement( request: URLRequest , statusCode: @escaping ( Int ? ) -> Void ) {
74- URLSession . shared . dataTask ( with: request) {
94+ self . getSession ( ) . dataTask ( with: request) {
7595 data, response, error in
7696 if let response = response as? HTTPURLResponse {
7797 statusCode ( response. statusCode)
@@ -82,7 +102,7 @@ class qBitRequest {
82102 }
83103
84104 static func requestPreferencesJSON( request: URLRequest , completionHandler: @escaping ( qBitPreferences ) -> Void ) {
85- URLSession . shared . dataTask ( with: request) {
105+ self . getSession ( ) . dataTask ( with: request) {
86106 data, response, error in
87107 if let data = data {
88108 do {
@@ -96,7 +116,7 @@ class qBitRequest {
96116 }
97117
98118 static func requestSearchStart( request: URLRequest , completionHandler: @escaping ( SearchStartResult ) -> Void ) {
99- URLSession . shared . dataTask ( with: request) {
119+ self . getSession ( ) . dataTask ( with: request) {
100120 data, response, error in
101121 if let data = data {
102122 do {
@@ -110,7 +130,7 @@ class qBitRequest {
110130 }
111131
112132 static func requestSearchResults( request: URLRequest , completionHandler: @escaping ( SearchResponse ) -> Void ) {
113- URLSession . shared . dataTask ( with: request) {
133+ self . getSession ( ) . dataTask ( with: request) {
114134 data, response, error in
115135 if let data = data {
116136 do {
@@ -124,7 +144,7 @@ class qBitRequest {
124144 }
125145
126146 static func requestSearchPlugins( request: URLRequest , completionHandler: @escaping ( [ SearchPlugin ] ) -> Void ) {
127- URLSession . shared . dataTask ( with: request) {
147+ self . getSession ( ) . dataTask ( with: request) {
128148 data, response, error in
129149 if let data = data {
130150 do {
@@ -138,7 +158,7 @@ class qBitRequest {
138158 }
139159
140160 static func requestGlobalTransferInfo( request: URLRequest , completionHandler: @escaping ( GlobalTransferInfo ) -> Void ) {
141- URLSession . shared . dataTask ( with: request) {
161+ self . getSession ( ) . dataTask ( with: request) {
142162 data, response, error in
143163 if let data = data {
144164 do {
@@ -152,7 +172,7 @@ class qBitRequest {
152172 }
153173
154174 static func requestMainData( request: URLRequest , completionHandler: @escaping ( MainData ) -> Void ) {
155- URLSession . shared . dataTask ( with: request) {
175+ self . getSession ( ) . dataTask ( with: request) {
156176 data, response, error in
157177 if let data = data {
158178 do {
@@ -167,7 +187,7 @@ class qBitRequest {
167187
168188
169189 static func requestPeersJSON( request: URLRequest , completionHandler: @escaping ( Peers ) -> Void ) {
170- URLSession . shared . dataTask ( with: request) {
190+ self . getSession ( ) . dataTask ( with: request) {
171191 data, response, error in
172192 if let data = data {
173193 do {
@@ -181,7 +201,7 @@ class qBitRequest {
181201 }
182202
183203 static func requestTrackersJSON( request: URLRequest , completionHandler: @escaping ( [ Tracker ] ) -> Void ) {
184- URLSession . shared . dataTask ( with: request) {
204+ self . getSession ( ) . dataTask ( with: request) {
185205 data, response, error in
186206 if let data = data {
187207 do {
@@ -195,7 +215,7 @@ class qBitRequest {
195215 }
196216
197217 static func requestFilesJSON( request: URLRequest , completionHandler: @escaping ( [ File ] ) -> Void ) {
198- URLSession . shared . dataTask ( with: request) {
218+ self . getSession ( ) . dataTask ( with: request) {
199219 data, response, error in
200220 if let data = data {
201221 do {
@@ -209,7 +229,7 @@ class qBitRequest {
209229 }
210230
211231 static func requestCategoriesJSON( request: URLRequest , completionHandler: @escaping ( [ String : Category ] ) -> Void ) {
212- URLSession . shared . dataTask ( with: request) {
232+ self . getSession ( ) . dataTask ( with: request) {
213233 data, response, error in
214234 if let data = data {
215235 do {
@@ -223,7 +243,7 @@ class qBitRequest {
223243 }
224244
225245 static func requestVersion( request: URLRequest , completionHandler: @escaping ( Version ) -> Void ) {
226- URLSession . shared . dataTask ( with: request) {
246+ self . getSession ( ) . dataTask ( with: request) {
227247 data, response, error in
228248 if let data = data, let versionData = String ( data: data, encoding: . utf8) {
229249 let versionString = versionData. filter { " 0123456789. " . contains ( $0) }
@@ -237,7 +257,7 @@ class qBitRequest {
237257 }
238258
239259 static func requestTagsJSON( request: URLRequest , completionHandler: @escaping ( [ String ] ) -> Void ) {
240- URLSession . shared . dataTask ( with: request) {
260+ self . getSession ( ) . dataTask ( with: request) {
241261 data, response, error in
242262 if let data = data {
243263 do {
@@ -251,7 +271,7 @@ class qBitRequest {
251271 }
252272
253273 static func requestRSSFeedJSON( request: URLRequest , completion: @escaping ( RSSNode ) -> Void ) {
254- URLSession . shared . dataTask ( with: request) {
274+ self . getSession ( ) . dataTask ( with: request) {
255275 data, response, error in
256276
257277 if let data = data {
0 commit comments