| 44 | } |
| 45 | |
| 46 | Result HttpAsyncClient::sendRequest(AsyncEventLoop& loop, const RequestOptions& options) |
| 47 | { |
| 48 | RequestPreset preset; |
| 49 | preset.method = options.method; |
| 50 | preset.url = options.url; |
| 51 | preset.keepAlive = options.keepAlive; |
| 52 | preset.autoSend = true; |
| 53 | preset.headers = options.headers; |
| 54 | |
| 55 | switch (options.bodyMode) |
| 56 | { |
| 57 | case RequestOptions::BodyMode::None: break; |
| 58 | case RequestOptions::BodyMode::Span: |
| 59 | preset.bodyMode = RequestPreset::BodyMode::Span; |
| 60 | preset.bodySpan = options.body; |
| 61 | break; |
| 62 | case RequestOptions::BodyMode::Stream: |
| 63 | SC_TRY_MSG(options.bodyStream != nullptr, "HttpAsyncClient RequestOptions body stream missing"); |
| 64 | preset.bodyMode = RequestPreset::BodyMode::Stream; |
| 65 | preset.bodyStream = options.bodyStream; |
| 66 | preset.contentLength = options.bodyLength; |
| 67 | break; |
| 68 | case RequestOptions::BodyMode::Multipart: |
| 69 | SC_TRY_MSG(options.multipartWriter != nullptr, "HttpAsyncClient RequestOptions multipart writer missing"); |
| 70 | preset.bodyMode = RequestPreset::BodyMode::Multipart; |
| 71 | preset.multipartWriter = options.multipartWriter; |
| 72 | break; |
| 73 | } |
| 74 | |
| 75 | return startRequest(loop, preset); |
| 76 | } |
| 77 | |
| 78 | Result HttpAsyncClient::get(AsyncEventLoop& loop, StringSpan url, bool keepAlive) |
| 79 | { |