/Mobile/iPhone/StoffiRemote/StoffiRemote/RESTClient.m

http://yet-another-music-application.googlecode.com/ · Objective C · 63 lines · 39 code · 15 blank · 9 comment · 2 complexity · 20eb6b5e2a1de445f5f1933b93089a6b MD5 · raw file

  1. //
  2. // RESTClient.m
  3. // StoffiRemote
  4. //
  5. // Created by Fredrik Gadnell on 9/18/11.
  6. // Copyright 2011 __MyCompanyName__. All rights reserved.
  7. //
  8. #import "RESTClient.h"
  9. #import "RESTClientSimulator.h"
  10. @implementation RESTClient
  11. @synthesize baseURL, shouldSimulateResponse;
  12. - (id)init {
  13. self = [super init];
  14. if (self) {
  15. baseURL = @"";
  16. shouldSimulateResponse = NO;
  17. }
  18. return self;
  19. }
  20. + (RESTClient *)sharedClient
  21. {
  22. static dispatch_once_t once;
  23. static RESTClient *sharedClient;
  24. dispatch_once(&once, ^ {sharedClient = [[RESTClient alloc] init];});
  25. return sharedClient;
  26. }
  27. - (RESTRequest *)get:(NSString *)path delegate:(id<RestRequestDelegate>)delegate {
  28. return [self requestWithPath:path httpMethod:@"GET" delegate:delegate];
  29. }
  30. - (RESTRequest *)post:(NSString *)path delegate:(id<RestRequestDelegate>)delegate {
  31. return [self requestWithPath:path httpMethod:@"POST" delegate:delegate];
  32. }
  33. - (RESTRequest *)put:(NSString *)path delegate:(id<RestRequestDelegate>)delegate {
  34. return [self requestWithPath:path httpMethod:@"PUT" delegate:delegate];
  35. }
  36. - (RESTRequest *)del:(NSString *)path delegate:(id<RestRequestDelegate>)delegate {
  37. return [self requestWithPath:path httpMethod:@"DELETE" delegate:delegate];
  38. }
  39. - (RESTRequest *)requestWithPath:(NSString *)path httpMethod:(NSString *)method delegate:(id<RestRequestDelegate>)delegate {
  40. // Simulated request
  41. if (shouldSimulateResponse) {
  42. return [[RESTClientSimulator sharedClientSimulator] simulatedRequestWithPath:path httpMethod:method delegate:delegate];
  43. }
  44. // Normal request
  45. NSString *url = [baseURL stringByAppendingString:path];
  46. return [RESTRequest restRequestWithURL:url method:method delegate:delegate];
  47. }
  48. @end