23 #include <core/exceptions/software.h>
24 #include <webview/error_reply.h>
44 if (((
int)code < 400) || ((
int)code > 599)) {
49 case HTTP_BAD_REQUEST:
50 _title =
"400 BAD_REQUEST";
51 _body =
"<h1>400 BAD_REQUEST</h1>";
54 case HTTP_UNAUTHORIZED:
55 _title =
"401 UNAUTHORIZED";
56 _body =
"<h1>401 UNAUTHORIZED</h1>";
59 case HTTP_PAYMENT_REQUIRED:
60 _title =
"402 PAYMENT_REQUIRED";
61 _body =
"<h1>402 PAYMENT_REQUIRED</h1>";
65 _title =
"403 FORBIDDEN";
66 _body =
"<h1>403 FORBIDDEN</h1>";
70 _title =
"404 NOT_FOUND";
71 _body =
"<h1>404 NOT_FOUND</h1>";
74 case HTTP_METHOD_NOT_ALLOWED:
75 _title =
"405 METHOD_NOT_ALLOWED";
76 _body =
"<h1>405 METHOD_NOT_ALLOWED</h1>";
79 case HTTP_METHOD_NOT_ACCEPTABLE:
80 _title =
"406 METHOD_NOT_ACCEPTABLE";
81 _body =
"<h1>406 METHOD_NOT_ACCEPTABLE</h1>";
84 case HTTP_PROXY_AUTHENTICATION_REQUIRED:
85 _title =
"407 PROXY_AUTHENTICATION_REQUIRED";
86 _body =
"<h1>407 PROXY_AUTHENTICATION_REQUIRED</h1>";
89 case HTTP_REQUEST_TIMEOUT:
90 _title =
"408 REQUEST_TIMEOUT";
91 _body =
"<h1>408 REQUEST_TIMEOUT</h1>";
95 _title =
"409 CONFLICT";
96 _body =
"<h1>409 CONFLICT</h1>";
101 _body =
"<h1>410 GONE</h1>";
104 case HTTP_LENGTH_REQUIRED:
105 _title =
"411 LENGTH_REQUIRED";
106 _body =
"<h1>411 LENGTH_REQUIRED</h1>";
109 case HTTP_PRECONDITION_FAILED:
110 _title =
"412 PRECONDITION_FAILED";
111 _body =
"<h1>412 PRECONDITION_FAILED</h1>";
114 case HTTP_REQUEST_ENTITY_TOO_LARGE:
115 _title =
"413 REQUEST_ENTITY_TOO_LARGE";
116 _body =
"<h1>413 REQUEST_ENTITY_TOO_LARGE</h1>";
119 case HTTP_REQUEST_URI_TOO_LONG:
120 _title =
"414 REQUEST_URI_TOO_LONG";
121 _body =
"<h1>414 REQUEST_URI_TOO_LONG</h1>";
124 case HTTP_UNSUPPORTED_MEDIA_TYPE:
125 _title =
"415 UNSUPPORTED_MEDIA_TYPE";
126 _body =
"<h1>415 UNSUPPORTED_MEDIA_TYPE</h1>";
129 case HTTP_REQUESTED_RANGE_NOT_SATISFIABLE:
130 _title =
"416 REQUESTED_RANGE_NOT_SATISFIABLE";
131 _body =
"<h1>416 REQUESTED_RANGE_NOT_SATISFIABLE</h1>";
134 case HTTP_EXPECTATION_FAILED:
135 _title =
"417 EXPECTATION_FAILED";
136 _body =
"<h1>417 EXPECTATION_FAILED</h1>";
139 case HTTP_UNPROCESSABLE_ENTITY:
140 _title =
"422 UNPROCESSABLE_ENTITY";
141 _body =
"<h1>422 UNPROCESSABLE_ENTITY</h1>";
145 _title =
"423 LOCKED";
146 _body =
"<h1>423 LOCKED</h1>";
149 case HTTP_FAILED_DEPENDENCY:
150 _title =
"424 FAILED_DEPENDENCY";
151 _body =
"<h1>424 FAILED_DEPENDENCY</h1>";
154 case HTTP_UNORDERED_COLLECTION:
155 _title =
"425 UNORDERED_COLLECTION";
156 _body =
"<h1>425 UNORDERED_COLLECTION</h1>";
159 case HTTP_UPGRADE_REQUIRED:
160 _title =
"426 UPGRADE_REQUIRED";
161 _body =
"<h1>426 UPGRADE_REQUIRED</h1>";
164 case HTTP_RETRY_WITH:
165 _title =
"449 RETRY_WITH";
166 _body =
"<h1>449 RETRY_WITH</h1>";
169 case HTTP_INTERNAL_SERVER_ERROR:
170 _title =
"500 INTERNAL_SERVER_ERROR";
171 _body =
"<h1>500 INTERNAL_SERVER_ERROR</h1>";
174 case HTTP_NOT_IMPLEMENTED:
175 _title =
"501 NOT_IMPLEMENTED";
176 _body =
"<h1>501 NOT_IMPLEMENTED</h1>";
179 case HTTP_BAD_GATEWAY:
180 _title =
"502 BAD_GATEWAY";
181 _body =
"<h1>502 BAD_GATEWAY</h1>";
184 case HTTP_SERVICE_UNAVAILABLE:
185 _title =
"503 SERVICE_UNAVAILABLE";
186 _body =
"<h1>503 SERVICE_UNAVAILABLE</h1>";
189 case HTTP_GATEWAY_TIMEOUT:
190 _title =
"504 GATEWAY_TIMEOUT";
191 _body =
"<h1>504 GATEWAY_TIMEOUT</h1>";
194 case HTTP_HTTP_VERSION_NOT_SUPPORTED:
195 _title =
"505 HTTP_VERSION_NOT_SUPPORTED";
196 _body =
"<h1>505 HTTP_VERSION_NOT_SUPPORTED</h1>";
199 case HTTP_VARIANT_ALSO_NEGOTIATES:
200 _title =
"506 VARIANT_ALSO_NEGOTIATES";
201 _body =
"<h1>506 VARIANT_ALSO_NEGOTIATES</h1>";
204 case HTTP_INSUFFICIENT_STORAGE:
205 _title =
"507 INSUFFICIENT_STORAGE";
206 _body =
"<h1>507 INSUFFICIENT_STORAGE</h1>";
209 case HTTP_BANDWIDTH_LIMIT_EXCEEDED:
210 _title =
"509 BANDWIDTH_LIMIT_EXCEEDED";
211 _body =
"<h1>509 BANDWIDTH_LIMIT_EXCEEDED</h1>";
214 case HTTP_NOT_EXTENDED:
215 _title =
"510 NOT_EXTENDED";
216 _body =
"<h1>510 NOT_EXTENDED</h1>";
220 _title =
"Unknown Error";
221 _body =
"<h1>Unknown Error</h1>";
227 va_start(args, format);
229 if (vasprintf(&tmp, format, args) != -1) {
230 _body += std::string(
"<br />\n<b>") + tmp +
"</b>\n";