AFHTTPRequestOperationManager+Synchronous.m 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // AFHTTPRequestOperationManager+Synchronous.m
  2. //
  3. // Copyright (c) 2013 Paul Melnikow and other contributors
  4. //
  5. // Permission is hereby granted, free of charge, to any person obtaining a copy
  6. // of this software and associated documentation files (the "Software"), to deal
  7. // in the Software without restriction, including without limitation the rights
  8. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9. // copies of the Software, and to permit persons to whom the Software is
  10. // furnished to do so, subject to the following conditions:
  11. //
  12. // The above copyright notice and this permission notice shall be included in
  13. // all copies or substantial portions of the Software.
  14. //
  15. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  21. // THE SOFTWARE.
  22. #import "AFHTTPRequestOperationManager+Synchronous.h"
  23. #import "AFNetworking.h"
  24. @implementation AFHTTPRequestOperationManager (Synchronous)
  25. - (id)synchronouslyPerformMethod:(NSString *)method
  26. URLString:(NSString *)URLString
  27. parameters:(NSDictionary *)parameters
  28. operation:(AFHTTPRequestOperation *__autoreleasing *)operationPtr
  29. error:(NSError *__autoreleasing *)outError {
  30. NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters error:nil];
  31. AFHTTPRequestOperation *op = [self HTTPRequestOperationWithRequest:request
  32. success:nil
  33. failure:nil];
  34. [op start];
  35. [op waitUntilFinished];
  36. if (operationPtr != nil) *operationPtr = op;
  37. // Must call responseObject before checking the error
  38. id responseObject = [op responseObject];
  39. if (outError != nil) *outError = [op error];
  40. return responseObject;
  41. }
  42. - (id)syncGET:(NSString *)URLString
  43. parameters:(NSDictionary *)parameters
  44. operation:(AFHTTPRequestOperation *__autoreleasing *)operationPtr
  45. error:(NSError *__autoreleasing *)outError
  46. {
  47. return [self synchronouslyPerformMethod:@"GET" URLString:URLString parameters:parameters operation:operationPtr error:outError];
  48. }
  49. - (id)syncPOST:(NSString *)URLString
  50. parameters:(NSDictionary *)parameters
  51. operation:(AFHTTPRequestOperation *__autoreleasing *) operationPtr
  52. error:(NSError *__autoreleasing *) outError
  53. {
  54. return [self synchronouslyPerformMethod:@"POST" URLString:URLString parameters:parameters operation:operationPtr error:outError];
  55. }
  56. - (id)syncPUT:(NSString *)URLString
  57. parameters:(NSDictionary *)parameters
  58. operation:(AFHTTPRequestOperation *__autoreleasing *) operationPtr
  59. error:(NSError *__autoreleasing *) outError
  60. {
  61. return [self synchronouslyPerformMethod:@"PUT" URLString:URLString parameters:parameters operation:operationPtr error:outError];
  62. }
  63. - (id)syncDELETE:(NSString *)URLString
  64. parameters:(NSDictionary *)parameters
  65. operation:(AFHTTPRequestOperation *__autoreleasing *) operationPtr
  66. error:(NSError *__autoreleasing *) outError
  67. {
  68. return [self synchronouslyPerformMethod:@"DELETE" URLString:URLString parameters:parameters operation:operationPtr error:outError];
  69. }
  70. - (id)syncPATCH:(NSString *)URLString
  71. parameters:(NSDictionary *)parameters
  72. operation:(AFHTTPRequestOperation *__autoreleasing *) operationPtr
  73. error:(NSError *__autoreleasing *) outError
  74. {
  75. return [self synchronouslyPerformMethod:@"PATCH" URLString:URLString parameters:parameters operation:operationPtr error:outError];
  76. }
  77. @end