//
// HMHTTPClient.m
//
// Created by Hesham Abd-Elmegid on 4/10/13.
// Copyright (c) 2013 Startappz. All rights reserved.
//
#import "HMHTTPClient.h"
@implementation
HMHTTPClient
-
(
void
)
getPath:
(
NSString
*
)
path
parameters:
(
NSDictionary
*
)
parameters
success:
(
void
(
^
)(
AFHTTPRequestOperation
*
operation
,
id
responseObject
))
success
failure:
(
void
(
^
)(
AFHTTPRequestOperation
*
operation
,
NSError
*
error
))
failure
{
NSMutableURLRequest
*
request
=
[
self
requestWithMethod
:
@"GET"
path
:
path
parameters
:
parameters
];
[
request
setCachePolicy
:
NSURLRequestReturnCacheDataElseLoad
];
AFHTTPRequestOperation
*
operation
=
[
self
HTTPRequestOperationWithRequest
:
request
success
:
success
failure
:
failure
];
[
self
enqueueHTTPRequestOperation
:
operation
];
}
-
(
void
)
postPath:
(
NSString
*
)
path
parameters:
(
NSDictionary
*
)
parameters
success:
(
void
(
^
)(
AFHTTPRequestOperation
*
operation
,
id
responseObject
))
success
failure:
(
void
(
^
)(
AFHTTPRequestOperation
*
operation
,
NSError
*
error
))
failure
{
NSMutableURLRequest
*
request
=
[
self
requestWithMethod
:
@"POST"
path
:
path
parameters
:
parameters
];
[
request
setCachePolicy
:
NSURLRequestReturnCacheDataElseLoad
];
AFHTTPRequestOperation
*
operation
=
[
self
HTTPRequestOperationWithRequest
:
request
success
:
success
failure
:
failure
];
[
self
enqueueHTTPRequestOperation
:
operation
];
}
-
(
void
)
putPath:
(
NSString
*
)
path
parameters:
(
NSDictionary
*
)
parameters
success:
(
void
(
^
)(
AFHTTPRequestOperation
*
operation
,
id
responseObject
))
success
failure:
(
void
(
^
)(
AFHTTPRequestOperation
*
operation
,
NSError
*
error
))
failure
{
NSMutableURLRequest
*
request
=
[
self
requestWithMethod
:
@"PUT"
path
:
path
parameters
:
parameters
];
[
request
setCachePolicy
:
NSURLRequestReturnCacheDataElseLoad
];
AFHTTPRequestOperation
*
operation
=
[
self
HTTPRequestOperationWithRequest
:
request
success
:
success
failure
:
failure
];
[
self
enqueueHTTPRequestOperation
:
operation
];
}
-
(
void
)
deletePath:
(
NSString
*
)
path
parameters:
(
NSDictionary
*
)
parameters
success:
(
void
(
^
)(
AFHTTPRequestOperation
*
operation
,
id
responseObject
))
success
failure:
(
void
(
^
)(
AFHTTPRequestOperation
*
operation
,
NSError
*
error
))
failure
{
NSMutableURLRequest
*
request
=
[
self
requestWithMethod
:
@"DELETE"
path
:
path
parameters
:
parameters
];
[
request
setCachePolicy
:
NSURLRequestReturnCacheDataElseLoad
];
AFHTTPRequestOperation
*
operation
=
[
self
HTTPRequestOperationWithRequest
:
request
success
:
success
failure
:
failure
];
[
self
enqueueHTTPRequestOperation
:
operation
];
}
-
(
AFHTTPRequestOperation
*
)
HTTPRequestOperationWithRequest:
(
NSURLRequest
*
)
urlRequest
success:
(
void
(
^
)(
AFHTTPRequestOperation
*
operation
,
id
responseObject
))
success
failure:
(
void
(
^
)(
AFHTTPRequestOperation
*
operation
,
NSError
*
error
))
failure
{
AFHTTPRequestOperation
*
operation
=
[
super
HTTPRequestOperationWithRequest
:
urlRequest
success
:
success
failure
:^
(
AFHTTPRequestOperation
*
operation
,
NSError
*
error
)
{
if
(
error
.
code
==
kCFURLErrorNotConnectedToInternet
)
{
NSCachedURLResponse
*
cachedResponse
=
[[
NSURLCache
sharedURLCache
]
cachedResponseForRequest
:
urlRequest
];
if
(
cachedResponse
!=
nil
&&
[[
cachedResponse
data
]
length
]
>
0
)
{
id
JSON
=
[
NSJSONSerialization
JSONObjectWithData
:
cachedResponse
.
data
options
:
0
error
:&
error
];
success
(
operation
,
JSON
);
}
else
{
failure
(
operation
,
error
);
}
}
else
{
failure
(
operation
,
error
);
}
}];
return
operation
;
}
@end