00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _ATX_HTTP_H_
00011 #define _ATX_HTTP_H_
00012
00013
00014
00015
00016 #include "AtxTypes.h"
00017 #include "AtxDefs.h"
00018 #include "AtxResults.h"
00019 #include "AtxUtils.h"
00020 #include "AtxInterfaces.h"
00021 #include "AtxProperties.h"
00022 #include "AtxStreams.h"
00023
00024
00025
00026
00027 typedef struct ATX_HttpClient ATX_HttpClient;
00028 typedef struct ATX_HttpMessage ATX_HttpMessage;
00029 typedef struct ATX_HttpRequest ATX_HttpRequest;
00030 typedef struct ATX_HttpResponse ATX_HttpResponse;
00031
00032
00033
00034
00035 #define ATX_HTTP_METHOD_GET "GET"
00036 #define ATX_HTTP_METHOD_HEAD "HEAD"
00037 #define ATX_HTTP_METHOD_POST "POST"
00038
00039 #define ATX_HTTP_CLIENT_OPTION_FOLLOW_REDIRECT "FollowRedirect"
00040
00041
00042
00043
00044 #ifdef __cplusplus
00045 extern "C" {
00046 #endif
00047
00048 extern ATX_Result
00049 ATX_HttpMessage_Create(ATX_HttpMessage** message);
00050
00051 extern ATX_Result
00052 ATX_HttpMessage_Destroy(ATX_HttpMessage* message);
00053
00054 extern ATX_Result
00055 ATX_HttpMessage_SetHeader(ATX_HttpMessage* message,
00056 ATX_CString name,
00057 ATX_CString value);
00058
00059 extern const ATX_String*
00060 ATX_HttpMessage_GetHeader(const ATX_HttpMessage* message,
00061 ATX_CString name);
00062
00063 extern ATX_Result
00064 ATX_HttpMessage_SetProtocol(ATX_HttpMessage* message,
00065 ATX_CString protocol);
00066
00067 extern const ATX_String*
00068 ATX_HttpMessage_GetProtocol(const ATX_HttpMessage* message);
00069
00070 extern ATX_Result
00071 ATX_HttpMessage_SetBody(ATX_HttpMessage* message,
00072 ATX_InputStream* stream,
00073 ATX_Size content_length);
00074
00075 extern ATX_Result
00076 ATX_HttpMessage_GetBody(const ATX_HttpMessage* message,
00077 ATX_InputStream* stream,
00078 ATX_Size* content_length);
00079
00080 extern ATX_Result
00081 ATX_HttpRequest_Create(ATX_CString method,
00082 ATX_CString uri,
00083 ATX_HttpRequest** request);
00084
00085 extern ATX_Result
00086 ATX_HttpRequest_Destroy(ATX_HttpRequest* request);
00087
00088 extern const ATX_String*
00089 ATX_HttpRequest_GetMethod(const ATX_HttpRequest* request);
00090
00091 extern ATX_Result
00092 ATX_HttpRequest_SetMethod(ATX_HttpRequest* request,
00093 ATX_CString method);
00094
00095 extern ATX_Result
00096 ATX_HttpRequest_Emit(const ATX_HttpRequest* request,
00097 ATX_OutputStream* stream);
00098
00099 extern ATX_Result
00100 ATX_HttpResponse_CreateFromStream(ATX_InputStream* stream,
00101 ATX_HttpResponse** request);
00102
00103 extern ATX_Result
00104 ATX_HttpResponse_Destroy(ATX_HttpResponse* response);
00105
00106 extern ATX_Result
00107 ATX_HttpResponse_Emit(const ATX_HttpResponse* response,
00108 ATX_OutputStream* stream);
00109
00110 extern ATX_UInt32
00111 ATX_HttpResponse_GetStatusCode(const ATX_HttpResponse* response);
00112
00113 extern const ATX_String*
00114 ATX_HttpResponse_GetReasonPhrase(const ATX_HttpResponse* response);
00115
00116 extern ATX_Result
00117 ATX_HttpClient_Create(ATX_HttpClient** client);
00118
00119 extern ATX_Result
00120 ATX_HttpClient_Destroy(ATX_HttpClient* client);
00121
00122 extern ATX_Result
00123 ATX_HttpClient_SetOptionBool(ATX_HttpClient* client,
00124 ATX_CString option,
00125 ATX_Boolean value);
00126
00127 extern ATX_Result
00128 ATX_HttpClient_GetOptionBool(const ATX_HttpClient* client,
00129 ATX_CString option,
00130 ATX_Boolean* value);
00131
00132 extern ATX_Result
00133 ATX_HttpClient_SendRequest(ATX_HttpClient* client,
00134 ATX_HttpRequest* request,
00135 ATX_HttpResponse** response);
00136
00137 #ifdef __cplusplus
00138 }
00139 #endif
00140
00141 #endif