hank
2017-06-14 a0a84333e64f1e94ae9d0f69545037c60e781842
commit | author | age
a0a843 1 //
H 2 //  TWTRNetworkingPipeline.h
3 //  TwitterKit
4 //
5 //  Copyright (c) 2015 Twitter. All rights reserved.
6 //
7
8 #import <TwitterCore/TWTRSessionStore.h>
9
10 NS_ASSUME_NONNULL_BEGIN
11
12 @protocol TWTRNetworkingResponseValidating;
13
14 typedef void (^TWTRNetworkingPipelineCallback)(NSData *_Nullable data, NSURLResponse *_Nullable response, NSError *_Nullable error);
15
16 @interface TWTRNetworkingPipeline : NSObject
17
18 /**
19  *if set, this object will be used to validate network responses.
20  */
21 @property (nonatomic, readonly, nullable) id<TWTRNetworkingResponseValidating> responseValidator;
22
23 /**
24  * Use the initWithURLSession: method instead.
25  */
26 - (instancetype)init NS_UNAVAILABLE;
27
28 /**
29  * Returns an instance of the networking pipeline
30  *
31  * @param URLSession URLSession object to invoke network requests on.
32  * @param responseValidator an optional response validator to use to validate responses.
33  */
34 - (instancetype)initWithURLSession:(NSURLSession *)URLSession responseValidator:(nullable id<TWTRNetworkingResponseValidating>)responseValidator NS_DESIGNATED_INITIALIZER;
35
36 /**
37  * Enqueues a request in the pipeline.
38  *
39  * @param request The HTTP Request to send
40  * @param sessionStore The session store that will provide the session.
41  * @param userID The userId to sign the request for or nil if using the guest session
42  * @param completion The completion block to invoke on completion.
43  */
44 - (NSProgress *)enqueueRequest:(NSURLRequest *)request sessionStore:(id<TWTRSessionStore>)sessionStore;
45 - (NSProgress *)enqueueRequest:(NSURLRequest *)request sessionStore:(id<TWTRSessionStore>)sessionStore requestingUser:(nullable NSString *)userID;
46
47 /**
48  *  Enqueues a request in the pipeline.
49  *
50  *  @param request      The HTTP request to send.
51  *  @param sessionStore The session store that will provide the session.
52  *  @param userID       The user to sign the request for or nil if using the guest session.
53  *  @param completion   The completion block to invoke on completion.
54  */
55 - (NSProgress *)enqueueRequest:(NSURLRequest *)request sessionStore:(id<TWTRSessionStore>)sessionStore requestingUser:(nullable NSString *)userID completion:(nullable TWTRNetworkingPipelineCallback)completion;
56
57 @end
58
59 @protocol TWTRNetworkingResponseValidating <NSObject>
60
61 @required
62 /**
63  * This method should return an NO if the response represents an error state.
64  */
65 - (BOOL)validateResponse:(nullable NSURLResponse *)response data:(nullable NSData *)data error:(NSError **)error;
66
67 @end
68
69 NS_ASSUME_NONNULL_END