CFx SDK Documentation  2023 SP0
FxNANetworkReply.h
Go to the documentation of this file.
1 //
2 // (C) Copyright 2005-2022 by Graebert GmbH.
3 //
4 // Permission to use, copy, modify, and distribute this software in
5 // object code form for any purpose and without fee is hereby granted,
6 // provided that the above copyright notice appears in all copies and
7 // that both that copyright notice and the limited warranty and
8 // restricted rights notice below appear in all supporting
9 // documentation.
10 //
11 // GRAEBERT PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
12 // GRAEBERT SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
13 // MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. GRAEBERT GMBH
14 // DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
15 // UNINTERRUPTED OR ERROR FREE.
16 
17 #pragma once
18 
19 #include "../FxCommonFramework.h"
20 #include "../UI/FxUIObject.h"
21 #include "../UI/FxUISignal.h"
22 #include "FxNANetworkRequest.h"
23 
24 #include <QtCore/QByteArray>
25 #include <QtCore/QList>
26 #include <QtCore/QPair>
27 #include <QtCore/QSharedPointer>
28 #include <QtCore/QString>
29 #include <QtCore/QVariant>
30 
31 #include <cstddef>
32 
33 using CFxNAByteArray = QByteArray;
34 template< typename T >
35 using CFxNAList = QList< T >;
36 template< typename T1, typename T2 >
37 using CFxNAPair = QPair< T1, T2 >;
38 using CFxNAString = QString;
39 using CFxNAVariant = QVariant;
40 
45 {
46 public:
51  {
52  NoError = 0,
53 
54  // network layer errors [relating to the destination server] (1-99):
55  ConnectionRefusedError = 1,
66  UnknownNetworkError = 99,
67 
68  // proxy errors (101-199):
69  ProxyConnectionRefusedError = 101,
74  UnknownProxyError = 199,
75 
76  // content errors (201-299):
77  ContentAccessDenied = 201,
84  UnknownContentError = 299,
85 
86  // protocol errors
87  ProtocolUnknownError = 301,
89  ProtocolFailure = 399,
90 
91  // Server side errors (401-499)
92  InternalServerError = 401,
95  UnknownServerError = 499
96  };
97 
103  CFxNANetworkReply() = delete;
104 
106  explicit CFxNANetworkReply( FxNativeHandle nativeReply );
107 
109  CFxNANetworkReply( std::nullptr_t ) = delete;
110 
113 
119  void setRequest( const CFxNANetworkRequest& request );
120 
126  const CFxNANetworkRequest& request() const;
127 
133  bool isFinished() const;
134 
140  bool isRunning() const;
141 
148 
155 
163  long long bytesAvailable() const;
164 
171 
177  long long pos() const;
178 
186  bool seek( long long pos );
187 
196 
205 
213  bool hasRawHeader( const CFxNAByteArray& headerName ) const;
214 
222  CFxNAByteArray rawHeader( const CFxNAByteArray& headerName ) const;
223 
232 
235 
236  // Slots
237 
243  void abort();
244 
245  // Signals
246 
252  CFxUISignal<void( long long bytesReceived, long long bytesTotal )>& downloadProgress();
253 
261  CFxUISignal<void( long long bytesSent, long long bytesTotal )>& uploadProgress();
262 
269 
276 
282  CFxUISignal<void( void )>& finished();
283 
284  //...
285 };
#define COMMONUI_API
QByteArray CFxNAByteArray
QString CFxNAString
QList< T > CFxNAList
QVariant CFxNAVariant
QPair< T1, T2 > CFxNAPair
QObject * FxNativeHandle
Definition: FxUIObject.h:91
NetworkError error() const
CFxNAVariant attribute(CFxNANetworkRequest::Attribute code) const
void setRequest(const CFxNANetworkRequest &request)
CFxUISignal< void(void)> & encrypted()
bool seek(long long pos)
CFxNANetworkReply()=delete
CFxNANetworkReply(FxNativeHandle nativeReply)
long long bytesAvailable() const
long long pos() const
CFxNANetworkReply(std::nullptr_t)=delete
CFxNAList< CFxNAByteArray > rawHeaderList() const
CFxUISignal< void(void)> & finished()
CFxUISignal< void(NetworkError)> & error()
CFxUISignal< void(long long bytesSent, long long bytesTotal)> & uploadProgress()
CFxNAByteArray rawHeader(const CFxNAByteArray &headerName) const
CFxNAVariant header(CFxNANetworkRequest::KnownHeaders header) const
bool hasRawHeader(const CFxNAByteArray &headerName) const
CFxNAPair< CFxNAByteArray, CFxNAByteArray > RawHeaderPair
CFxNAString errorString() const
CFxUISignal< void(long long bytesReceived, long long bytesTotal)> & downloadProgress()
@ BackgroundRequestNotAllowedError
the background request is not currently allowed due to platform policy.
@ TemporaryNetworkFailureError
the connection was broken due to disconnection from the network, however the system has initiated roa...
@ OperationNotImplementedError
the server does not support the functionality required to fulfill the request.
@ ProxyAuthenticationRequiredError
the proxy requires authentication in order to honour the request but did not accept any credentials o...
@ ContentReSendError
the request needed to be sent again, but this failed for example because the upload data could not be...
@ InsecureRedirectError
while following redirects, the network access API detected a redirect from a encrypted protocol (http...
@ NetworkSessionFailedError
the connection was broken due to disconnection from the network or failure to start the network.
@ ProxyTimeoutError
the connection to the proxy timed out or the proxy did not reply in time to the request sent
@ ContentOperationNotPermittedError
the operation requested on the remote content is not permitted
@ RemoteHostClosedError
the remote server closed the connection prematurely, before the entire reply was received and process...
@ ContentConflictError
the request could not be completed due to a conflict with the current state of the resource.
@ HostNotFoundError
the remote host name was not found (invalid hostname)
@ ProxyConnectionClosedError
the proxy server closed the connection prematurely, before the entire reply was received and processe...
@ ServiceUnavailableError
the server is unable to handle the request at this time.
@ SslHandshakeFailedError
the SSL/TLS handshake failed and the encrypted channel could not be established. The sslErrors() sign...
@ ContentGoneError
the requested resource is no longer available at the server.
@ ProtocolInvalidOperationError
the requested operation is invalid for this protocol
@ ContentNotFoundError
the remote content was not found at the server (similar to HTTP error 404)
@ AuthenticationRequiredError
the remote server requires authentication to serve the content but the credentials provided were not ...
@ OperationCanceledError
the operation was canceled via calls to abort() or close() before it was finished.
@ ProxyNotFoundError
the proxy host name was not found (invalid proxy hostname)
@ TooManyRedirectsError
while following redirects, the maximum limit was reached.
@ TimeoutError
the connection to the remote server timed out
const CFxNANetworkRequest & request() const
const CFxNAList< RawHeaderPair > & rawHeaderPairs() const
bool isRunning() const
bool isFinished() const
CFxNAByteArray readAll()
typedef void(APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture)