xref: /haiku/headers/private/netservices2/NetServicesDefs.h (revision 60355daec9e7cfc545b831841a46bf3d9f8868fc)
1ec7d71e6SNiels Sascha Reedijk /*
2ec7d71e6SNiels Sascha Reedijk  * Copyright 2021 Haiku Inc. All rights reserved.
3ec7d71e6SNiels Sascha Reedijk  * Distributed under the terms of the MIT License.
4ec7d71e6SNiels Sascha Reedijk  */
5ec7d71e6SNiels Sascha Reedijk 
6ec7d71e6SNiels Sascha Reedijk #ifndef _NETSERVICES_DEFS_H_
7ec7d71e6SNiels Sascha Reedijk #define _NETSERVICES_DEFS_H_
8ec7d71e6SNiels Sascha Reedijk 
9ec7d71e6SNiels Sascha Reedijk 
10ec7d71e6SNiels Sascha Reedijk #include <ErrorsExt.h>
11ec7d71e6SNiels Sascha Reedijk #include <StringList.h>
12ec7d71e6SNiels Sascha Reedijk #include <Url.h>
13ec7d71e6SNiels Sascha Reedijk 
14ec7d71e6SNiels Sascha Reedijk 
15ec7d71e6SNiels Sascha Reedijk namespace BPrivate {
16ec7d71e6SNiels Sascha Reedijk 
17ec7d71e6SNiels Sascha Reedijk namespace Network {
18ec7d71e6SNiels Sascha Reedijk 
19ec7d71e6SNiels Sascha Reedijk 
20ec7d71e6SNiels Sascha Reedijk // Standard exceptions
21ec7d71e6SNiels Sascha Reedijk class BUnsupportedProtocol : public BError {
22ec7d71e6SNiels Sascha Reedijk public:
23ec7d71e6SNiels Sascha Reedijk 							BUnsupportedProtocol(const char* origin, BUrl url,
24ec7d71e6SNiels Sascha Reedijk 								BStringList supportedProtocols);
25ec7d71e6SNiels Sascha Reedijk 							BUnsupportedProtocol(BString origin, BUrl url,
26ec7d71e6SNiels Sascha Reedijk 								BStringList supportedProtocols);
27ec7d71e6SNiels Sascha Reedijk 
28ec7d71e6SNiels Sascha Reedijk 	virtual	const char*		Message() const noexcept override;
29ec7d71e6SNiels Sascha Reedijk 
30ec7d71e6SNiels Sascha Reedijk 	const	BUrl&			Url() const;
31ec7d71e6SNiels Sascha Reedijk 	const	BStringList&	SupportedProtocols() const;
32ec7d71e6SNiels Sascha Reedijk 
33ec7d71e6SNiels Sascha Reedijk private:
34ec7d71e6SNiels Sascha Reedijk 			BUrl			fUrl;
35ec7d71e6SNiels Sascha Reedijk 			BStringList		fSupportedProtocols;
36ec7d71e6SNiels Sascha Reedijk };
37ec7d71e6SNiels Sascha Reedijk 
38ec7d71e6SNiels Sascha Reedijk 
39ec7d71e6SNiels Sascha Reedijk class BInvalidUrl : public BError {
40ec7d71e6SNiels Sascha Reedijk public:
41ec7d71e6SNiels Sascha Reedijk 							BInvalidUrl(const char* origin, BUrl url);
42ec7d71e6SNiels Sascha Reedijk 							BInvalidUrl(BString origin, BUrl url);
43ec7d71e6SNiels Sascha Reedijk 
44ec7d71e6SNiels Sascha Reedijk 	virtual	const char*		Message() const noexcept override;
45ec7d71e6SNiels Sascha Reedijk 
46ec7d71e6SNiels Sascha Reedijk 	const	BUrl&			Url() const;
47ec7d71e6SNiels Sascha Reedijk 
48ec7d71e6SNiels Sascha Reedijk private:
49ec7d71e6SNiels Sascha Reedijk 			BUrl			fUrl;
50ec7d71e6SNiels Sascha Reedijk };
51ec7d71e6SNiels Sascha Reedijk 
52ec7d71e6SNiels Sascha Reedijk 
533b2aa6c3SNiels Sascha Reedijk class BNetworkRequestError : public BError {
543b2aa6c3SNiels Sascha Reedijk public:
553b2aa6c3SNiels Sascha Reedijk 	enum ErrorType {
563b2aa6c3SNiels Sascha Reedijk 		HostnameError,
573b2aa6c3SNiels Sascha Reedijk 		NetworkError,
583b2aa6c3SNiels Sascha Reedijk 		ProtocolError,
593b2aa6c3SNiels Sascha Reedijk 		SystemError,
603b2aa6c3SNiels Sascha Reedijk 		Canceled
613b2aa6c3SNiels Sascha Reedijk 	};
623b2aa6c3SNiels Sascha Reedijk 
633b2aa6c3SNiels Sascha Reedijk 							BNetworkRequestError(const char* origin, ErrorType type,
643b2aa6c3SNiels Sascha Reedijk 								status_t errorCode = B_OK);
653b2aa6c3SNiels Sascha Reedijk 
663b2aa6c3SNiels Sascha Reedijk 	virtual	const char*		Message() const noexcept override;
673b2aa6c3SNiels Sascha Reedijk 	virtual	BString			DebugMessage() const override;
683b2aa6c3SNiels Sascha Reedijk 
693b2aa6c3SNiels Sascha Reedijk 			ErrorType		Type() const noexcept;
703b2aa6c3SNiels Sascha Reedijk 			status_t		ErrorCode() const noexcept;
713b2aa6c3SNiels Sascha Reedijk 
723b2aa6c3SNiels Sascha Reedijk private:
733b2aa6c3SNiels Sascha Reedijk 			ErrorType		fErrorType;
743b2aa6c3SNiels Sascha Reedijk 			status_t		fErrorCode = B_OK;
753b2aa6c3SNiels Sascha Reedijk };
763b2aa6c3SNiels Sascha Reedijk 
773b2aa6c3SNiels Sascha Reedijk 
78f9d9d202SNiels Sascha Reedijk BString encode_to_base64(const BString& string);
79f9d9d202SNiels Sascha Reedijk 
80f9d9d202SNiels Sascha Reedijk 
81*60355daeSNiels Sascha Reedijk namespace UrlEvent {
82*60355daeSNiels Sascha Reedijk 	enum {
83*60355daeSNiels Sascha Reedijk 		HostNameResolved = '_NHR',
84*60355daeSNiels Sascha Reedijk 		ConnectionOpened = '_NCO',
85*60355daeSNiels Sascha Reedijk 		UploadProgress = '_NUP',
86*60355daeSNiels Sascha Reedijk 		ResponseStarted = '_NRS',
87*60355daeSNiels Sascha Reedijk 		DownloadProgress = '_NDP',
88*60355daeSNiels Sascha Reedijk 		BytesWritten = '_NBW',
89*60355daeSNiels Sascha Reedijk 		RequestCompleted = '_NRC',
90*60355daeSNiels Sascha Reedijk 		DebugMessage = '_NDB'
91*60355daeSNiels Sascha Reedijk 	};
92*60355daeSNiels Sascha Reedijk }
93*60355daeSNiels Sascha Reedijk 
94*60355daeSNiels Sascha Reedijk 
95*60355daeSNiels Sascha Reedijk namespace UrlEventData {
96*60355daeSNiels Sascha Reedijk 	extern const char* Id;
97*60355daeSNiels Sascha Reedijk 	extern const char* HostName;
98*60355daeSNiels Sascha Reedijk 	extern const char* NumBytes;
99*60355daeSNiels Sascha Reedijk 	extern const char* TotalBytes;
100*60355daeSNiels Sascha Reedijk 	extern const char* Success;
101*60355daeSNiels Sascha Reedijk 	extern const char* DebugType;
102*60355daeSNiels Sascha Reedijk 	extern const char* DebugMessage;
103*60355daeSNiels Sascha Reedijk }
104*60355daeSNiels Sascha Reedijk 
105ec7d71e6SNiels Sascha Reedijk }
106ec7d71e6SNiels Sascha Reedijk 
107ec7d71e6SNiels Sascha Reedijk }
108ec7d71e6SNiels Sascha Reedijk 
109ec7d71e6SNiels Sascha Reedijk #endif
110