Skip to content

Commit d16aca3

Browse files
committed
Added STHTTPNetTask.statusCode and STHTTPNetTask.responseHeaders.
Deprecated STHTTPNetTaskErrorStatusCodeUserInfoKey.
1 parent 49607fe commit d16aca3

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

STNetTaskQueue/STHTTPNetTask.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ FOUNDATION_EXPORT NSString *const STHTTPNetTaskServerError;
1313
FOUNDATION_EXPORT NSString *const STHTTPNetTaskResponseParsedError;
1414

1515
// Error "userInfo" keys
16-
FOUNDATION_EXPORT NSString *const STHTTPNetTaskErrorStatusCodeUserInfoKey;
16+
FOUNDATION_EXPORT NSString *const STHTTPNetTaskErrorStatusCodeUserInfoKey; DEPRECATED_MSG_ATTRIBUTE("Use STHTTPNetTask.statusCode instead")
1717
FOUNDATION_EXPORT NSString *const STHTTPNetTaskErrorResponseDataUserInfoKey;
1818

1919
FOUNDATION_EXPORT NSString *STHTTPNetTaskRequestObjectDefaultSeparator;
@@ -97,6 +97,16 @@ typedef NS_ENUM(NSUInteger, STHTTPNetTaskResponseType) {
9797
*/
9898
@interface STHTTPNetTask : STNetTask<STHTTPNetTaskRequestObject>
9999

100+
/**
101+
HTTP status code.
102+
*/
103+
@property (atomic, assign, readonly) NSInteger statusCode;
104+
105+
/**
106+
HTTP headers of response.
107+
*/
108+
@property (atomic, strong, readonly) NSDictionary *responseHeaders;
109+
100110
/**
101111
HTTP method which should be used for the HTTP net task.
102112

STNetTaskQueue/STHTTPNetTask.m

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@
1515
NSString *const STHTTPNetTaskErrorResponseDataUserInfoKey = @"responseData";
1616
NSString *STHTTPNetTaskRequestObjectDefaultSeparator = @"_";
1717

18+
@interface STHTTPNetTask ()
19+
20+
@property (atomic, assign) NSInteger statusCode;
21+
@property (atomic, strong) NSDictionary *responseHeaders;
22+
23+
@end
24+
1825
@implementation STHTTPNetTask
1926

2027
- (STHTTPNetTaskMethod)method

STNetTaskQueue/STHTTPNetTaskQueueHandler.m

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@
5353
return [NSString stringWithString:encodedString];
5454
}
5555

56+
@interface STHTTPNetTask (STInternal)
57+
58+
@property (atomic, assign) NSInteger statusCode;
59+
@property (atomic, strong) NSDictionary *responseHeaders;
60+
61+
@end
62+
5663
@class STHTTPNetTaskQueueHandlerOperation;
5764

5865
@interface NSURLSessionTask (STHTTPNetTaskQueueHandlerOperation)
@@ -197,6 +204,10 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didComp
197204

198205
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)task.response;
199206
NSData *data = [NSData dataWithData:_data];
207+
208+
_task.statusCode = httpResponse.statusCode;
209+
_task.responseHeaders = httpResponse.allHeaderFields;
210+
200211
if (httpResponse.statusCode >= 200 && httpResponse.statusCode < 300) {
201212
id responseObj = nil;
202213
NSError *error = nil;
@@ -228,10 +239,13 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didComp
228239
}
229240
else {
230241
if (!error) { // Response status code is not 20x
242+
#pragma GCC diagnostic push
243+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
231244
error = [NSError errorWithDomain:STHTTPNetTaskServerError
232245
code:0
233246
userInfo:@{ STHTTPNetTaskErrorStatusCodeUserInfoKey: @(httpResponse.statusCode),
234247
STHTTPNetTaskErrorResponseDataUserInfoKey: data }];
248+
#pragma GCC diagnostic pop
235249
[STNetTaskQueueLog log:@"\n%@", _task.description];
236250
}
237251
[_queue task:_task didFailWithError:error];

0 commit comments

Comments
 (0)