Sane C++ Libraries
C++ Platform Abstraction Libraries
HttpClient.h
1// Copyright (c) Stefano Cristiano
2// SPDX-License-Identifier: MIT
3#pragma once
4#include "../Async/Async.h"
5#include "../Containers/SmallVector.h"
6#include "../Socket/Socket.h"
7#include "../Strings/String.h"
8namespace SC
9{
11struct HttpClient;
12} // namespace SC
13
16
19
22{
27 [[nodiscard]] Result get(AsyncEventLoop& loop, StringView url);
28
30
32 [[nodiscard]] StringView getResponse() const;
33
34 [[nodiscard]] Result setCustomDebugName(const StringView debugName)
35 {
36 return Result(customDebugName.assign(debugName));
37 }
38
39 private:
40 void onConnected(AsyncSocketConnect::Result& result);
41 void onAfterSend(AsyncSocketSend::Result& result);
42 void onAfterRead(AsyncSocketReceive::Result& result);
43
45
46 String customDebugName;
47
48 // TODO: can we find a way to put all async requests in a single tagged union when they're not used in parallel?
49 AsyncSocketConnect connectAsync;
50 AsyncSocketSend sendAsync;
51 AsyncSocketReceive receiveAsync;
52 SocketDescriptor clientSocket;
53 AsyncEventLoop* eventLoop = nullptr;
54};
Asynchronous I/O (files, sockets, timers, processes, fs events, threads wake-up) (see Async) AsyncEve...
Definition: Async.h:933
Helper holding CompletionData for a specific AsyncRequest-derived class.
Definition: Async.h:254
Starts a socket connect operation, connecting to a remote endpoint.
Definition: Async.h:513
Callback result for AsyncSocketReceive.
Definition: Async.h:619
Starts a socket receive operation, receiving bytes from a remote endpoint.
Definition: Async.h:607
Starts a socket send operation, sending bytes to a remote endpoint.
Definition: Async.h:551
Wraps function pointers, member functions and lambdas without ever allocating.
Definition: Function.h:50
Http async client.
Definition: HttpClient.h:22
Result get(AsyncEventLoop &loop, StringView url)
Setups this client to execute a GET request on the given url.
Delegate< HttpClient & > callback
The callback that is called after GET operation succeeded.
Definition: HttpClient.h:29
StringView getResponse() const
Get the response StringView sent by the server.
An ascii string used as boolean result. SC_TRY macro forwards errors to caller.
Definition: Result.h:12
A Vector that can hold up to N elements inline and > N on heap.
Definition: SmallVector.h:27
Low-level OS socket handle.
Definition: SocketDescriptor.h:147
A non-modifiable owning string with associated encoding.
Definition: String.h:30
bool assign(StringView sv)
Assigns a StringView to this String, replacing existing contents.
Definition: String.h:175
Non-owning view over a range of characters with UTF Encoding.
Definition: StringView.h:47