UNICORN - iOS
Request.h
1 //
2 // Request.h
3 //
4 // ローディング表示にまつわることは何もしません。
5 // ローディング表示はシステムのよってその表示ポリシーが違う為です。
6 // その変わり、RequestはDelegateを提供します。
7 // Delegateを利用して、システムに合ったローディング表示を実施して下さい。
8 //
9 // Created by saimushi on 14/06/16.
10 // Copyright (c) 2014年 saimushi. All rights reserved.
11 //
12 
13 typedef void(^RequestCompletionHandler)(BOOL success, NSInteger statusCode, NSHTTPURLResponse *responseHeader, NSString *responseBody, NSError* error);
14 
15 #define DEFAULT_TIMEOUT 40
16 #define DEFAULT_COOKIE_EXPIRED @"3600"
17 
18 @protocol RequestDelegate;
19 
20 @interface Request : NSObject <NSURLSessionTaskDelegate>
21 {
22  id <RequestDelegate> delegate;
23  RequestCompletionHandler completion;
24 }
25 
26 @property (strong, nonatomic) id<RequestDelegate> delegate;
27 @property (strong, nonatomic) RequestCompletionHandler completion;
28 @property (strong, nonatomic) NSString *userAgent;
29 
30 // 通常のリクエスト処理
31 // NSMutableDictionary内のvalueはstringのみ
32 - (void)start:(NSString *)requestURL :(NSString *)method :(NSMutableDictionary *)requestParams;
33 // 通常のリクエスト処理に加えて、マルチパートでファイルをPOST(PUT)する
34 // XXX 大きいファイルのアップロードは次のメソッド- (void)start:(NSString *)requestURL :(NSString *)method :(NSMutableDictionary *)requestParams :(NSURL *)uploadFilePath;を使ってアップロードタスクで実行して下さい!
35 - (void)start:(NSString *)requestURL :(NSString *)method :(NSMutableDictionary *)requestParams :(NSData *)uploadData :(NSString *)fileName :(NSString *)contentType :(NSString *)dataKeyName;
36 // 通常のリクエスト処理に加えて、マルチパートでファイルをPOST(PUT)する
37 // ファイルをアップロードする
38 // XXX PUTメソッドでアップロードした場合、サーバー側でファイル以外に送信されたPOSTデータを判別出来なくなる事に注意して下さい!
39 - (void)start:(NSString *)requestURL :(NSString *)method :(NSMutableDictionary *)requestParams :(NSURL *)uploadFilePath;
40 
41 // 以下スタティックメソッド定義
42 // アプリ固有のユーザーエージェンを作成
43 + (NSString *)createUserAgent;
44 
45 // support RESTful
46 // GET リソース参照
47 + (void)get:(id)calledClass :(NSString *)requestURL;
48 + (void)get:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams;
49 + (void)get:(id)calledClass :(NSString *)requestURL withCompletion:(RequestCompletionHandler)argCompletion;
50 + (void)get:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams withCompletion:(RequestCompletionHandler)argCompletion;;
51 // POST リソース追加・更新・インクリメント・デクリメント
52 + (void)post:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams;
53 + (void)post:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams :(NSData *)uploadData :(NSString *)fileName :(NSString *)contentType :(NSString *)dataKeyName;
54 + (void)post:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams withCompletion:(RequestCompletionHandler)argCompletion;
55 + (void)post:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams :(NSData *)uploadData :(NSString *)fileName :(NSString *)contentType :(NSString *)dataKeyName withCompletion:(RequestCompletionHandler)argCompletion;
56 // ファイルアップロード
57 + (void)post:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams :(NSURL *)uploadFilePath;
58 + (void)post:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams :(NSURL *)uploadFilePath withCompletion:(RequestCompletionHandler)argCompletion;
59 // PUT リソース追加・更新
60 + (void)put:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams;
61 + (void)put:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams :(NSData *)uploadData :(NSString *)fileName :(NSString *)contentType :(NSString *)dataKeyName;
62 + (void)put:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams withCompletion:(RequestCompletionHandler)argCompletion;
63 + (void)put:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams :(NSData *)uploadData :(NSString *)fileName :(NSString *)contentType :(NSString *)dataKeyName withCompletion:(RequestCompletionHandler)argCompletion;
64 // ファイルアップロード
65 + (void)put:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams :(NSURL *)uploadFilePath;
66 + (void)put:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams :(NSURL *)uploadFilePath withCompletion:(RequestCompletionHandler)argCompletion;
67 // DELETE リソース削除
68 + (void)delete:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams;
69 + (void)delete:(id)calledClass :(NSString *)requestURL :(NSMutableDictionary *)requestParams withCompletion:(RequestCompletionHandler)argCompletion;
70 // HEAD リソース定義参照
71 + (void)head:(id)calledClass :(NSString *)requestURL;
72 + (void)head:(id)calledClass :(NSString *)requestURL withCompletion:(RequestCompletionHandler)argCompletion;
73 
74 // Cookie関連
75 // CookieをCookieStorageにセットする(簡易設定版)
76 + (void)setCookie:(NSString *)value forKey:(NSString *)key domain:(NSString *)domain;
77 // CookieをCookieStorageにセットする(詳細設定版)
78 + (void)setCookie:(NSString *)value forKey:(NSString *)key domain:(NSString *)domain cookiePath:(NSString *)path expires:(NSString *)expires;
79 // CookieをNSUserDefaultから復帰する
80 + (void)loadCookie;
81 // CookieをNSUserDefaultに保存し、永続化する
82 + (void)saveCookie;
83 
84 @end
85 
86 
87 @protocol RequestDelegate <NSObject>
88 @optional
89 - (void)setSessionDataTask:(NSURLSessionTask *)task;
90 - (void)didFinishSuccess:(NSHTTPURLResponse *)responseHeader :(NSString *)responseBody;
91 - (void)didFinishError:(NSHTTPURLResponse *)responseHeader :(NSString *)responseBody :(NSError *)failedHandler;
92 - (void)didChangeProgress:(double)packetBytesSent :(double)totalBytesSent :(double)totalBytesExpectedToSend;
93 
94 @end
Definition: Request.h:88
Definition: Request.h:20