Skip to content

Commit 9712796

Browse files
Masanori ShibuyaMasanori Shibuya
authored andcommitted
initial commit
0 parents  commit 9712796

File tree

125 files changed

+17180
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+17180
-0
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
build/archives
2+
build/**/working
3+
xcuserdata
4+
Pods
5+
xcshareddata
6+
nowbuilding.lock
7+
Podfile.lock
8+
.DS_Store

Demo/StudyplusSDKDemo/AFNetworking/AFNetworking/AFHTTPSessionManager.h

Lines changed: 295 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 361 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,361 @@
1+
// AFHTTPSessionManager.m
2+
// Copyright (c) 2011–2016 Alamofire Software Foundation ( http://alamofire.org/ )
3+
//
4+
// Permission is hereby granted, free of charge, to any person obtaining a copy
5+
// of this software and associated documentation files (the "Software"), to deal
6+
// in the Software without restriction, including without limitation the rights
7+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8+
// copies of the Software, and to permit persons to whom the Software is
9+
// furnished to do so, subject to the following conditions:
10+
//
11+
// The above copyright notice and this permission notice shall be included in
12+
// all copies or substantial portions of the Software.
13+
//
14+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20+
// THE SOFTWARE.
21+
22+
#import "AFHTTPSessionManager.h"
23+
24+
#import "AFURLRequestSerialization.h"
25+
#import "AFURLResponseSerialization.h"
26+
27+
#import <Availability.h>
28+
#import <TargetConditionals.h>
29+
#import <Security/Security.h>
30+
31+
#import <netinet/in.h>
32+
#import <netinet6/in6.h>
33+
#import <arpa/inet.h>
34+
#import <ifaddrs.h>
35+
#import <netdb.h>
36+
37+
#if TARGET_OS_IOS || TARGET_OS_TV
38+
#import <UIKit/UIKit.h>
39+
#elif TARGET_OS_WATCH
40+
#import <WatchKit/WatchKit.h>
41+
#endif
42+
43+
@interface AFHTTPSessionManager ()
44+
@property (readwrite, nonatomic, strong) NSURL *baseURL;
45+
@end
46+
47+
@implementation AFHTTPSessionManager
48+
@dynamic responseSerializer;
49+
50+
+ (instancetype)manager {
51+
return [[[self class] alloc] initWithBaseURL:nil];
52+
}
53+
54+
- (instancetype)init {
55+
return [self initWithBaseURL:nil];
56+
}
57+
58+
- (instancetype)initWithBaseURL:(NSURL *)url {
59+
return [self initWithBaseURL:url sessionConfiguration:nil];
60+
}
61+
62+
- (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration {
63+
return [self initWithBaseURL:nil sessionConfiguration:configuration];
64+
}
65+
66+
- (instancetype)initWithBaseURL:(NSURL *)url
67+
sessionConfiguration:(NSURLSessionConfiguration *)configuration
68+
{
69+
self = [super initWithSessionConfiguration:configuration];
70+
if (!self) {
71+
return nil;
72+
}
73+
74+
// Ensure terminal slash for baseURL path, so that NSURL +URLWithString:relativeToURL: works as expected
75+
if ([[url path] length] > 0 && ![[url absoluteString] hasSuffix:@"/"]) {
76+
url = [url URLByAppendingPathComponent:@""];
77+
}
78+
79+
self.baseURL = url;
80+
81+
self.requestSerializer = [AFHTTPRequestSerializer serializer];
82+
self.responseSerializer = [AFJSONResponseSerializer serializer];
83+
84+
return self;
85+
}
86+
87+
#pragma mark -
88+
89+
- (void)setRequestSerializer:(AFHTTPRequestSerializer <AFURLRequestSerialization> *)requestSerializer {
90+
NSParameterAssert(requestSerializer);
91+
92+
_requestSerializer = requestSerializer;
93+
}
94+
95+
- (void)setResponseSerializer:(AFHTTPResponseSerializer <AFURLResponseSerialization> *)responseSerializer {
96+
NSParameterAssert(responseSerializer);
97+
98+
[super setResponseSerializer:responseSerializer];
99+
}
100+
101+
#pragma mark -
102+
103+
- (NSURLSessionDataTask *)GET:(NSString *)URLString
104+
parameters:(id)parameters
105+
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
106+
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
107+
{
108+
109+
return [self GET:URLString parameters:parameters progress:nil success:success failure:failure];
110+
}
111+
112+
- (NSURLSessionDataTask *)GET:(NSString *)URLString
113+
parameters:(id)parameters
114+
progress:(void (^)(NSProgress * _Nonnull))downloadProgress
115+
success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success
116+
failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure
117+
{
118+
119+
NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"GET"
120+
URLString:URLString
121+
parameters:parameters
122+
uploadProgress:nil
123+
downloadProgress:downloadProgress
124+
success:success
125+
failure:failure];
126+
127+
[dataTask resume];
128+
129+
return dataTask;
130+
}
131+
132+
- (NSURLSessionDataTask *)HEAD:(NSString *)URLString
133+
parameters:(id)parameters
134+
success:(void (^)(NSURLSessionDataTask *task))success
135+
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
136+
{
137+
NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"HEAD" URLString:URLString parameters:parameters uploadProgress:nil downloadProgress:nil success:^(NSURLSessionDataTask *task, __unused id responseObject) {
138+
if (success) {
139+
success(task);
140+
}
141+
} failure:failure];
142+
143+
[dataTask resume];
144+
145+
return dataTask;
146+
}
147+
148+
- (NSURLSessionDataTask *)POST:(NSString *)URLString
149+
parameters:(id)parameters
150+
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
151+
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
152+
{
153+
return [self POST:URLString parameters:parameters progress:nil success:success failure:failure];
154+
}
155+
156+
- (NSURLSessionDataTask *)POST:(NSString *)URLString
157+
parameters:(id)parameters
158+
progress:(void (^)(NSProgress * _Nonnull))uploadProgress
159+
success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success
160+
failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure
161+
{
162+
NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"POST" URLString:URLString parameters:parameters uploadProgress:uploadProgress downloadProgress:nil success:success failure:failure];
163+
164+
[dataTask resume];
165+
166+
return dataTask;
167+
}
168+
169+
- (NSURLSessionDataTask *)POST:(NSString *)URLString
170+
parameters:(nullable id)parameters
171+
constructingBodyWithBlock:(nullable void (^)(id<AFMultipartFormData> _Nonnull))block
172+
success:(nullable void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success
173+
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure
174+
{
175+
return [self POST:URLString parameters:parameters constructingBodyWithBlock:block progress:nil success:success failure:failure];
176+
}
177+
178+
- (NSURLSessionDataTask *)POST:(NSString *)URLString
179+
parameters:(id)parameters
180+
constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block
181+
progress:(nullable void (^)(NSProgress * _Nonnull))uploadProgress
182+
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
183+
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
184+
{
185+
NSError *serializationError = nil;
186+
NSMutableURLRequest *request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters constructingBodyWithBlock:block error:&serializationError];
187+
if (serializationError) {
188+
if (failure) {
189+
#pragma clang diagnostic push
190+
#pragma clang diagnostic ignored "-Wgnu"
191+
dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{
192+
failure(nil, serializationError);
193+
});
194+
#pragma clang diagnostic pop
195+
}
196+
197+
return nil;
198+
}
199+
200+
__block NSURLSessionDataTask *task = [self uploadTaskWithStreamedRequest:request progress:uploadProgress completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) {
201+
if (error) {
202+
if (failure) {
203+
failure(task, error);
204+
}
205+
} else {
206+
if (success) {
207+
success(task, responseObject);
208+
}
209+
}
210+
}];
211+
212+
[task resume];
213+
214+
return task;
215+
}
216+
217+
- (NSURLSessionDataTask *)PUT:(NSString *)URLString
218+
parameters:(id)parameters
219+
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
220+
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
221+
{
222+
NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PUT" URLString:URLString parameters:parameters uploadProgress:nil downloadProgress:nil success:success failure:failure];
223+
224+
[dataTask resume];
225+
226+
return dataTask;
227+
}
228+
229+
- (NSURLSessionDataTask *)PATCH:(NSString *)URLString
230+
parameters:(id)parameters
231+
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
232+
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
233+
{
234+
NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PATCH" URLString:URLString parameters:parameters uploadProgress:nil downloadProgress:nil success:success failure:failure];
235+
236+
[dataTask resume];
237+
238+
return dataTask;
239+
}
240+
241+
- (NSURLSessionDataTask *)DELETE:(NSString *)URLString
242+
parameters:(id)parameters
243+
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
244+
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
245+
{
246+
NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"DELETE" URLString:URLString parameters:parameters uploadProgress:nil downloadProgress:nil success:success failure:failure];
247+
248+
[dataTask resume];
249+
250+
return dataTask;
251+
}
252+
253+
- (NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method
254+
URLString:(NSString *)URLString
255+
parameters:(id)parameters
256+
uploadProgress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgress
257+
downloadProgress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgress
258+
success:(void (^)(NSURLSessionDataTask *, id))success
259+
failure:(void (^)(NSURLSessionDataTask *, NSError *))failure
260+
{
261+
NSError *serializationError = nil;
262+
NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters error:&serializationError];
263+
if (serializationError) {
264+
if (failure) {
265+
#pragma clang diagnostic push
266+
#pragma clang diagnostic ignored "-Wgnu"
267+
dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{
268+
failure(nil, serializationError);
269+
});
270+
#pragma clang diagnostic pop
271+
}
272+
273+
return nil;
274+
}
275+
276+
__block NSURLSessionDataTask *dataTask = nil;
277+
dataTask = [self dataTaskWithRequest:request
278+
uploadProgress:uploadProgress
279+
downloadProgress:downloadProgress
280+
completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) {
281+
if (error) {
282+
if (failure) {
283+
failure(dataTask, error);
284+
}
285+
} else {
286+
if (success) {
287+
success(dataTask, responseObject);
288+
}
289+
}
290+
}];
291+
292+
return dataTask;
293+
}
294+
295+
#pragma mark - NSObject
296+
297+
- (NSString *)description {
298+
return [NSString stringWithFormat:@"<%@: %p, baseURL: %@, session: %@, operationQueue: %@>", NSStringFromClass([self class]), self, [self.baseURL absoluteString], self.session, self.operationQueue];
299+
}
300+
301+
#pragma mark - NSSecureCoding
302+
303+
+ (BOOL)supportsSecureCoding {
304+
return YES;
305+
}
306+
307+
- (instancetype)initWithCoder:(NSCoder *)decoder {
308+
NSURL *baseURL = [decoder decodeObjectOfClass:[NSURL class] forKey:NSStringFromSelector(@selector(baseURL))];
309+
NSURLSessionConfiguration *configuration = [decoder decodeObjectOfClass:[NSURLSessionConfiguration class] forKey:@"sessionConfiguration"];
310+
if (!configuration) {
311+
NSString *configurationIdentifier = [decoder decodeObjectOfClass:[NSString class] forKey:@"identifier"];
312+
if (configurationIdentifier) {
313+
#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1100)
314+
configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:configurationIdentifier];
315+
#else
316+
configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:configurationIdentifier];
317+
#endif
318+
}
319+
}
320+
321+
self = [self initWithBaseURL:baseURL sessionConfiguration:configuration];
322+
if (!self) {
323+
return nil;
324+
}
325+
326+
self.requestSerializer = [decoder decodeObjectOfClass:[AFHTTPRequestSerializer class] forKey:NSStringFromSelector(@selector(requestSerializer))];
327+
self.responseSerializer = [decoder decodeObjectOfClass:[AFHTTPResponseSerializer class] forKey:NSStringFromSelector(@selector(responseSerializer))];
328+
AFSecurityPolicy *decodedPolicy = [decoder decodeObjectOfClass:[AFSecurityPolicy class] forKey:NSStringFromSelector(@selector(securityPolicy))];
329+
if (decodedPolicy) {
330+
self.securityPolicy = decodedPolicy;
331+
}
332+
333+
return self;
334+
}
335+
336+
- (void)encodeWithCoder:(NSCoder *)coder {
337+
[super encodeWithCoder:coder];
338+
339+
[coder encodeObject:self.baseURL forKey:NSStringFromSelector(@selector(baseURL))];
340+
if ([self.session.configuration conformsToProtocol:@protocol(NSCoding)]) {
341+
[coder encodeObject:self.session.configuration forKey:@"sessionConfiguration"];
342+
} else {
343+
[coder encodeObject:self.session.configuration.identifier forKey:@"identifier"];
344+
}
345+
[coder encodeObject:self.requestSerializer forKey:NSStringFromSelector(@selector(requestSerializer))];
346+
[coder encodeObject:self.responseSerializer forKey:NSStringFromSelector(@selector(responseSerializer))];
347+
[coder encodeObject:self.securityPolicy forKey:NSStringFromSelector(@selector(securityPolicy))];
348+
}
349+
350+
#pragma mark - NSCopying
351+
352+
- (instancetype)copyWithZone:(NSZone *)zone {
353+
AFHTTPSessionManager *HTTPClient = [[[self class] allocWithZone:zone] initWithBaseURL:self.baseURL sessionConfiguration:self.session.configuration];
354+
355+
HTTPClient.requestSerializer = [self.requestSerializer copyWithZone:zone];
356+
HTTPClient.responseSerializer = [self.responseSerializer copyWithZone:zone];
357+
HTTPClient.securityPolicy = [self.securityPolicy copyWithZone:zone];
358+
return HTTPClient;
359+
}
360+
361+
@end

0 commit comments

Comments
 (0)