base class with common parts for backend specific implementations More...
#include <base_connection.hpp>
Public Member Functions | |
| BaseConnection (const std::string &address, const std::map< std::string, std::string > &headerEntries) | |
| const std::string & | url () const final |
| return API url | |
| std::expected< std::string, HttpError > | fetch (const std::string &request) final |
| Perform a single HTTP request. | |
| std::expected< std::string, HttpError > | fetch (const std::string &request, IPaginationStrategy &strategy) final |
| Perform requests with automatic pagination. | |
| std::expected< Response, HttpError > | fetchResponse (const std::string &url) final |
| Perform a single HTTP request returning the full response. | |
| CancellationToken | fetch (const std::string &request, FetchCallback onSuccess, ErrorCallback onError={}) final |
| Perform an HTTP GET request asynchronously. | |
| CancellationToken | fetch (const std::string &request, IPaginationStrategy &strategy, BodyCallback onSuccess, ErrorCallback onError={}) final |
| Perform paginated requests asynchronously. | |
| std::string | get (const std::string &) final |
| perform a request to api | |
| virtual Response | fetchPage (const std::string &request)=0 |
Public Member Functions inherited from cpp_restapi::IConnection | |
| virtual | ~IConnection ()=default |
| virtual std::unique_ptr< ISseConnection > | subscribe (const std::string &request, EventCallback callback)=0 |
| Subscribe to an SSE endpoint. | |
Protected Member Functions | |
| virtual void | fetchAsync (const std::string &fullUrl, CancellationToken cancel, FetchCallback onSuccess, ErrorCallback onError)=0 |
| const std::map< std::string, std::string > & | getHeaderEntries () const |
| const std::string & | address () const |
Additional Inherited Members | |
Public Types inherited from cpp_restapi::IConnection | |
| using | EventCallback = std::function<void(const SseEvent&)> |
| using | FetchCallback = std::function<void(Response)> |
| using | BodyCallback = std::function<void(std::string)> |
| using | ErrorCallback = std::function<void(HttpError)> |
base class with common parts for backend specific implementations
|
explicit |
|
protected |
|
finalvirtual |
Perform a single HTTP request.
| request | relative API path (e.g. "api/v1/disks") |
Returns std::unexpected(HttpError) when:
Implements cpp_restapi::IConnection.
Reimplemented in cpp_restapi::QtBackend::Connection, and cpp_restapi::ThreadedConnection.
|
finalvirtual |
Perform an HTTP GET request asynchronously.
Non-blocking. onSuccess is called with the full response when the request completes successfully; onError is called with an HttpError if the request fails. The callbacks may be invoked from a background thread (non-Qt backends) or from the Qt event-loop thread (Qt backend) — callers must handle thread-safety accordingly.
| request | relative API path (e.g. "users/octocat") |
| onSuccess | called with Response{body, headers, statusCode} on success |
| onError | called with an HttpError on failure (optional) |
Implements cpp_restapi::IConnection.
Reimplemented in cpp_restapi::QtBackend::Connection, and cpp_restapi::ThreadedConnection.
|
finalvirtual |
Perform requests with automatic pagination.
| request | relative API path |
| strategy | pagination strategy defining how to discover next page and merge results |
Implements cpp_restapi::IConnection.
Reimplemented in cpp_restapi::QtBackend::Connection, and cpp_restapi::ThreadedConnection.
|
finalvirtual |
Perform paginated requests asynchronously.
Non-blocking. Pages are fetched sequentially; once all pages have been collected the merged result is delivered via onSuccess. On any page failure onError is called and fetching stops.
| request | relative API path (e.g. "repos/owner/name/issues") |
| strategy | pagination strategy (next-page discovery and merge) |
| onSuccess | called with the merged body string on success |
| onError | called with an HttpError on failure (optional) |
Implements cpp_restapi::IConnection.
Reimplemented in cpp_restapi::QtBackend::Connection, and cpp_restapi::ThreadedConnection.
|
protectedpure virtual |
Implemented in cpp_restapi::QtBackend::Connection, and cpp_restapi::ThreadedConnection.
|
pure virtual |
|
finalvirtual |
Perform a single HTTP request returning the full response.
| url | full URL to fetch |
Implements cpp_restapi::IConnection.
|
finalvirtual |
perform a request to api
| request | api request. For example "users/SomeUserName/repos" |
Implements cpp_restapi::IConnection.
|
protected |
|
finalvirtual |
return API url
Implements cpp_restapi::IConnection.