2012-12-30 14:23:49 +08:00
/*
2014-02-07 10:44:04 +08:00
Copyright ( c ) 2012 - 2014 , Pierre - Olivier Latour
2012-12-30 14:23:49 +08:00
All rights reserved .
Redistribution and use in source and binary forms , with or without
modification , are permitted provided that the following conditions are met :
* Redistributions of source code must retain the above copyright
notice , this list of conditions and the following disclaimer .
* Redistributions in binary form must reproduce the above copyright
notice , this list of conditions and the following disclaimer in the
documentation and / or other materials provided with the distribution .
2013-12-30 11:02:01 +08:00
* The name of Pierre - Olivier Latour may not be used to endorse
or promote products derived from this software without specific
prior written permission .
2012-12-30 14:23:49 +08:00
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS IS " AND
ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2013-12-30 11:02:01 +08:00
DISCLAIMED . IN NO EVENT SHALL PIERRE - OLIVIER LATOUR BE LIABLE FOR ANY
2012-12-30 14:23:49 +08:00
DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES
( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ;
LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
2014-04-08 10:27:58 +08:00
# import "GCDWebServerHTTPStatusCodes.h"
2012-12-30 14:23:49 +08:00
2014-04-07 01:44:53 +08:00
@ protocol GCDWebServerBodyReader < NSObject >
2014-04-07 03:09:44 +08:00
- ( BOOL ) open : ( NSError * * ) error ; // Return NO on error ("error" is guaranteed to be non-NULL)
- ( NSData * ) readData : ( NSError * * ) error ; // Must return nil on error or empty NSData if at end ("error" is guaranteed to be non-NULL)
2014-04-07 01:44:53 +08:00
- ( void ) close ;
@ end
@ interface GCDWebServerResponse : NSObject < GCDWebServerBodyReader >
2014-04-08 10:29:33 +08:00
@ property ( nonatomic , copy ) NSString * contentType ; // Default is nil i.e. no body (must be set if a body is present)
@ property ( nonatomic ) NSUInteger contentLength ; // Default is NSNotFound i.e. undefined (if a body is present but length is undefined, chunked transfer encoding will be enabled)
2012-12-30 14:23:49 +08:00
@ property ( nonatomic ) NSInteger statusCode ; // Default is 200
@ property ( nonatomic ) NSUInteger cacheControlMaxAge ; // Default is 0 seconds i.e. "no-cache"
2014-04-08 03:21:19 +08:00
@ property ( nonatomic , getter = isGZipContentEncodingEnabled ) BOOL gzipContentEncodingEnabled ; // Default is disabled
2012-12-30 14:23:49 +08:00
+ ( GCDWebServerResponse * ) response ;
2012-12-31 10:48:25 +08:00
- ( id ) init ;
2014-04-08 10:29:33 +08:00
- ( void ) setValue : ( NSString * ) value forAdditionalHeader : ( NSString * ) header ; // Pass nil value to remove header
- ( BOOL ) hasBody ; // Convenience method that checks if "contentType" is not nil
2012-12-30 14:23:49 +08:00
@ end
@ interface GCDWebServerResponse ( Extensions )
2012-12-31 10:48:25 +08:00
+ ( GCDWebServerResponse * ) responseWithStatusCode : ( NSInteger ) statusCode ;
2014-04-08 10:27:58 +08:00
+ ( GCDWebServerResponse * ) responseWithClientError : ( GCDWebServerClientErrorHTTPStatusCode ) error ;
+ ( GCDWebServerResponse * ) responseWithServerError : ( GCDWebServerServerErrorHTTPStatusCode ) error ;
2012-12-31 10:48:25 +08:00
+ ( GCDWebServerResponse * ) responseWithRedirect : ( NSURL * ) location permanent : ( BOOL ) permanent ;
- ( id ) initWithStatusCode : ( NSInteger ) statusCode ;
2014-04-08 10:27:58 +08:00
- ( id ) initWithClientError : ( GCDWebServerClientErrorHTTPStatusCode ) error ;
- ( id ) initWithServerError : ( GCDWebServerServerErrorHTTPStatusCode ) error ;
2012-12-31 10:48:25 +08:00
- ( id ) initWithRedirect : ( NSURL * ) location permanent : ( BOOL ) permanent ;
2012-12-30 14:23:49 +08:00
@ end