| 53 |
53 |
| 54 pp = pblock_key_param_create(rq->srvhdrs, pb_key_status, msg, strlen(msg)); |
54 pp = pblock_key_param_create(rq->srvhdrs, pb_key_status, msg, strlen(msg)); |
| 55 pblock_kpinsert(pb_key_status, pp, rq->srvhdrs); |
55 pblock_kpinsert(pb_key_status, pp, rq->srvhdrs); |
| 56 } |
56 } |
| 57 |
57 |
| |
58 NSAPI_PUBLIC const char * protocol_status_message(int code) { |
| |
59 cxstring s = protocol_status_message_s(code); |
| |
60 return s.ptr; |
| |
61 } |
| |
62 |
| 58 |
63 |
| 59 /* |
64 /* |
| 60 * http_status_message from Open Webserver (frame/http.cpp) |
65 * based on http_status_message from Open Webserver (frame/http.cpp) |
| 61 * TODO: replace, use cxmutstr |
|
| 62 */ |
66 */ |
| 63 NSAPI_PUBLIC const char * protocol_status_message (int code) |
67 cxstring protocol_status_message_s(int code) |
| 64 { |
68 { |
| 65 WS_ASSERT(code > 0); |
69 WS_ASSERT(code > 0); |
| 66 |
70 |
| 67 const char *r; |
71 cxstring r; |
| 68 |
72 |
| 69 switch (code) |
73 switch (code) |
| 70 { |
74 { |
| 71 case PROTOCOL_CONTINUE : // 100 |
75 case PROTOCOL_CONTINUE : // 100 |
| 72 r = "Continue"; |
76 r = CX_STR("Continue"); |
| 73 break; |
77 break; |
| 74 case PROTOCOL_SWITCHING: //101 |
78 case PROTOCOL_SWITCHING: //101 |
| 75 r = "Switching Protocols"; |
79 r = CX_STR("Switching Protocols"); |
| 76 break; |
80 break; |
| 77 case PROTOCOL_OK: // 200 |
81 case PROTOCOL_OK: // 200 |
| 78 r = "OK"; |
82 r = CX_STR("OK"); |
| 79 break; |
83 break; |
| 80 case PROTOCOL_CREATED: // 201 |
84 case PROTOCOL_CREATED: // 201 |
| 81 r = "Created"; |
85 r = CX_STR("Created"); |
| 82 break; |
86 break; |
| 83 case PROTOCOL_ACCEPTED: // 202 |
87 case PROTOCOL_ACCEPTED: // 202 |
| 84 r = "Accepted"; |
88 r = CX_STR("Accepted"); |
| 85 break; |
89 break; |
| 86 case PROTOCOL_NONAUTHORITATIVE: // 203 |
90 case PROTOCOL_NONAUTHORITATIVE: // 203 |
| 87 r = "Non-Authoritative Information"; |
91 r = CX_STR("Non-Authoritative Information"); |
| 88 break; |
92 break; |
| 89 case PROTOCOL_NO_CONTENT: //204 |
93 case PROTOCOL_NO_CONTENT: //204 |
| 90 /* There is another define to PROTOCOL_NO_RESPONSE for 204 in nsapi.h |
94 /* There is another define to PROTOCOL_NO_RESPONSE for 204 in nsapi.h |
| 91 The spec maps this to No Content. |
95 The spec maps this to No Content. |
| 92 Hence cahnging this to No Content |
96 Hence cahnging this to No Content |
| 93 */ |
97 */ |
| 94 r = "No Content"; |
98 r = CX_STR("No Content"); |
| 95 break; |
99 break; |
| 96 case PROTOCOL_RESET_CONTENT: // 205 |
100 case PROTOCOL_RESET_CONTENT: // 205 |
| 97 r = "Reset Content"; |
101 r = CX_STR("Reset Content"); |
| 98 break; |
102 break; |
| 99 case PROTOCOL_PARTIAL_CONTENT: // 206 |
103 case PROTOCOL_PARTIAL_CONTENT: // 206 |
| 100 r = "Partial Content"; |
104 r = CX_STR("Partial Content"); |
| 101 break; |
105 break; |
| 102 case PROTOCOL_MULTI_STATUS: // 207 |
106 case PROTOCOL_MULTI_STATUS: // 207 |
| 103 r = "Multi Status"; |
107 r = CX_STR("Multi Status"); |
| 104 break; |
108 break; |
| 105 case PROTOCOL_MULTIPLE_CHOICES: // 300 |
109 case PROTOCOL_MULTIPLE_CHOICES: // 300 |
| 106 r = "Multiple Choices"; |
110 r = CX_STR("Multiple Choices"); |
| 107 break; |
111 break; |
| 108 case PROTOCOL_MOVED_PERMANENTLY: // 301 |
112 case PROTOCOL_MOVED_PERMANENTLY: // 301 |
| 109 r = "Moved Permanently"; |
113 r = CX_STR("Moved Permanently"); |
| 110 break; |
114 break; |
| 111 case PROTOCOL_REDIRECT: // 302 |
115 case PROTOCOL_REDIRECT: // 302 |
| 112 r = "Moved Temporarily"; /* The spec actually says "Found" */ |
116 r = CX_STR("Moved Temporarily"); /* The spec actually says "Found" */ |
| 113 break; |
117 break; |
| 114 case PROTOCOL_SEE_OTHER: // 303 |
118 case PROTOCOL_SEE_OTHER: // 303 |
| 115 r = "See Other"; |
119 r = CX_STR("See Other"); |
| 116 break; |
120 break; |
| 117 case PROTOCOL_NOT_MODIFIED: // 304 |
121 case PROTOCOL_NOT_MODIFIED: // 304 |
| 118 r = "Use local copy"; /* The spec actually says "Not Modified" */ |
122 r = CX_STR("Use local copy"); /* The spec actually says "Not Modified" */ |
| 119 break; |
123 break; |
| 120 case PROTOCOL_USE_PROXY: // 305 |
124 case PROTOCOL_USE_PROXY: // 305 |
| 121 r = "Use Proxy"; |
125 r = CX_STR("Use Proxy"); |
| 122 break; |
126 break; |
| 123 case PROTOCOL_TEMPORARY_REDIRECT: // 307 |
127 case PROTOCOL_TEMPORARY_REDIRECT: // 307 |
| 124 r = "Temporary Redirect"; |
128 r = CX_STR("Temporary Redirect"); |
| 125 break; |
129 break; |
| 126 case PROTOCOL_BAD_REQUEST: // 400 |
130 case PROTOCOL_BAD_REQUEST: // 400 |
| 127 r = "Bad request"; |
131 r = CX_STR("Bad request"); |
| 128 break; |
132 break; |
| 129 case PROTOCOL_UNAUTHORIZED: // 401 |
133 case PROTOCOL_UNAUTHORIZED: // 401 |
| 130 r = "Unauthorized"; |
134 r = CX_STR("Unauthorized"); |
| 131 break; |
135 break; |
| 132 case PROTOCOL_PAYMENT_REQUIRED: // 402 |
136 case PROTOCOL_PAYMENT_REQUIRED: // 402 |
| 133 r = "Payment Required"; |
137 r = CX_STR("Payment Required"); |
| 134 break; |
138 break; |
| 135 case PROTOCOL_FORBIDDEN: // 403 |
139 case PROTOCOL_FORBIDDEN: // 403 |
| 136 r = "Forbidden"; |
140 r = CX_STR("Forbidden"); |
| 137 break; |
141 break; |
| 138 case PROTOCOL_NOT_FOUND: // 404 |
142 case PROTOCOL_NOT_FOUND: // 404 |
| 139 r = "Not found"; |
143 r = CX_STR("Not found"); |
| 140 break; |
144 break; |
| 141 case PROTOCOL_METHOD_NOT_ALLOWED: // 405 /* HTTP/1.1 */ |
145 case PROTOCOL_METHOD_NOT_ALLOWED: // 405 /* HTTP/1.1 */ |
| 142 r = "Method Not Allowed"; |
146 r = CX_STR("Method Not Allowed"); |
| 143 break; |
147 break; |
| 144 case PROTOCOL_NOT_ACCEPTABLE: // 406 /* HTTP/1.1 */ |
148 case PROTOCOL_NOT_ACCEPTABLE: // 406 /* HTTP/1.1 */ |
| 145 r = "Not Acceptable"; |
149 r = CX_STR("Not Acceptable"); |
| 146 break; |
150 break; |
| 147 case PROTOCOL_PROXY_UNAUTHORIZED: // 407 |
151 case PROTOCOL_PROXY_UNAUTHORIZED: // 407 |
| 148 r = "Proxy Authentication Required"; |
152 r = CX_STR("Proxy Authentication Required"); |
| 149 break; |
153 break; |
| 150 case PROTOCOL_REQUEST_TIMEOUT: // 408 /* HTTP/1.1 */ |
154 case PROTOCOL_REQUEST_TIMEOUT: // 408 /* HTTP/1.1 */ |
| 151 r = "Request Timeout"; |
155 r = CX_STR("Request Timeout"); |
| 152 break; |
156 break; |
| 153 case PROTOCOL_CONFLICT: // 409 |
157 case PROTOCOL_CONFLICT: // 409 |
| 154 r = "Conflict"; /* HTTP/1.1 */ |
158 r = CX_STR("Conflict"); /* HTTP/1.1 */ |
| 155 break; |
159 break; |
| 156 case PROTOCOL_GONE: // 410 |
160 case PROTOCOL_GONE: // 410 |
| 157 r = "Gone"; /* HTTP/1.1 */ |
161 r = CX_STR("Gone"); /* HTTP/1.1 */ |
| 158 break; |
162 break; |
| 159 case PROTOCOL_LENGTH_REQUIRED: // 411 /* HTTP/1.1 */ |
163 case PROTOCOL_LENGTH_REQUIRED: // 411 /* HTTP/1.1 */ |
| 160 r = "Length Required"; |
164 r = CX_STR("Length Required"); |
| 161 break; |
165 break; |
| 162 case PROTOCOL_PRECONDITION_FAIL: // 412 /* HTTP/1.1 */ |
166 case PROTOCOL_PRECONDITION_FAIL: // 412 /* HTTP/1.1 */ |
| 163 r = "Precondition Failed"; |
167 r = CX_STR("Precondition Failed"); |
| 164 break; |
168 break; |
| 165 case PROTOCOL_ENTITY_TOO_LARGE: // 413 /* HTTP/1.1 */ |
169 case PROTOCOL_ENTITY_TOO_LARGE: // 413 /* HTTP/1.1 */ |
| 166 r = "Request Entity Too Large"; |
170 r = CX_STR("Request Entity Too Large"); |
| 167 break; |
171 break; |
| 168 case PROTOCOL_URI_TOO_LARGE: // 414 /* HTTP/1.1 */ |
172 case PROTOCOL_URI_TOO_LARGE: // 414 /* HTTP/1.1 */ |
| 169 r = "Request-URI Too Large"; |
173 r = CX_STR("Request-URI Too Large"); |
| 170 break; |
174 break; |
| 171 case PROTOCOL_UNSUPPORTED_MEDIA_TYPE: // 415 |
175 case PROTOCOL_UNSUPPORTED_MEDIA_TYPE: // 415 |
| 172 r = "Unsupported Media Type"; |
176 r = CX_STR("Unsupported Media Type"); |
| 173 break; |
177 break; |
| 174 case PROTOCOL_REQUESTED_RANGE_NOT_SATISFIABLE: // 416 |
178 case PROTOCOL_REQUESTED_RANGE_NOT_SATISFIABLE: // 416 |
| 175 r = "Requested range not satisfiable"; |
179 r = CX_STR("Requested range not satisfiable"); |
| 176 break; |
180 break; |
| 177 case PROTOCOL_EXPECTATION_FAILED: // 417 |
181 case PROTOCOL_EXPECTATION_FAILED: // 417 |
| 178 r = "Expectation Failed"; |
182 r = CX_STR("Expectation Failed"); |
| 179 break; |
183 break; |
| 180 case PROTOCOL_LOCKED: // 423 |
184 case PROTOCOL_LOCKED: // 423 |
| 181 r = "Locked"; |
185 r = CX_STR("Locked"); |
| 182 break; |
186 break; |
| 183 case PROTOCOL_FAILED_DEPENDENCY: // 424 |
187 case PROTOCOL_FAILED_DEPENDENCY: // 424 |
| 184 r = "Failed Dependency"; |
188 r = CX_STR("Failed Dependency"); |
| 185 break; |
189 break; |
| 186 case PROTOCOL_SERVER_ERROR: // 500 |
190 case PROTOCOL_SERVER_ERROR: // 500 |
| 187 r = "Server Error"; /* The spec actually says "Internal Server Error" */ |
191 r = CX_STR("Server Error"); /* The spec actually says "Internal Server Error" */ |
| 188 break; |
192 break; |
| 189 case PROTOCOL_NOT_IMPLEMENTED: // 501 |
193 case PROTOCOL_NOT_IMPLEMENTED: // 501 |
| 190 r = "Not Implemented"; |
194 r = CX_STR("Not Implemented"); |
| 191 break; |
195 break; |
| 192 case PROTOCOL_BAD_GATEWAY: // 502 |
196 case PROTOCOL_BAD_GATEWAY: // 502 |
| 193 r = "Bad Gateway"; |
197 r = CX_STR("Bad Gateway"); |
| 194 break; |
198 break; |
| 195 case PROTOCOL_SERVICE_UNAVAILABLE: // 503 |
199 case PROTOCOL_SERVICE_UNAVAILABLE: // 503 |
| 196 r = "Service Unavailable"; |
200 r = CX_STR("Service Unavailable"); |
| 197 break; |
201 break; |
| 198 case PROTOCOL_GATEWAY_TIMEOUT: // 504 /* HTTP/1.1 */ |
202 case PROTOCOL_GATEWAY_TIMEOUT: // 504 /* HTTP/1.1 */ |
| 199 r = "Gateway Timeout"; |
203 r = CX_STR("Gateway Timeout"); |
| 200 break; |
204 break; |
| 201 case PROTOCOL_VERSION_NOT_SUPPORTED: // 505 /* HTTP/1.1 */ |
205 case PROTOCOL_VERSION_NOT_SUPPORTED: // 505 /* HTTP/1.1 */ |
| 202 r = "HTTP Version Not Supported"; |
206 r = CX_STR("HTTP Version Not Supported"); |
| 203 break; |
207 break; |
| 204 case PROTOCOL_INSUFFICIENT_STORAGE: // 507 |
208 case PROTOCOL_INSUFFICIENT_STORAGE: // 507 |
| 205 r = "Insufficient Storage"; |
209 r = CX_STR("Insufficient Storage"); |
| 206 break; |
210 break; |
| 207 default: |
211 default: |
| 208 switch (code / 100) |
212 switch (code / 100) |
| 209 { |
213 { |
| 210 case 1: |
214 case 1: |
| 211 r = "Information"; |
215 r = CX_STR("Information"); |
| 212 break; |
216 break; |
| 213 case 2: |
217 case 2: |
| 214 r = "Success"; |
218 r = CX_STR("Success"); |
| 215 break; |
219 break; |
| 216 case 3: |
220 case 3: |
| 217 r = "Redirect"; |
221 r = CX_STR("Redirect"); |
| 218 break; |
222 break; |
| 219 case 4: |
223 case 4: |
| 220 r = "Client error"; |
224 r = CX_STR("Client error"); |
| 221 break; |
225 break; |
| 222 case 5: |
226 case 5: |
| 223 r = "Server error"; |
227 r = CX_STR("Server error"); |
| 224 break; |
228 break; |
| 225 default: |
229 default: |
| 226 r = "Unknown reason"; |
230 r = CX_STR("Unknown reason"); |
| 227 break; |
231 break; |
| 228 } |
232 } |
| 229 break; |
233 break; |
| 230 } |
234 } |
| 231 |
235 |