/* * Copyright 2022 Haiku Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _B_HTTP_SESSION_H_ #define _B_HTTP_SESSION_H_ #include #include class BUrl; namespace BPrivate { namespace Network { class BHttpRequest; class BHttpResult; class BHttpSession { public: // Constructors & Destructor BHttpSession(); BHttpSession(const BHttpSession&) noexcept; BHttpSession(BHttpSession&&) noexcept = delete; ~BHttpSession() noexcept; // Assignment operators BHttpSession& operator=(const BHttpSession&) noexcept; BHttpSession& operator=(BHttpSession&&) noexcept = delete; // Requests BHttpResult Execute(BHttpRequest&& request, std::unique_ptr target = nullptr, BMessenger observer = BMessenger()); void Cancel(int32 identifier); void Cancel(const BHttpResult& request); // Concurrency limits void SetMaxConnectionsPerHost(size_t maxConnections); void SetMaxHosts(size_t maxConnections); private: struct Redirect; class Request; class Impl; std::shared_ptr fImpl; }; namespace UrlEvent { enum { HttpStatus = '_HST', HttpFields = '_HHF', CertificateError = '_CER', HttpRedirect = '_HRE' }; } namespace UrlEventData { extern const char* HttpStatusCode; extern const char* SSLCertificate; extern const char* SSLMessage; extern const char* HttpRedirectUrl; } } // namespace Network } // namespace BPrivate #endif // _B_HTTP_SESSION_H_