@@ -18,38 +18,42 @@ package struct HTTPRequest: Sendable {
18
18
package var query : [ URLQueryItem ]
19
19
package var headers : HTTPFields
20
20
package var body : Data ?
21
+ package var timeoutInterval : TimeInterval
21
22
22
23
package init (
23
24
url: URL ,
24
25
method: HTTPTypes . HTTPRequest . Method ,
25
26
query: [ URLQueryItem ] = [ ] ,
26
27
headers: HTTPFields = [ : ] ,
27
- body: Data ? = nil
28
+ body: Data ? = nil ,
29
+ timeoutInterval: TimeInterval = 60
28
30
) {
29
31
self . url = url
30
32
self . method = method
31
33
self . query = query
32
34
self . headers = headers
33
35
self . body = body
36
+ self . timeoutInterval = timeoutInterval
34
37
}
35
38
36
39
package init ? (
37
40
urlString: String ,
38
41
method: HTTPTypes . HTTPRequest . Method ,
39
42
query: [ URLQueryItem ] = [ ] ,
40
43
headers: HTTPFields = [ : ] ,
41
- body: Data ?
44
+ body: Data ? = nil ,
45
+ timeoutInterval: TimeInterval = 60
42
46
) {
43
47
guard let url = URL ( string: urlString) else { return nil }
44
- self . init ( url: url, method: method, query: query, headers: headers, body: body)
48
+ self . init ( url: url, method: method, query: query, headers: headers, body: body, timeoutInterval : timeoutInterval )
45
49
}
46
50
47
51
package var urlRequest : URLRequest {
48
- var urlRequest = URLRequest ( url: query. isEmpty ? url : url. appendingQueryItems ( query) )
52
+ var urlRequest = URLRequest ( url: query. isEmpty ? url : url. appendingQueryItems ( query) , timeoutInterval : timeoutInterval )
49
53
urlRequest. httpMethod = method. rawValue
50
54
urlRequest. allHTTPHeaderFields = . init( headers. map { ( $0. name. rawName, $0. value) } ) { $1 }
51
55
urlRequest. httpBody = body
52
-
56
+
53
57
if urlRequest. httpBody != nil , urlRequest. value ( forHTTPHeaderField: " Content-Type " ) == nil {
54
58
urlRequest. setValue ( " application/json " , forHTTPHeaderField: " Content-Type " )
55
59
}
0 commit comments