@@ -35,14 +35,11 @@ struct CoderClient: Client {
35
35
parameters: body,
36
36
headers: headers
37
37
) . serializingData ( ) . response
38
- guard let response = out. response else {
39
- throw ClientError . noResponse
40
- }
41
38
switch out. result {
42
39
case . success( let data) :
43
- return HTTPResponse ( resp: response, data: data, req: out. request)
44
- case . failure:
45
- throw ClientError . badResponse
40
+ return HTTPResponse ( resp: out . response! , data: data, req: out. request)
41
+ case . failure( let error ) :
42
+ throw ClientError . reqError ( error )
46
43
}
47
44
}
48
45
@@ -57,28 +54,26 @@ struct CoderClient: Client {
57
54
method: method,
58
55
headers: headers
59
56
) . serializingData ( ) . response
60
- guard let response = out. response else {
61
- throw ClientError . noResponse
62
- }
63
57
switch out. result {
64
58
case . success( let data) :
65
- return HTTPResponse ( resp: response, data: data, req: out. request)
66
- case . failure:
67
- throw ClientError . badResponse
59
+ return HTTPResponse ( resp: out . response! , data: data, req: out. request)
60
+ case . failure( let error ) :
61
+ throw ClientError . reqError ( error )
68
62
}
69
63
}
70
64
71
- func responseAsError( _ resp: HTTPResponse ) throws ( ClientError ) -> APIError {
65
+ func responseAsError( _ resp: HTTPResponse ) -> ClientError {
72
66
do {
73
67
let body = try CoderClient . decoder. decode ( Response . self, from: resp. data)
74
- return APIError (
68
+ let out = APIError (
75
69
response: body,
76
70
statusCode: resp. resp. statusCode,
77
71
method: resp. req? . httpMethod,
78
72
url: resp. req? . url
79
73
)
74
+ return ClientError . apiError ( out)
80
75
} catch {
81
- throw ClientError . badResponse
76
+ return ClientError . unexpectedResponse ( resp . data [ ... 1024 ] )
82
77
}
83
78
}
84
79
@@ -130,17 +125,17 @@ struct ValidationError: Decodable {
130
125
131
126
enum ClientError : Error {
132
127
case apiError( APIError )
133
- case badResponse
134
- case noResponse
128
+ case reqError ( AFError )
129
+ case unexpectedResponse ( Data )
135
130
136
131
var description : String {
137
132
switch self {
138
133
case . apiError( let error) :
139
134
return error. description
140
- case . badResponse :
141
- return " Bad response "
142
- case . noResponse :
143
- return " No response"
135
+ case . reqError ( let error ) :
136
+ return error . localizedDescription
137
+ case . unexpectedResponse ( let data ) :
138
+ return " Unexpected response: \( data ) "
144
139
}
145
140
}
146
141
}
0 commit comments