/* * Copyright 2021 Haiku Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _NETSERVICES_DEFS_H_ #define _NETSERVICES_DEFS_H_ #include #include #include namespace BPrivate { namespace Network { // Standard exceptions class BUnsupportedProtocol : public BError { public: BUnsupportedProtocol(const char* origin, BUrl url, BStringList supportedProtocols); BUnsupportedProtocol(BString origin, BUrl url, BStringList supportedProtocols); virtual const char* Message() const noexcept override; const BUrl& Url() const; const BStringList& SupportedProtocols() const; private: BUrl fUrl; BStringList fSupportedProtocols; }; class BInvalidUrl : public BError { public: BInvalidUrl(const char* origin, BUrl url); BInvalidUrl(BString origin, BUrl url); virtual const char* Message() const noexcept override; const BUrl& Url() const; private: BUrl fUrl; }; class BNetworkRequestError : public BError { public: enum ErrorType { HostnameError, NetworkError, ProtocolError, SystemError, Canceled }; BNetworkRequestError(const char* origin, ErrorType type, status_t errorCode, const BString& customMessage = BString()); BNetworkRequestError(const char* origin, ErrorType type, const BString& customMessage = BString()); virtual const char* Message() const noexcept override; virtual BString DebugMessage() const override; ErrorType Type() const noexcept; status_t ErrorCode() const noexcept; const char* CustomMessage() const noexcept; private: ErrorType fErrorType; status_t fErrorCode = B_OK; BString fCustomMessage; }; BString encode_to_base64(const BString& string); namespace UrlEvent { enum { HostNameResolved = '_NHR', ConnectionOpened = '_NCO', UploadProgress = '_NUP', ResponseStarted = '_NRS', DownloadProgress = '_NDP', BytesWritten = '_NBW', RequestCompleted = '_NRC', DebugMessage = '_NDB' }; } namespace UrlEventData { extern const char* Id; extern const char* HostName; extern const char* NumBytes; extern const char* TotalBytes; extern const char* Success; extern const char* DebugType; extern const char* DebugMessage; enum { DebugInfo = '_DBI', DebugWarning = '_DBW', DebugError = '_DBE' }; } // namespace UrlEventData } // namespace Network } // namespace BPrivate #endif