PageRenderTime 26ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/box/mobile/ios/Classes/BoxAPI/Models/BoxRESTApiFactory.m

https://bitbucket.org/plepic/titanium_modules
Objective C | 359 lines | 294 code | 50 blank | 15 comment | 6 complexity | 04fb93a191519b8126b72187d4bbe4c5 MD5 | raw file
  1. //
  2. // Copyright 2011 Box.net, Inc.
  3. //
  4. // Licensed under the Apache License, Version 2.0 (the "License");
  5. // you may not use this file except in compliance with the License.
  6. // You may obtain a copy of the License at
  7. //
  8. // http://www.apache.org/licenses/LICENSE-2.0
  9. //
  10. // Unless required by applicable law or agreed to in writing, software
  11. // distributed under the License is distributed on an "AS IS" BASIS,
  12. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. // See the License for the specific language governing permissions and
  14. // limitations under the License.
  15. //
  16. #import "BoxRESTApiFactory.h"
  17. @implementation BoxRESTApiFactory
  18. static NSString * BOX_API_KEY = @"BOX API KEY NOT SET";
  19. + (void) changeBoxAPIKey:(NSString*)key {
  20. [BOX_API_KEY release];
  21. BOX_API_KEY = [key retain];
  22. }
  23. + (NSString *)getAuthTokenUrlString:(NSString *)userName userPassword:(NSString *)userPassword {
  24. NSString *password = [BoxModelUtilityFunctions urlEncodeParameter:userPassword];
  25. NSString *user = [BoxModelUtilityFunctions urlEncodeParameter:userName];
  26. NSString *urlString = [NSString stringWithFormat:
  27. @"https://www.box.net/api/1.0/rest?action=authorization&api_key=%@&login=%@&password=%@&method",
  28. BOX_API_KEY,
  29. user,
  30. password];
  31. return urlString;
  32. }
  33. + (NSString *)getAccountTreeOneLevelUrlString:(NSString *)token boxFolderId:(NSString *)folderID {
  34. NSString *urlString = [NSString stringWithFormat:
  35. @"https://www.box.net/api/1.0/rest?action=get_account_tree&api_key=%@&auth_token=%@&folder_id=%@&params[]=nozip&params[]=onelevel&params[]=has_collaborators&params[]=checksum",
  36. BOX_API_KEY,
  37. token,
  38. folderID];
  39. return urlString;
  40. }
  41. + (NSString *)getAccountTreeOneLevelUrlStringFoldersOnly:(NSString *)token boxFolderId:(NSString *)folderID {
  42. NSString *urlString = [NSString stringWithFormat:
  43. @"https://www.box.net/api/1.0/rest?action=get_account_tree&api_key=%@&auth_token=%@&folder_id=%@&params[]=nozip&params[]=onelevel&params[]=has_collaborators&params[]=checksum&params[]=nofiles",
  44. BOX_API_KEY,
  45. token,
  46. folderID];
  47. return urlString;
  48. }
  49. + (NSString *)getLogoutUrlString:(NSString *)boxAuthToken {
  50. NSString *urlString = [NSString stringWithFormat:
  51. @"https://www.box.net/api/1.0/rest?action=logout&api_key=%@&auth_token=%@",
  52. BOX_API_KEY,
  53. boxAuthToken];
  54. return urlString;
  55. }
  56. + (NSString *)getUploadUrlString:(NSString *)boxAuthToken boxFolderID:(NSString *)boxFolderID {
  57. NSString *urlString = [NSString stringWithFormat:
  58. @"https://upload.box.net/api/1.0/upload/%@/%@",
  59. boxAuthToken,
  60. boxFolderID];
  61. return urlString;
  62. }
  63. + (NSString *)getDownloadUrlString:(NSString *)boxAuthToken
  64. boxFileID:(int)boxFileID
  65. {
  66. return [NSString stringWithFormat:
  67. @"https://www.box.net/api/1.0/download/%@/%d",
  68. boxAuthToken,
  69. boxFileID];
  70. }
  71. + (NSString *)getFolderFileShareUrlString:(NSString *)boxToken
  72. boxTarget:(NSString *)target
  73. boxTargetId:(NSString *)targetId
  74. boxSharePassword:(NSString *)sharePassword
  75. boxMessage:(NSString *)shareMessage
  76. boxEmails:(NSArray *)shareEmails
  77. {
  78. if (shareMessage == nil) {
  79. shareMessage = @"";
  80. }
  81. NSString *encodedString = [BoxModelUtilityFunctions urlEncodeParameter:shareMessage];
  82. NSString *urlString = [NSString stringWithFormat:
  83. @"https://www.box.net/api/1.0/rest?action=public_share&api_key=%@&auth_token=%@&target=%@&target_id=%@&password=%@&message=%@",
  84. BOX_API_KEY,
  85. boxToken,
  86. target,
  87. targetId,
  88. sharePassword,
  89. encodedString];
  90. if (shareEmails) {
  91. for (NSString *str in shareEmails) {
  92. urlString = [urlString stringByAppendingFormat:
  93. @"&emails[]=%@",
  94. [str stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
  95. }
  96. }
  97. return urlString;
  98. }
  99. + (NSString *)getBoxRegisterNewAccountUrlString:(NSString *)boxLoginName boxPassword:(NSString *)password {
  100. NSString *pword = [BoxModelUtilityFunctions urlEncodeParameter:password];
  101. NSString *user = [BoxModelUtilityFunctions urlEncodeParameter:boxLoginName];
  102. NSString *urlString = [NSString stringWithFormat:
  103. @"http://www.box.net/api/1.0/rest?action=register_new_user&api_key=%@&login=%@&password=%@",
  104. BOX_API_KEY,
  105. user,
  106. pword];
  107. return urlString;
  108. }
  109. + (NSString *)getTicketUrlString {
  110. return [NSString stringWithFormat:
  111. @"https://www.box.net/api/1.0/rest?action=get_ticket&api_key=%@",
  112. BOX_API_KEY];
  113. }
  114. + (NSString *)authenticationUrlStringForTicket:(NSString *)ticket {
  115. return [NSString stringWithFormat:
  116. @"https://m.box.net/api/1.0/auth/%@",
  117. ticket];
  118. }
  119. + (NSString *)getAuthTokenUrlStringForTicket:(NSString *)ticket {
  120. return [NSString stringWithFormat:
  121. @"https://www.box.net/api/1.0/rest?action=get_auth_token&api_key=%@&ticket=%@",
  122. BOX_API_KEY,
  123. ticket];
  124. }
  125. + (NSString *)moveURLStringForAuthToken:(NSString *)authToken
  126. targetType:(NSString *)targetType
  127. targetID:(int)targetID
  128. destinationID:(int)destinationID
  129. {
  130. return [NSString stringWithFormat:
  131. @"%@/rest?action=move&api_key=%@&auth_token=%@&target=%@&target_id=%d&destination_id=%d",
  132. @"https://www.box.net/api/1.0",
  133. BOX_API_KEY,
  134. authToken,
  135. targetType,
  136. targetID,
  137. destinationID];
  138. }
  139. + (NSString *)copyUrlStringForAuthToken:(NSString *)authToken
  140. targetType:(NSString *)targetType
  141. targetId:(int)targetId
  142. destinationId:(int)destinationId
  143. {
  144. return [NSString stringWithFormat:
  145. @"https://www.box.net/api/1.0/rest?action=copy&api_key=%@&auth_token=%@&target=%@&target_id=%d&destination_id=%d",
  146. BOX_API_KEY,
  147. authToken,
  148. targetType,
  149. targetId,
  150. destinationId];
  151. }
  152. + (NSString *)deleteUrlStringForAuthToken:(NSString *)authToken
  153. targetType:(NSString *)targetType
  154. targetId:(int)targetId
  155. {
  156. return [NSString stringWithFormat:
  157. @"https://www.box.net/api/1.0/rest?action=delete&api_key=%@&auth_token=%@&target=%@&target_id=%d",
  158. BOX_API_KEY,
  159. authToken,
  160. targetType,
  161. targetId];
  162. }
  163. + (NSString *)getCommentsURLStringForAuthToken:(NSString *)authToken
  164. targetType:(NSString *)targetType
  165. targetID:(int)targetID
  166. {
  167. return [NSString stringWithFormat:
  168. @"%@/rest?action=get_comments&api_key=%@&auth_token=%@&target=%@&target_id=%d",
  169. @"https://www.box.net/api/1.0",
  170. BOX_API_KEY,
  171. authToken,
  172. targetType,
  173. targetID];
  174. }
  175. + (NSString *)addCommentsURLStringForAuthToken:(NSString *)authToken
  176. targetType:(NSString *)targetType
  177. targetID:(int)targetID
  178. message:(NSString *)message
  179. {
  180. return [NSString stringWithFormat:
  181. @"%@/rest?action=add_comment&api_key=%@&auth_token=%@&target=%@&target_id=%d&message=%@",
  182. @"https://www.box.net/api/1.0",
  183. BOX_API_KEY,
  184. authToken,
  185. targetType,
  186. targetID,
  187. [BoxModelUtilityFunctions urlEncodeParameter:message]];
  188. }
  189. + (NSString *)deleteCommentURLStringForAuthToken:(NSString *)authToken
  190. commentID:(int)commentID
  191. {
  192. return [NSString stringWithFormat:
  193. @"%@/rest?action=delete_comment&api_key=%@&auth_token=%@&target_id=%d",
  194. @"https://www.box.net/api/1.0",
  195. BOX_API_KEY,
  196. authToken,
  197. commentID];
  198. }
  199. + (NSString *)publicShareURLStringForAuthToken:(NSString *)authToken
  200. targetID:(int)targetID
  201. targetType:(NSString *)targetType
  202. password:(NSString *)password
  203. message:(NSString *)message
  204. emails:(NSArray *)emails
  205. {
  206. password = password ? [BoxModelUtilityFunctions urlEncodeParameter:password] : @"";
  207. message = message ? [BoxModelUtilityFunctions urlEncodeParameter:message] : @"";
  208. emails = emails ? emails : [NSArray array];
  209. NSString *url = [NSString stringWithFormat:
  210. @"%@/rest?action=public_share&api_key=%@&auth_token=%@&target=%@&target_id=%d&password=%@&message=%@",
  211. @"https://www.box.net/api/1.0",
  212. BOX_API_KEY,
  213. authToken,
  214. targetType,
  215. targetID,
  216. password,
  217. message];
  218. for (NSString *email in emails) {
  219. url = [url stringByAppendingFormat:
  220. @"&emails[]=%@",
  221. [email stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
  222. }
  223. return url;
  224. }
  225. + (NSString *)publicUnshareURLStringForAuthToken:(NSString *)authToken
  226. targetID:(int)targetID
  227. targetType:(NSString *)targetType
  228. {
  229. return [NSString stringWithFormat:
  230. @"%@/rest?action=public_unshare&api_key=%@&auth_token=%@&target=%@&target_id=%d",
  231. @"https://www.box.net/api/1.0",
  232. BOX_API_KEY,
  233. authToken,
  234. targetType,
  235. targetID];
  236. }
  237. + (NSString *)privateShareURLStringForAuthToken:(NSString *)authToken
  238. targetID:(int)targetID
  239. targetType:(NSString *)targetType
  240. message:(NSString *)message
  241. emails:(NSArray *)emails
  242. notify:(BOOL)notify
  243. {
  244. NSString *url;
  245. message = message ? [BoxModelUtilityFunctions urlEncodeParameter:message] : @"";
  246. emails = emails ? emails : [NSArray array];
  247. url = [NSString stringWithFormat:
  248. @"%@/rest?action=private_share&api_key=%@&auth_token=%@&target=%@&target_id=%d&message=%@&notify=%@",
  249. @"https://www.box.net/api/1.0",
  250. BOX_API_KEY,
  251. authToken,
  252. targetType,
  253. targetID,
  254. message,
  255. (notify ? @"true" : @"false")];
  256. for (NSString *email in emails) {
  257. url = [url stringByAppendingFormat:
  258. @"&emails[]=%@",
  259. [email stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
  260. }
  261. return url;
  262. }
  263. + (NSString *)updatesURLStringSince:(NSDate *)date authToken:(NSString *)authToken {
  264. NSString *beginTimeStampString = [NSString stringWithFormat:@"%.0f", [date timeIntervalSince1970]];
  265. NSString *endTimeStampString = [NSString stringWithFormat:@"%.0f", [[NSDate date] timeIntervalSince1970]];
  266. return [NSString stringWithFormat:
  267. @"%@/rest?action=get_updates&api_key=%@&auth_token=%@&begin_timestamp=%@&end_timestamp=%@&params[]=nozip&params[]=use_attributes&params[]=comment_count&params[]=web_links",
  268. @"https://www.box.net/api/1.0",
  269. BOX_API_KEY,
  270. authToken,
  271. beginTimeStampString,
  272. endTimeStampString];
  273. }
  274. + (NSString *)registerUrlStringForLogin:(NSString *)login password:(NSString *)password {
  275. return [NSString stringWithFormat:
  276. @"https://www.box.net/api/1.0/rest?action=register_new_user&api_key=%@&login=%@&password=%@",
  277. BOX_API_KEY,
  278. login,
  279. password];
  280. }
  281. + (NSString *)createFolderUrlStringForAuthToken:(NSString *)authToken
  282. parentId:(int)parentID
  283. name:(NSString *)name
  284. share:(BOOL)share
  285. {
  286. NSString *encodedName = [BoxModelUtilityFunctions urlEncodeParameter:name];
  287. return [NSString stringWithFormat:
  288. @"https://www.box.net/api/1.0/rest?action=create_folder&api_key=%@&auth_token=%@&parent_id=%d&name=%@&share=%d",
  289. BOX_API_KEY,
  290. authToken,
  291. parentID,
  292. encodedName,
  293. share];
  294. }
  295. + (NSString *)renameUrlStringForAuthToken:(NSString *)authToken
  296. targetType:(NSString *)targetType
  297. targetID:(int)targetID
  298. newName:(NSString *)newName
  299. {
  300. NSString *encodedName = [BoxModelUtilityFunctions urlEncodeParameter:newName];
  301. return [NSString stringWithFormat:
  302. @"https://www.box.net/api/1.0/rest?action=rename&api_key=%@&auth_token=%@&target=%@&target_id=%d&new_name=%@",
  303. BOX_API_KEY,
  304. authToken,
  305. targetType,
  306. targetID,
  307. encodedName];
  308. }
  309. @end