@@ -2,56 +2,56 @@ import Foundation
2
2
import HTTPTypes
3
3
4
4
#if canImport(FoundationNetworking)
5
- import FoundationNetworking
5
+ import FoundationNetworking
6
6
#endif
7
7
8
8
#if !os(WASI)
9
9
10
- extension URLSessionTask {
10
+ extension URLSessionTask {
11
11
/// The original HTTP request this task was created with.
12
12
public var originalHTTPRequest : HTTPRequest ? {
13
- self . originalRequest? . httpRequest
13
+ self . originalRequest? . httpRequest
14
14
}
15
15
16
16
/// The current HTTP request -- may differ from the `originalHTTPRequest` due to HTTP redirection.
17
17
public var currentHTTPRequest : HTTPRequest ? {
18
- self . currentRequest? . httpRequest
18
+ self . currentRequest? . httpRequest
19
19
}
20
20
21
21
/// The HTTP response received from the server.
22
22
public var httpResponse : HTTPResponse ? {
23
- ( self . response as? HTTPURLResponse ) ? . httpResponse
23
+ ( self . response as? HTTPURLResponse ) ? . httpResponse
24
24
}
25
- }
25
+ }
26
26
27
- private enum HTTPTypeConversionError : Error {
27
+ private enum HTTPTypeConversionError : Error {
28
28
case failedToConvertHTTPRequestToURLRequest
29
29
case failedToConvertURLResponseToHTTPResponse
30
- }
30
+ }
31
31
32
32
#endif
33
33
34
34
#if canImport(FoundationNetworking) && compiler(<6)
35
35
36
- @available ( macOS 12 . 0 , iOS 15 . 0 , watchOS 8 . 0 , tvOS 15 . 0 , * )
37
- extension URLSession {
36
+ @available ( macOS 12 . 0 , iOS 15 . 0 , watchOS 8 . 0 , tvOS 15 . 0 , * )
37
+ extension URLSession {
38
38
/// Convenience method to load data using an `HTTPRequest`; creates and resumes a `URLSessionDataTask` internally.
39
39
///
40
40
/// - Parameter request: The `HTTPRequest` for which to load data.
41
41
/// - Parameter delegate: Task-specific delegate.
42
42
/// - Returns: Data and response.
43
43
public func data(
44
- for request: HTTPRequest ,
45
- delegate: ( any URLSessionTaskDelegate ) ? = nil
44
+ for request: HTTPRequest ,
45
+ delegate: ( any URLSessionTaskDelegate ) ? = nil
46
46
) async throws -> ( Data , HTTPResponse ) {
47
- guard let urlRequest = URLRequest ( httpRequest: request) else {
48
- throw HTTPTypeConversionError . failedToConvertHTTPRequestToURLRequest
49
- }
50
- let ( data, urlResponse) = try await self . data ( for: urlRequest, delegate: delegate)
51
- guard let response = ( urlResponse as? HTTPURLResponse ) ? . httpResponse else {
52
- throw HTTPTypeConversionError . failedToConvertURLResponseToHTTPResponse
53
- }
54
- return ( data, response)
47
+ guard let urlRequest = URLRequest ( httpRequest: request) else {
48
+ throw HTTPTypeConversionError . failedToConvertHTTPRequestToURLRequest
49
+ }
50
+ let ( data, urlResponse) = try await self . data ( for: urlRequest, delegate: delegate)
51
+ guard let response = ( urlResponse as? HTTPURLResponse ) ? . httpResponse else {
52
+ throw HTTPTypeConversionError . failedToConvertURLResponseToHTTPResponse
53
+ }
54
+ return ( data, response)
55
55
}
56
56
57
57
/// Convenience method to upload data using an `HTTPRequest`, creates and resumes a `URLSessionUploadTask` internally.
@@ -61,53 +61,56 @@ extension URLSession {
61
61
/// - Parameter delegate: Task-specific delegate.
62
62
/// - Returns: Data and response.
63
63
public func upload(
64
- for request: HTTPRequest ,
65
- from bodyData: Data ,
66
- delegate: ( any URLSessionTaskDelegate ) ? = nil
64
+ for request: HTTPRequest ,
65
+ from bodyData: Data ,
66
+ delegate: ( any URLSessionTaskDelegate ) ? = nil
67
67
) async throws -> ( Data , HTTPResponse ) {
68
- guard let urlRequest = URLRequest ( httpRequest: request) else {
69
- throw HTTPTypeConversionError . failedToConvertHTTPRequestToURLRequest
70
- }
71
- let ( data, urlResponse) = try await self . upload ( for: urlRequest, from: bodyData, delegate: delegate)
72
- guard let response = ( urlResponse as? HTTPURLResponse ) ? . httpResponse else {
73
- throw HTTPTypeConversionError . failedToConvertURLResponseToHTTPResponse
74
- }
75
- return ( data, response)
68
+ guard let urlRequest = URLRequest ( httpRequest: request) else {
69
+ throw HTTPTypeConversionError . failedToConvertHTTPRequestToURLRequest
70
+ }
71
+ let ( data, urlResponse) = try await self . upload (
72
+ for: urlRequest, from: bodyData, delegate: delegate)
73
+ guard let response = ( urlResponse as? HTTPURLResponse ) ? . httpResponse else {
74
+ throw HTTPTypeConversionError . failedToConvertURLResponseToHTTPResponse
75
+ }
76
+ return ( data, response)
76
77
}
77
- }
78
+ }
78
79
79
- @available ( macOS 10 . 15 , iOS 13 . 0 , watchOS 6 . 0 , tvOS 13 . 0 , * )
80
- extension URLSession {
80
+ @available ( macOS 10 . 15 , iOS 13 . 0 , watchOS 6 . 0 , tvOS 13 . 0 , * )
81
+ extension URLSession {
81
82
/// Convenience method to load data using an `HTTPRequest`; creates and resumes a `URLSessionDataTask` internally.
82
83
///
83
84
/// - Parameter request: The `HTTPRequest` for which to load data.
84
85
/// - Returns: Data and response.
85
86
public func data( for request: HTTPRequest ) async throws -> ( Data , HTTPResponse ) {
86
- guard let urlRequest = URLRequest ( httpRequest: request) else {
87
- throw HTTPTypeConversionError . failedToConvertHTTPRequestToURLRequest
88
- }
89
- let ( data, urlResponse) = try await self . data ( for: urlRequest)
90
- guard let response = ( urlResponse as? HTTPURLResponse ) ? . httpResponse else {
91
- throw HTTPTypeConversionError . failedToConvertURLResponseToHTTPResponse
92
- }
93
- return ( data, response)
87
+ guard let urlRequest = URLRequest ( httpRequest: request) else {
88
+ throw HTTPTypeConversionError . failedToConvertHTTPRequestToURLRequest
89
+ }
90
+ let ( data, urlResponse) = try await self . data ( for: urlRequest)
91
+ guard let response = ( urlResponse as? HTTPURLResponse ) ? . httpResponse else {
92
+ throw HTTPTypeConversionError . failedToConvertURLResponseToHTTPResponse
93
+ }
94
+ return ( data, response)
94
95
}
95
96
96
97
/// Convenience method to upload data using an `HTTPRequest`, creates and resumes a `URLSessionUploadTask` internally.
97
98
///
98
99
/// - Parameter request: The `HTTPRequest` for which to upload data.
99
100
/// - Parameter bodyData: Data to upload.
100
101
/// - Returns: Data and response.
101
- public func upload( for request: HTTPRequest , from bodyData: Data ) async throws -> ( Data , HTTPResponse ) {
102
- guard let urlRequest = URLRequest ( httpRequest: request) else {
103
- throw HTTPTypeConversionError . failedToConvertHTTPRequestToURLRequest
104
- }
105
- let ( data, urlResponse) = try await self . upload ( for: urlRequest, from: bodyData)
106
- guard let response = ( urlResponse as? HTTPURLResponse ) ? . httpResponse else {
107
- throw HTTPTypeConversionError . failedToConvertURLResponseToHTTPResponse
108
- }
109
- return ( data, response)
102
+ public func upload( for request: HTTPRequest , from bodyData: Data ) async throws -> (
103
+ Data , HTTPResponse
104
+ ) {
105
+ guard let urlRequest = URLRequest ( httpRequest: request) else {
106
+ throw HTTPTypeConversionError . failedToConvertHTTPRequestToURLRequest
107
+ }
108
+ let ( data, urlResponse) = try await self . upload ( for: urlRequest, from: bodyData)
109
+ guard let response = ( urlResponse as? HTTPURLResponse ) ? . httpResponse else {
110
+ throw HTTPTypeConversionError . failedToConvertURLResponseToHTTPResponse
111
+ }
112
+ return ( data, response)
110
113
}
111
- }
114
+ }
112
115
113
116
#endif
0 commit comments