00001
00002
00003
00004
00005
00006
00007
00008
00009 #import <UIKit/UIKit.h>
00010 #import "DropIODrop.h"
00011 #import "DropIOAsset.h"
00012
00018 #define kDropIOErrorDomain @"DropIOErrorDomain"
00019
00021 #define kDropIOErrorAction @"action"
00022 #define kDropIOErrorMessage @"message"
00023 #define kDropIOErrorResult @"result"
00024 #define kDropIOErrorAPIURL @"APIURL"
00025
00027 #define kDropIOErrorCode_RateLimitExceeded -1
00028 #define kDropIOErrorCode_NotDropURL -2
00029 #define kDropIOErrorCode_TokenInvalid -3
00030 #define kDropIOErrorCode_AssetCreationFailed -4
00031 #define kDropIOErrorCode_AssetDeleted -5
00032 #define kDropIOErrorCode_DropDeleted -6
00033 #define kDropIOErrorCode_SendToSuccess -7
00034 #define kDropIOErrorCode_Unknown -1000
00035
00037 #define kDropIOErrorResult_Success @"Success"
00038
00040 #define kDropIOErrorMessage_TokenInvalid @"The token is invalid."
00041 #define kDropIOErrorMessage_RateLimitExceeded @"IP limit exceeded."
00042 #define kDropIOErrorMessage_AssetCreationFailed @"The asset could not be created."
00043 #define kDropIOErrorMessage_AssetDeleted @"The asset was destroyed."
00044 #define kDropIOErrorMessage_DropDeleted @"The drop was destroyed."
00045
00047 #define kDropIOParamKey_Version @"version"
00048 #define kDropIOParamKey_Format @"format"
00049 #define kDropIOParamKey_APIKey @"api_key"
00050 #define kDropIOParamKey_Name @"name"
00051 #define kDropIOParamKey_AdminPassword @"admin_password"
00052 #define kDropIOParamKey_GuestPassword @"password"
00053 #define kDropIOParamKey_Token @"token"
00054 #define kDropIOParamKey_Page @"page"
00055 #define kDropIOParamKey_Title @"title"
00056 #define kDropIOParamKey_Contents @"contents"
00057 #define kDropIOParamKey_Url @"url"
00058 #define kDropIOParamKey_Description @"description"
00059 #define kDropIOParamKey_DropName @"drop_name"
00060 #define kDropIOParamKey_PremiumCode @"premium_code"
00061 #define kDropIOParamKey_ExpirationLength @"expiration_length"
00062 #define kDropIOParamKey_GuestsCanAdd @"guests_can_add"
00063 #define kDropIOParamKey_GuestsCanDelete @"guests_can_delete"
00064 #define kDropIOParamKey_GuestsCanComment @"guests_can_comment"
00065 #define kDropIOParamKey_Type @"type"
00066 #define kDropIOParamKey_Medium @"medium"
00067 #define kDropIOParamKey_Emails @"emails"
00068 #define kDropIOParamKey_Message @"message"
00069 #define kDropIOParamKey_FaxNumber @"fax_number"
00070
00071 #define kDropIOParamKey_AssetAPIUrl @"assetAPIUrl"
00072
00074 #define kDropIOParamValue_Format_XML @"xml"
00075 #define kDropIOParamValue_Format_JSON @"json"
00076
00077 #define kDropIOParamValue_Version_10 @"1.0"
00078 #define kDropIOParamValue_Version_Latest kDropIOParamValue_Version_10
00079
00080 #define kDropIOParamValue_Medium_Email @"email"
00081 #define kDropIOParamValue_Medium_Drop @"drop"
00082 #define kDropIOParamValue_Medium_Fax @"fax"
00083
00084
00086 #define kDropIONewDropUrl @"http://api.drop.io/drops"
00087 #define kDropIOUpdateDropUrlFormat @"http://api.drop.io/drops/%@"
00088 #define kDropIODropUrlFormat @"http://api.drop.io/drops/%@?%@=%@&%@=%@&%@=%@&%@=%@"
00089 #define kDropIOAssetsUrlFormat @"http://api.drop.io/drops/%@/assets?%@=%@&%@=%@&%@=%@&%@=%@&%@=%d"
00090 #define kDropIONewAssetUrlFormat @"http://api.drop.io/drops/%@/assets"
00091 #define kDropIOUpdateAssetUrlFormat @"http://api.drop.io/drops/%@/assets/%@"
00092 #define kDropIOAssetUrlFormat @"http://api.drop.io/drops/%@/assets/%@?%@=%@&%@=%@&%@=%@&%@=%@"
00093 #define kDropIOSendAssetUrlFormat @"http://api.drop.io/drops/%@/assets/%@/send_to"
00094 #define kDropIOFileUploadUrl @"http://assets.drop.io/upload"
00095 #define kDropIODropWebUrlFormat @"http://drop.io/%@"
00096 #define kDropIODropMobileUrlFormat @"http://drop.io/%@/m"
00097 #define kDropIODropChatUrlFormat @"http://drop.io/%@/chat?mobile=true"
00098 #define kDropIODropWebAuthUrlFormat @"http://drop.io/%@/from_api"
00099
00101 #define kAssetsPerPage 30
00102
00107 #define kDropMaxAssets (10*kAssetsPerPage)
00108
00113 @interface NSString (httpFormEncoding)
00114 - (NSString*)stringUsingHTTPFormEncoding;
00115 @end
00116
00122 @interface NSMutableURLRequest (httpFormEncoding)
00123 - (void) setHTTPPostBody:(NSDictionary*)postParams;
00124 @end
00125
00129 @interface DropIO : NSObject
00130
00131
00132 + (void) setAPIKey:(NSString*)apiKey;
00133
00134
00135 + (NSString*)APIKey;
00136
00137
00138 + (BOOL) checkAPIKey;
00139
00140
00141 + (NSArray*) parseResponseFromURL:(NSURL*)url
00142 fromNodeName:(NSString *)nodeName
00143 toObject:(NSString *)className
00144 parseError:(NSError **)error;
00145
00146 + (NSArray*) parseResponse:(NSData*)responseData
00147 fromNodeName:(NSString *)nodeName
00148 toObject:(NSString *)className
00149 parseError:(NSError **)error;
00150
00151
00152 + (DropIODrop*) dropOperation:(NSString*)opString atUrl:(NSString*)urlStr withParameters:(NSDictionary*)params;
00153
00154
00155 + (DropIODrop*) dropWithRandomName;
00156
00157
00158 + (DropIODrop*) dropWithName:(NSString*)aName;
00159
00160
00161 + (DropIODrop*) dropWithName:(NSString*)aName andPassword:(NSString*)aPassword;
00162
00163
00164 + (DropIODrop*) dropWithParameters:(NSDictionary*)params;
00165
00166
00167 + (NSURL*) URLForDropNamed:(NSString*)dropName withToken:(NSString*)aToken;
00168
00169
00170 + (DropIODrop*) findDropNamed:(NSString*)aName error:(NSError**)pError;
00171
00172
00173 + (DropIODrop*) findDropNamed:(NSString*)aName withToken:(NSString*)aToken error:(NSError**)pError;
00174
00175
00176 + (DropIODrop*) findDropAtAPIURL:(NSURL*)dropAPIURL error:(NSError**)pError;
00177
00178
00179 + (NSString*) dropNameFromDropURL:(NSURL*)dropURL;
00180
00181
00182 + (DropIODrop*) findDropAtDropURL:(NSURL*)dropURL error:(NSError**)pError;
00183
00184
00185 + (void) updateDropNamed:(NSString*)dropName withParameters:(NSDictionary*)params;
00186
00187
00188 + (void) deleteDropNamed:(NSString*)dropName withParameters:(NSDictionary*)params;
00189
00190
00191 + (NSError*) lastError;
00192 + (void) setLastError:(NSError*)dropioError;
00193
00194 @end