/RemoteApp/RemoteApp/FISParseAPI.m

https://gitlab.com/learn-co-curriculum/teacherschoose · Objective C · 473 lines · 285 code · 176 blank · 12 comment · 0 complexity · f9fed2b93bd28fd5488a82f20925813f MD5 · raw file

  1. //
  2. // FISParseAPI.m
  3. // TeachersChoose
  4. //
  5. // Created by Damon Skinner on 4/2/15.
  6. // Copyright (c) 2015 ZandTheDMs. All rights reserved.
  7. //
  8. #import "FISParseAPI.h"
  9. #import <AFNetworking.h>
  10. #import "FISConstants.h"
  11. #import <Parse/Parse.h>
  12. #import <NSString+HTML.h>
  13. @implementation FISParseAPI
  14. #pragma mark - Create Parse Objects
  15. +(void)createProposalWithId:(NSString *) proposalId withTeacherObjectId: (NSString *)teacherObjectId andCompletionBlock:(void (^)(NSDictionary *))completionBlock {
  16. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/classes/Proposals/"];
  17. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  18. NSDictionary *params = @{@"proposalId":proposalId,@"teacherId": @{@"__type":@"Pointer",
  19. @"className":@"_User",
  20. @"objectId": teacherObjectId}};
  21. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  22. [manager.requestSerializer setValue:ParseApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
  23. [manager.requestSerializer setValue:ParseRestAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  24. manager.securityPolicy.allowInvalidCertificates = YES;
  25. [manager POST:donorsChooseURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  26. completionBlock(responseObject);
  27. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  28. NSLog(@"Create New Proposal Failed: %@",error.localizedDescription);
  29. }];
  30. }
  31. +(void)createDonationForProposalObjectId:(NSString *)proposalObjectId withName:(NSString *) donorName withDonorLocation: (NSString *)donorLocation donorMessage: (NSString *) donorMessage responseMessage: (NSString *) responseMessage donationAmount: (NSString *) donationAmount andCompletionBlock:(void (^)(NSDictionary *))completionBlock {
  32. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/classes/Donations/"];
  33. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  34. NSDictionary *params = @{@"donorName":donorName,
  35. @"donorLocation":donorLocation,
  36. @"donorMessage":donorMessage,
  37. @"responseMessage":responseMessage,
  38. @"donationAmount":donationAmount,
  39. @"proposal": @{@"__type":@"Pointer",
  40. @"className":@"Proposals",
  41. @"objectId": proposalObjectId}};
  42. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  43. [manager.requestSerializer setValue:ParseApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
  44. [manager.requestSerializer setValue:ParseRestAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  45. manager.securityPolicy.allowInvalidCertificates = YES;
  46. [manager POST:donorsChooseURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  47. completionBlock(responseObject);
  48. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  49. NSLog(@"Create New Donation Failed: %@",error.localizedDescription);
  50. }];
  51. }
  52. #pragma mark - Update Class Properties
  53. +(void)addRandomTeacherId:(NSString *) randomTeacherId toNewUserWithObjectId:(NSString *) currentUserObjectId currentUserSessionToken: (NSString *) currentUserSessionToken andCompletionBlock:(void (^)(void))completionBlock
  54. {
  55. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/users/%@",currentUserObjectId];
  56. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  57. NSDictionary *params = @{@"teacherId":randomTeacherId};
  58. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  59. [manager.requestSerializer setValue:@"2EvZdDTprhbwbQ1Saz6Lz7YZ54qAKuFqv2j57Ezj" forHTTPHeaderField:@"X-Parse-Application-Id"];
  60. [manager.requestSerializer setValue:@"XScYXImf4BFkIRWGY5Xt61LfKQoC6JGSUWB5N3Un" forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  61. [manager.requestSerializer setValue:currentUserSessionToken forHTTPHeaderField:@"X-Parse-Session-Token"];
  62. manager.securityPolicy.allowInvalidCertificates = YES;
  63. [manager PUT:donorsChooseURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  64. completionBlock();
  65. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  66. NSLog(@"Fail: %@",error.localizedDescription);
  67. }];
  68. }
  69. +(void) addDonationResponseMessage:(NSString *) responseMessage forDonationWithObjectId: (NSString *) donationObjectId andCompletionBlock:(void (^)(NSDictionary *))completionBlock {
  70. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/classes/Donations/%@",donationObjectId];
  71. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  72. NSDictionary *params = @{@"responseMessage":responseMessage};
  73. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  74. [manager.requestSerializer setValue:ParseApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
  75. [manager.requestSerializer setValue:ParseRestAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  76. manager.securityPolicy.allowInvalidCertificates = YES;
  77. [manager POST:donorsChooseURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  78. completionBlock(responseObject);
  79. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  80. NSLog(@"Retrieve Donation Object Failed: %@",error.localizedDescription);
  81. }];
  82. }
  83. #pragma mark - Create Parse Relationships
  84. +(void)addProposalObjectId:(NSString *) proposalObjectId toNewUserWithObjectId:(NSString *) currentUserObjectId currentUserSessionToken: (NSString *) currentUserSessionToken andCompletionBlock:(void (^)(void))completionBlock {
  85. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/users/%@",currentUserObjectId];
  86. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  87. NSDictionary *params = @{@"proposals": @{@"__type":@"Pointer",
  88. @"className":@"Proposals",
  89. @"objectId": proposalObjectId}};
  90. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  91. [manager.requestSerializer setValue:@"2EvZdDTprhbwbQ1Saz6Lz7YZ54qAKuFqv2j57Ezj" forHTTPHeaderField:@"X-Parse-Application-Id"];
  92. [manager.requestSerializer setValue:@"XScYXImf4BFkIRWGY5Xt61LfKQoC6JGSUWB5N3Un" forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  93. [manager.requestSerializer setValue:currentUserSessionToken forHTTPHeaderField:@"X-Parse-Session-Token"];
  94. manager.securityPolicy.allowInvalidCertificates = YES;
  95. [manager PUT:donorsChooseURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  96. completionBlock();
  97. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  98. NSLog(@"Fail: %@",error.localizedDescription);
  99. }];
  100. }
  101. +(void)addDonationObjectId:(NSString *) donationObjectId toProposalWithObjectId:(NSString *) proposalObjectId andCompletionBlock:(void (^)(void))completionBlock {
  102. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/classes/Proposals/%@",proposalObjectId];
  103. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  104. NSDictionary *params = @{@"donations": @{
  105. @"__op": @"AddRelation",
  106. @"objects": @[@{@"__type":@"Pointer",
  107. @"className":@"Donations",
  108. @"objectId": donationObjectId}]
  109. }};
  110. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  111. [manager.requestSerializer setValue:@"2EvZdDTprhbwbQ1Saz6Lz7YZ54qAKuFqv2j57Ezj" forHTTPHeaderField:@"X-Parse-Application-Id"];
  112. [manager.requestSerializer setValue:@"XScYXImf4BFkIRWGY5Xt61LfKQoC6JGSUWB5N3Un" forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  113. manager.securityPolicy.allowInvalidCertificates = YES;
  114. [manager PUT:donorsChooseURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  115. completionBlock();
  116. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  117. NSLog(@"Adding Parse Donation Relation Failed: %@",error.localizedDescription);
  118. }];
  119. }
  120. #pragma mark - Retrieve Data
  121. //need to test this method
  122. +(void) getDonationsListForProposalWithId: (NSString *) proposalId andCompletionBlock:(void (^)(NSArray *))completionBlock {
  123. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/classes/Donations/"];
  124. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  125. NSDictionary *params = @{@"where": @{@"proposal": @{@"__type": @"Pointer",
  126. @"className": @"Proposals",
  127. @"objectId":proposalId}}};
  128. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  129. [manager.requestSerializer setValue:ParseApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
  130. [manager.requestSerializer setValue:ParseRestAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  131. manager.securityPolicy.allowInvalidCertificates = YES;
  132. [manager GET:donorsChooseURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  133. completionBlock(responseObject[@"results"]);
  134. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  135. NSLog(@"Create New Proposal Failed: %@",error.localizedDescription);
  136. }];
  137. }
  138. +(void) getDonationforDonationWithObjectId: (NSString *) donationObjectId andCompletionBlock:(void (^)(NSDictionary *))completionBlock {
  139. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/classes/Donations/%@",donationObjectId];
  140. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  141. // NSDictionary *params = @{@"proposalId":proposalObjectId};
  142. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  143. [manager.requestSerializer setValue:ParseApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
  144. [manager.requestSerializer setValue:ParseRestAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  145. manager.securityPolicy.allowInvalidCertificates = YES;
  146. [manager GET:donorsChooseURLString parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  147. completionBlock(responseObject);
  148. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  149. NSLog(@"Retrieve Donation Object Failed: %@",error.localizedDescription);
  150. }];
  151. }
  152. //need to test this method
  153. +(void) getProposalObjectIdForProposalId: (NSString *) proposalId andCompletionBlock:(void (^)(NSString *))completionBlock {
  154. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/classes/Proposals/"];
  155. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  156. NSDictionary *params = @{@"where": @{@"proposalId":proposalId}};
  157. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  158. [manager.requestSerializer setValue:ParseApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
  159. [manager.requestSerializer setValue:ParseRestAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  160. manager.securityPolicy.allowInvalidCertificates = YES;
  161. [manager GET:donorsChooseURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  162. completionBlock(responseObject[@"results"][0][@"objectId"]);
  163. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  164. NSLog(@"Create New Proposal Failed: %@",error.localizedDescription);
  165. }];
  166. }
  167. +(void) getTeacherIdForProposalObjectId: (NSString *) proposalObjectId andCompletionBlock:(void (^)(NSString *))completionBlock {
  168. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/classes/Proposals/%@",proposalObjectId];
  169. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  170. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  171. [manager.requestSerializer setValue:ParseApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
  172. [manager.requestSerializer setValue:ParseRestAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  173. manager.securityPolicy.allowInvalidCertificates = YES;
  174. [manager GET:donorsChooseURLString parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  175. completionBlock(responseObject[@"DCTeacherId"]);
  176. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  177. NSLog(@"Get Proposal Failed: %@",error.localizedDescription);
  178. }];
  179. }
  180. +(void) getProposalObjectProposalId: (NSString *) proposalId andCompletionBlock:(void (^)(NSDictionary *))completionBlock {
  181. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/classes/Proposals/"];
  182. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  183. NSDictionary *params = @{@"where": @{@"proposalId":proposalId}};
  184. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  185. [manager.requestSerializer setValue:ParseApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
  186. [manager.requestSerializer setValue:ParseRestAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  187. manager.securityPolicy.allowInvalidCertificates = YES;
  188. [manager GET:donorsChooseURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  189. completionBlock(responseObject[@"results"][0]);
  190. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  191. NSLog(@"Get Proposal Failed: %@",error.localizedDescription);
  192. }];
  193. }
  194. +(void) getTeacherIdForObjectId: (NSString *) teacherObjectId andCompletionBlock:(void (^)(NSString *))completionBlock {
  195. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/users/%@",teacherObjectId];
  196. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  197. // NSDictionary *params = @{@"where": @{@"proposalId":proposalId}};
  198. // NSDictionary *params = @{@"proposalId":proposalId};
  199. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  200. [manager.requestSerializer setValue:ParseApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
  201. [manager.requestSerializer setValue:ParseRestAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  202. manager.securityPolicy.allowInvalidCertificates = YES;
  203. [manager GET:donorsChooseURLString parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  204. completionBlock(responseObject[@"teacherId"]);
  205. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  206. NSLog(@"Create New Proposal Failed: %@",error.localizedDescription);
  207. }];
  208. }
  209. #pragma mark - Send Push Notifications
  210. +(void)sendPushNotificationToEveryone {
  211. NSString *pushURLString = [NSString stringWithFormat:@"https://api.parse.com/1/push"];
  212. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  213. NSDictionary *params = @{ @"where": @{@"deviceType": @"ios"},
  214. @"data": @{@"alert": @"You've gotten a new donation !"}};
  215. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  216. [manager.requestSerializer setValue:@"2EvZdDTprhbwbQ1Saz6Lz7YZ54qAKuFqv2j57Ezj" forHTTPHeaderField:@"X-Parse-Application-Id"];
  217. [manager.requestSerializer setValue:@"XScYXImf4BFkIRWGY5Xt61LfKQoC6JGSUWB5N3Un" forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  218. [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  219. manager.securityPolicy.allowInvalidCertificates = YES;
  220. [manager POST:pushURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  221. NSLog(@"%@", responseObject);
  222. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  223. NSLog(@"Fail: %@",error.localizedDescription);
  224. }];
  225. }
  226. +(void)sendPushNotificationToTeacherId: (NSString *)teacherId withProposalTitle:(NSString *) proposalTitle andCompletionBlock:(void (^)(void))completion {
  227. NSString *pushURLString = [NSString stringWithFormat:@"https://api.parse.com/1/push"];
  228. NSString *decodedProposalTitle= [proposalTitle stringByDecodingHTMLEntities];
  229. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  230. NSString *notificationMessage = [NSString stringWithFormat:@"Your project \"%@\" just got a donation!",decodedProposalTitle];
  231. NSDictionary *params = @{@"where": @{@"teacherId": teacherId},
  232. @"badge":@"Increment",
  233. @"data": @{@"alert": notificationMessage}};
  234. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  235. [manager.requestSerializer setValue:@"2EvZdDTprhbwbQ1Saz6Lz7YZ54qAKuFqv2j57Ezj" forHTTPHeaderField:@"X-Parse-Application-Id"];
  236. [manager.requestSerializer setValue:@"XScYXImf4BFkIRWGY5Xt61LfKQoC6JGSUWB5N3Un" forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  237. [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  238. manager.securityPolicy.allowInvalidCertificates = YES;
  239. [manager POST:pushURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  240. completion();
  241. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  242. NSLog(@"Fail: %@",error.localizedDescription);
  243. }];
  244. }
  245. +(void)sendFinishedPushNotificationToTeacherId: (NSString *)teacherId withProposalTitle:(NSString *) proposalTitle andCompletionBlock:(void (^)(void))completion {
  246. NSString *pushURLString = [NSString stringWithFormat:@"https://api.parse.com/1/push"];
  247. NSString *decodedProposalTitle= [proposalTitle stringByDecodingHTMLEntities];
  248. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  249. NSString *notificationMessage = [NSString stringWithFormat:@"Your project \"%@\" is now fully funded!",decodedProposalTitle];
  250. NSDictionary *params = @{@"where": @{@"teacherId": teacherId},
  251. @"badge":@"Increment",
  252. @"data": @{@"alert": notificationMessage}};
  253. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  254. [manager.requestSerializer setValue:@"2EvZdDTprhbwbQ1Saz6Lz7YZ54qAKuFqv2j57Ezj" forHTTPHeaderField:@"X-Parse-Application-Id"];
  255. [manager.requestSerializer setValue:@"XScYXImf4BFkIRWGY5Xt61LfKQoC6JGSUWB5N3Un" forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  256. [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  257. manager.securityPolicy.allowInvalidCertificates = YES;
  258. [manager POST:pushURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  259. completion();
  260. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  261. NSLog(@"Fail: %@",error.localizedDescription);
  262. }];
  263. }
  264. #pragma mark - Deleting Objects and Relationships
  265. +(void)removeDonationObjectId:(NSString *) donationObjectId fromProposalWithObjectId:(NSString *) proposalObjectId andCompletionBlock:(void (^)(void))completionBlock {
  266. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/classes/Proposals/%@",proposalObjectId];
  267. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  268. NSDictionary *params = @{@"donations": @{
  269. @"__op": @"RemoveRelation",
  270. @"objects": @[@{@"__type":@"Pointer",
  271. @"className":@"Donations",
  272. @"objectId": donationObjectId}]
  273. }};
  274. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  275. [manager.requestSerializer setValue:@"2EvZdDTprhbwbQ1Saz6Lz7YZ54qAKuFqv2j57Ezj" forHTTPHeaderField:@"X-Parse-Application-Id"];
  276. [manager.requestSerializer setValue:@"XScYXImf4BFkIRWGY5Xt61LfKQoC6JGSUWB5N3Un" forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  277. manager.securityPolicy.allowInvalidCertificates = YES;
  278. [manager PUT:donorsChooseURLString parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
  279. completionBlock();
  280. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  281. NSLog(@"Remove Parse Donation Relation Failed: %@",error.localizedDescription);
  282. }];
  283. }
  284. +(void) deleteDonationWithObjectId:(NSString *) donationObjectId andCompletionBlock:(void (^)(void))completionBlock {
  285. NSString *donorsChooseURLString = [NSString stringWithFormat:@"https://api.parse.com/1/classes/Donations/%@",donationObjectId];
  286. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  287. manager.requestSerializer=[[AFJSONRequestSerializer alloc] init];
  288. [manager.requestSerializer setValue:ParseApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
  289. [manager.requestSerializer setValue:ParseRestAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
  290. manager.securityPolicy.allowInvalidCertificates = YES;
  291. [manager DELETE:donorsChooseURLString parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
  292. completionBlock();
  293. } failure:^(NSURLSessionDataTask *task, NSError *error) {
  294. NSLog(@"Delete Donation Object Failed: %@",error.localizedDescription);
  295. }];
  296. }
  297. @end