[Issue #465] Enforcing non-nil path constraint, and making it so that path is relative to the path of the client baseURL
[Issue #465] Providing additional explanation about how to manage the lifecycle of enqueued operations
This commit is contained in:
parent
b10f66062c
commit
d3ae3d128f
2 changed files with 14 additions and 3 deletions
|
|
@ -300,7 +300,9 @@ typedef enum {
|
|||
Cancels all operations in the HTTP client's operation queue whose URLs match the specified HTTP method and path.
|
||||
|
||||
@param method The HTTP method to match for the cancelled requests, such as `GET`, `POST`, `PUT`, or `DELETE`. If `nil`, all request operations with URLs matching the path will be cancelled.
|
||||
@param path The path to match for the cancelled requests.
|
||||
@param path The path appended to the HTTP client base URL to match against the cancelled requests. This parameter must not be `nil`.
|
||||
|
||||
@discussion This method only cancels `AFHTTPRequestOperations` whose request URL matches the HTTP client base URL with the path appended. For complete control over the lifecycle of enqueued operations, you can access the `operationQueue` property directly, which allows you to, for instance, cancel operations filtered by a predicate, or simply use `-cancelAllRequests`. Note that the operation queue may include non-HTTP operations, so be sure to check the type before attempting to directly introspect an operation's `request` property.
|
||||
*/
|
||||
- (void)cancelAllHTTPOperationsWithMethod:(NSString *)method path:(NSString *)path;
|
||||
|
||||
|
|
|
|||
|
|
@ -525,13 +525,22 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) {}
|
|||
[self.operationQueue addOperation:operation];
|
||||
}
|
||||
|
||||
- (void)cancelAllHTTPOperationsWithMethod:(NSString *)method path:(NSString *)path {
|
||||
- (void)cancelAllHTTPOperationsWithMethod:(NSString *)method
|
||||
path:(NSString *)path
|
||||
{
|
||||
NSCParameterAssert(path);
|
||||
|
||||
NSString *URLStringToMatched = [[[self requestWithMethod:(method ?: @"GET") path:path parameters:nil] URL] absoluteString];
|
||||
|
||||
for (NSOperation *operation in [self.operationQueue operations]) {
|
||||
if (![operation isKindOfClass:[AFHTTPRequestOperation class]]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((!method || [method isEqualToString:[[(AFHTTPRequestOperation *)operation request] HTTPMethod]]) && [path isEqualToString:[[[(AFHTTPRequestOperation *)operation request] URL] path]]) {
|
||||
BOOL hasMatchingMethod = !method || [method isEqualToString:[[(AFHTTPRequestOperation *)operation request] HTTPMethod]];
|
||||
BOOL hasMatchingURL = [[[[(AFHTTPRequestOperation *)operation request] URL] absoluteString] isEqualToString:URLStringToMatched];
|
||||
|
||||
if (hasMatchingMethod && hasMatchingURL) {
|
||||
[operation cancel];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue