| 1228 | } |
| 1229 | |
| 1230 | Result HttpAsyncClientRequest::startRequest(HttpParser::Method value, StringSpan valueURL) |
| 1231 | { |
| 1232 | static constexpr const char* HeaderSpaceFinished = "HttpAsyncClientRequest header space is finished"; |
| 1233 | |
| 1234 | SC_TRY_MSG(not headersSent, "Headers already sent"); |
| 1235 | SC_TRY_MSG(responseHeaders.writtenBytes() == 0, "startRequest must be the first call"); |
| 1236 | |
| 1237 | method = value; |
| 1238 | url = valueURL.sizeInBytes() > 0 ? valueURL : StringSpan("/"); |
| 1239 | |
| 1240 | switch (method) |
| 1241 | { |
| 1242 | case HttpParser::Method::HttpGET: SC_TRY(responseHeaders.appendLiteral("GET ", HeaderSpaceFinished)); break; |
| 1243 | case HttpParser::Method::HttpHEAD: SC_TRY(responseHeaders.appendLiteral("HEAD ", HeaderSpaceFinished)); break; |
| 1244 | case HttpParser::Method::HttpPUT: SC_TRY(responseHeaders.appendLiteral("PUT ", HeaderSpaceFinished)); break; |
| 1245 | case HttpParser::Method::HttpPOST: SC_TRY(responseHeaders.appendLiteral("POST ", HeaderSpaceFinished)); break; |
| 1246 | case HttpParser::Method::HttpPATCH: SC_TRY(responseHeaders.appendLiteral("PATCH ", HeaderSpaceFinished)); break; |
| 1247 | case HttpParser::Method::HttpDELETE: SC_TRY(responseHeaders.appendLiteral("DELETE ", HeaderSpaceFinished)); break; |
| 1248 | case HttpParser::Method::HttpOPTIONS: SC_TRY(responseHeaders.appendLiteral("OPTIONS ", HeaderSpaceFinished)); break; |
| 1249 | } |
| 1250 | |
| 1251 | SC_TRY(responseHeaders.append(url, HeaderSpaceFinished)); |
| 1252 | SC_TRY(responseHeaders.appendLiteral(" HTTP/1.1\r\n", HeaderSpaceFinished)); |
| 1253 | return Result(true); |
| 1254 | } |
| 1255 | |
| 1256 | Result HttpAsyncClientRequest::setExpectedBodyLength(uint64_t value) |
| 1257 | { |