source: cheroxy/trunk/src/CRXHttpRequest.cpp@ 26

Last change on this file since 26 was 26, checked in by cheese, 12 years ago

#1 add function to reset request and response

File size: 3.6 KB
RevLine 
[6]1/**
2 * CRXHttpRequest.cpp
3 */
4#ifdef _WIN32
5# pragma warning (disable:4996)
6#endif
7
8#include "CRXHttpRequest.h"
9
10#include <stdio.h>
11#include <stdlib.h>
12
13CRXHttpRequest::CRXHttpRequest (void)
[18]14 : mPort (0)
[6]15{
[26]16 /*----------------------------------------------------------------*/
17 /*----------------------------------------------------------------*/
[6]18}
19
[26]20CRXHttpRequest::~CRXHttpRequest (void)
21{
22 /*----------------------------------------------------------------*/
23 Reset ();
24 /*----------------------------------------------------------------*/
25}
26
[6]27void
[26]28CRXHttpRequest::Reset (void)
29{
30 /*----------------------------------------------------------------*/
31 ResetMessage ();
32 /*----------------------------------------------------------------*/
33}
34
35void
[24]36CRXHttpRequest::SetHeader (const char * aHttpRequest)
[6]37{
[26]38 /*----------------------------------------------------------------*/
[6]39 SetMessage (aHttpRequest);
[26]40 /*----------------------------------------------------------------*/
[6]41}
42
43std::string
[24]44CRXHttpRequest::GetHeader (void) const
[6]45{
[26]46 /*----------------------------------------------------------------*/
47 /*----------------------------------------------------------------*/
48
[6]49 return GetMessage ();
50}
51
52std::string
53CRXHttpRequest::GetURL (void) const
54{
[26]55 /*----------------------------------------------------------------*/
56 /*----------------------------------------------------------------*/
57
[6]58 return mUrl;
59}
60
61std::string
62CRXHttpRequest::GetHost (void) const
63{
[26]64 /*----------------------------------------------------------------*/
65 /*----------------------------------------------------------------*/
66
[6]67 return mHost;
68}
69
70int
71CRXHttpRequest::GetPort (void) const
72{
[26]73 /*----------------------------------------------------------------*/
74 /*----------------------------------------------------------------*/
75
[6]76 return mPort;
77}
78
79CRXHttpRequest &
80CRXHttpRequest::operator = (const char * aHttpMessage)
81{
[26]82 /*----------------------------------------------------------------*/
[24]83 SetHeader (aHttpMessage);
[26]84 /*----------------------------------------------------------------*/
85
[6]86 return *this;
87}
88
89void
90CRXHttpRequest::Parse (void)
91{
92 std::string aHttpRequestUri = "";
93
94 char aMethod[64] = {0x00, };
[17]95 char aUrl[1024 * 4] = {0x00, };
[6]96 char aHttpVersion[64] = {0x00, };
97
98 char aProtocol[32] = {0x00, };
99 char aHostBuffer[512] = {0x00, };
100 char aHost[512] = {0x00, };
101 char aPortBuffer[32] = {0x00, };
102 int aPort = 0;
103
104 /*----------------------------------------------------------------*/
[24]105 aHttpRequestUri = GetHeader ().substr (0, mHttpMessage.find ('\r'));
[6]106
107 /*----------------------------------------------------------------
108 * 1. separate first line to <METHOD>, <URL> and <VERSION>
109 *----------------------------------------------------------------*/
110 sscanf (aHttpRequestUri.c_str (), "%[^ ] %[^ ] %[^ ]\r\n", aMethod, aUrl, aHttpVersion);
111 mMethod.assign (aMethod);
112 mUrl.assign (aUrl);
113 mHttpVersion.assign (aHttpVersion);
114
115 /*----------------------------------------------------------------
116 * 2. separate <URL> to <PROTOCOL> and <HOST>
117 *----------------------------------------------------------------*/
118 sscanf (mUrl.c_str (), "%[^://]://%[^/]", aProtocol, aHostBuffer);
119 mProtocol.assign (aProtocol);
120
121 /*----------------------------------------------------------------
122 * 3. separate <HOST> to <HOSTNAME>:<PORT>
123 *----------------------------------------------------------------*/
124 sscanf (aHostBuffer, "%[^:]:%s", aHost, aPortBuffer);
125 mHost.assign (aHost);
126 aPort = atoi (aPortBuffer);
127
128 mPort = aPort == 0 ? 80 : aPort;
129 /*----------------------------------------------------------------*/
130}
Note: See TracBrowser for help on using the repository browser.