/home/dko/projects/mobilec/trunk/src/include/mtp_http.h

Go to the documentation of this file.
00001 /* SVN FILE INFO
00002  * $Revision: 201 $ : Last Committed Revision
00003  * $Date: 2008年07月11日 16:23:56 -0700 (2008年7月11日) $ : Last Committed Date */
00004 /*[
00005  * Copyright (c) 2007 Integration Engineering Laboratory
00006  University of California, Davis
00007  *
00008  * Permission to use, copy, and distribute this software and its
00009  * documentation for any purpose with or without fee is hereby granted,
00010  * provided that the above copyright notice appear in all copies and
00011  * that both that copyright notice and this permission notice appear
00012  * in supporting documentation.
00013  *
00014  * Permission to modify the software is granted, but not the right to
00015  * distribute the complete modified source code. Modifications are to
00016  * be distributed as patches to the released version. Permission to
00017  * distribute binaries produced by compiling modified sources is granted,
00018  * provided you
00019  * 1. distribute the corresponding source modifications from the
00020  * released version in the form of a patch file along with the binaries,
00021  * 2. add special version identification to distinguish your version
00022  * in addition to the base release version number,
00023  * 3. provide your name and address as the primary contact for the
00024  * support of your modified version, and
00025  * 4. retain our contact information in regard to use of the base
00026  * software.
00027  * Permission to distribute the released version of the source code along
00028  * with corresponding source modifications in the form of a patch file is
00029  * granted with same provisions 2 through 4 for binary distributions.
00030  *
00031  * This software is provided "as is" without express or implied warranty
00032  * to the extent permitted by applicable law.
00033 ]*/
00034 
00035 /* The MobileC http parser.
00036  *
00037  * We should probably switch to libwww someday, but not today. */
00038 
00039 #ifndef _MTP_HTTP_H_
00040 #define _MTP_HTTP_H_
00041 
00045 enum http_status_code_e
00046 {
00047 /*Informational*/
00048 CONTINUE=100,
00049 SWITCHING_PROTOCOLS,
00050 PROCESSING,
00051 /*Success*/
00052 OK=200,
00053 CREATED,
00054 ACCEPTED,
00055 NON_AUTHORITATIVE_INFORMATION,
00056 NO_CONTENT,
00057 RESET_CONTENT,
00058 PARTIAL_CONTENT,
00059 MULTI_STATUS,
00060 /*Error codes*/
00061 BAD_REQUEST=400,
00062 UNAUTHORIZED,
00063 PAYMENT_REQUIRED,
00064 FORBIDDEN,
00065 NOT_FOUND,
00066 METHOD_NOT_ALLOWED,
00067 NOT_ACCEPTABLE,
00068 PROXY_AUTHENTICATION_REQUIRED,
00069 REQUEST_TIMEOUT,
00070 CONFLICT,
00071 GONE,
00072 LENGTH_REQUIRED,
00073 PRECONDITION_FAILED,
00074 REQUST_ENTITY_TOO_LARGE,
00075 REQUEST_URI_TOO_LONG,
00076 UNSUPPORTED_MEDIA_TYPE,
00077 REQUESTED_RANGE_NOT_SATISFIABLE,
00078 EXPECTATION_FAILED,
00079 UNPROCESSABLE_ENTITY,
00080 LOCKED,
00081 FAILED_DEPENDANCY,
00082 UNORDERED_COLLECTION,
00083 UPGRADE_REQUIRED,
00084 RETRY_WITH
00085 };
00086 
00090 enum http_performative_e
00091 {
00092 HTTP_PERFORMATIVE_UNDEF=-1,
00093 HTTP_PERFORMATIVE_ZERO=0,
00094 HTTP_HEAD,
00095 HTTP_GET,
00096 HTTP_POST,
00097 HTTP_PUT,
00098 HTTP_DELETE,
00099 HTTP_TRACE,
00100 HTTP_OPTIONS,
00101 HTTP_CONNECT,
00102 HTTP_RESPONSE,
00103 HTTP_NUM_PERFORMATIVES
00104 };
00105 
00106 typedef struct mtp_http_content_s
00107 {
00108 char* content_type;
00109 void* data;
00110 } mtp_http_content_t;
00111 
00112 typedef struct mtp_http_s
00113 {
00114 enum http_status_code_e http_status_code;
00115 enum http_performative_e http_performative;
00116 char* http_version;
00117 char* host;
00118 char* return_code;
00119 char* target; /*Target location for post/put/get etc */
00120 
00121 char* date;
00122 char* server;
00123 char* accept_ranges;
00124 char* content_length;
00125 char* connection;
00126 char* content_type;
00127 char* user_agent;
00128 
00129 char* cache_control;
00130 char* mime_version;
00131 
00132 /* The following are only valid if the message is a response */
00133 int response_code;
00134 char* response_string;
00135 
00136 /* The message may be a multi-part message */
00137 /* FIXME: We don't support nested multi-part messages for now */
00138 int message_parts;
00139 char* boundary;
00140 struct mtp_http_content_s* content;
00141 
00142 /* The following is not a part of the HTTP standard, but is useful. */
00143 int header_length;
00144 } mtp_http_t;
00145 typedef mtp_http_t* mtp_http_p;
00146 
00147 #define SOCKET_INPUT_SIZE 4096
00148 
00158 const char* http_GetExpression(const char* string, char** expr);
00159 
00173 int http_ParseExpression(
00174 const char* expression_string,
00175 char** name,
00176 char** value
00177 );
00178 
00179 const char* http_ParseRequest(
00180 mtp_http_p http,
00181 const char* string
00182 );
00183 
00184 const char*
00185 http_GetToken(const char* string, char** token);
00186 
00187 int
00188 mtp_http_Destroy(mtp_http_p http);
00189 
00190 struct connection_s;
00191 int
00192 mtp_http_InitializeFromConnection(struct mtp_http_s *http, struct connection_s *connection);
00193 
00194 mtp_http_p 
00195 mtp_http_New(void);
00196 
00197 struct connection;
00198 const char* 
00199 mtp_http_ParseHeader(struct mtp_http_s* http, const char* string);
00200 
00201 int 
00202 mtp_http_Parse(struct mtp_http_s* http, const char* string);
00203 
00204 struct message_s;
00205 int 
00206 mtp_http_ComposeMessage(struct message_s* message);
00207 
00208 struct message_s* 
00209 mtp_http_CreateMessage(
00210 mtp_http_t* mtp_http,
00211 char* hostname,
00212 int port );
00213 #endif

Generated on Tue Oct 28 17:03:22 2008 for Mobile-C by doxygen 1.5.5

AltStyle によって変換されたページ (->オリジナル) /