mirror of
https://github.com/zhigang1992/RestKit.git
synced 2026-03-29 22:43:24 +08:00
120 lines
4.4 KiB
Objective-C
120 lines
4.4 KiB
Objective-C
//
|
|
// RKHTTPUtilities.h
|
|
// RestKit
|
|
//
|
|
// Created by Blake Watters on 8/24/12.
|
|
// Copyright (c) 2012 RestKit. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
/**
|
|
HTTP methods for requests
|
|
*/
|
|
typedef enum RKRequestMethod {
|
|
RKRequestMethodInvalid = -1,
|
|
RKRequestMethodGET,
|
|
RKRequestMethodPOST,
|
|
RKRequestMethodPUT,
|
|
RKRequestMethodDELETE,
|
|
RKRequestMethodHEAD,
|
|
RKRequestMethodPATCH,
|
|
RKRequestMethodOPTIONS
|
|
} RKRequestMethod; // RKHTTPMethod? RKStringFromHTTPMethod... RKHTTPMethodFromString
|
|
|
|
/**
|
|
Returns the corresponding string for value for a given HTTP request method.
|
|
|
|
For example, given `RKRequestMethodGET` would return `@"GET"`.
|
|
*/
|
|
NSString * RKStringFromRequestMethod(RKRequestMethod);
|
|
|
|
/**
|
|
Returns the corresponding request method value for a given string.
|
|
|
|
For example, given `@"PUT"` would return `@"RKRequestMethodPUT"`
|
|
*/
|
|
RKRequestMethod RKRequestMethodFromString(NSString *);
|
|
|
|
/**
|
|
The HTTP status code classes
|
|
|
|
See http://tools.ietf.org/html/rfc2616#section-10
|
|
*/
|
|
enum {
|
|
RKStatusCodeClassInformational = 100,
|
|
RKStatusCodeClassSuccessful = 200,
|
|
RKStatusCodeClassRedirection = 300,
|
|
RKStatusCodeClassClientError = 400,
|
|
RKStatusCodeClassServerError = 500
|
|
};
|
|
typedef NSUInteger RKStatusCodeClass;
|
|
|
|
/**
|
|
Creates a new range covering the status codes in the given class.
|
|
|
|
@param statusCodeClass The status code class to create a range covering.
|
|
@return A new range covering the status codes in the given class.
|
|
*/
|
|
NSRange RKStatusCodeRangeForClass(RKStatusCodeClass statusCodeClass);
|
|
|
|
/**
|
|
Creates a new index set covering the status codes in the given class.
|
|
|
|
@param statusCodeClass The status code class to create an index set covering.
|
|
@return A new index set covering the status codes in the given class.
|
|
*/
|
|
NSIndexSet *RKStatusCodeIndexSetForClass(RKStatusCodeClass statusCodeClass);
|
|
|
|
// TODO: Implement these guys...
|
|
//NSString * RKStringFromStatusCode(NSInteger statusCode);
|
|
//NSInteger RKStatusCodeFromString(NSString *statusCode);
|
|
|
|
/**
|
|
Parse HTTP Date: http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1
|
|
*/
|
|
NSDate *RKDateFromHTTPDateString(NSString *);
|
|
|
|
/**
|
|
Returns the cache expiration data from a dictionary of HTTP response headers as appropriate for the given status code. If the status code is not cachable, `nil` is returned.
|
|
|
|
@param headers The HTTP response headers from which to extract the cache expiration date.
|
|
@param statusCode The HTTP response status code of the response.
|
|
@return The expiration date as specified by the cache headers or `nil` if none was found.
|
|
*/
|
|
NSDate *RKHTTPCacheExpirationDateFromHeadersWithStatusCode(NSDictionary *headers, NSInteger statusCode);
|
|
|
|
/**
|
|
Returns a Boolean value that indicates if a given URL is relative to another URL.
|
|
|
|
This method does not rely on the `baseURL` method of `NSURL` as it only indicates a relationship between the initialization of two URL objects. The relativity of the given URL is assessed by evaluating a prefix match of the URL's absolute string value with the absolute string value of the potential base URL.
|
|
|
|
@param URL The URL to assess the relativity of.
|
|
@param baseURL The base URL to determine if the given URL is relative to.
|
|
@return `YES` is URL is relative to the base URL, else `NO`.
|
|
*/
|
|
BOOL RKURLIsRelativeToURL(NSURL *URL, NSURL *baseURL);
|
|
|
|
/**
|
|
Returns a string object containing the relative path and query string of a given URL object and a base URL that the given URL is relative to.
|
|
|
|
If the given URL is found not to be relative to the baseURL, `nil` is returned.
|
|
|
|
@param URL The URL to retrieve the relative path and query string of.
|
|
@param baseURL The base URL to be omitted from the returned path and query string.
|
|
@return A string containing the relative path and query parameters.
|
|
*/
|
|
NSString *RKPathAndQueryStringFromURLRelativeToURL(NSURL *URL, NSURL *baseURL);
|