Remoto - VFS: VFS_curl.h Source File
Remoto - VFS
VFS_curl.h
Go to the documentation of this file.
1 #ifndef VFS_CURL_H
2 #define VFS_CURL_H
3 
4 #include <QUrl>
5 #include <QNetworkReply>
6 #include <QNetworkAccessManager>
7 #include <QList>
8 #include <QTimer>
9 
10 #include "VFS_base/VFS_node.h"
11 
12 class VFS_curl : public VFS_node
13 {
14  Q_OBJECT
15 
16  public:
17  Q_INVOKABLE explicit VFS_curl(QString url, bool json=false, bool poll=false, int expire=10000, int timeout=60000);
18  virtual ~VFS_curl();
19 
20  virtual bool isContainer();
21 
22  virtual void read(VFS_request *r);
23  //virtual void write(VFS_request *r);
24  //virtual void submit(VFS_request *r);
25  virtual void metadata(VFS_request *r);
26 
27  virtual QString reportDetails();
28 
29  protected:
30  QUrl _url;
31  bool _json;
32  bool _poll;
33  int _expire;
34  QNetworkAccessManager _manager;
35  QList< VFS_request *> _requests;
36 
37  QJsonObject _metadata;
38  QJsonObject _data;
39 
40  virtual QByteArray icon();
41 
42  virtual void get(VFS_request *r);
43  virtual QJsonObject parse(QJsonObject data, QJsonObject &diffout);
44 
45  private:
46  bool _stale;
47  bool _valid;
48  bool _getting;
49  QString _reason;
50 
51  QTimer _timer;
52  int _timeout;
53  QNetworkReply *_request;
54 
55  QJsonObject getHeaders(QNetworkReply *reply);
56 
57  signals:
58 
59  public slots:
60  //virtual void applyDiff(VFS_request *r);
61 
62  void replyFinished(QNetworkReply *reply);
63  virtual void sslErrors(QNetworkReply *,const QList<QSslError> &errors);
64 
65  protected slots:
66  virtual void expire();
67  virtual void networkTimeout();
68  //virtual void networkReplyError(QNetworkReply::NetworkError code);
69 
70 };
71 
72 #endif // VFS_CURL_H
VFS_curl reads data from a url when read() is called.
Definition: VFS_curl.h:13
bool _stale
If the retrieved content is stale. Initialized as true.
Definition: VFS_curl.h:46
virtual void read(VFS_request *r)
Request the _url.
Definition: VFS_curl.cpp:153
bool _json
Interpret fetched data as json.
Definition: VFS_curl.h:31
virtual void sslErrors(QNetworkReply *, const QList< QSslError > &errors)
One or more ssl errors have occurred.
Definition: VFS_curl.cpp:378
QNetworkReply * _request
The outstanding request, if any.
Definition: VFS_curl.h:53
QJsonObject _data
The data retrieved from a http get request after it has been sent to parse().
Definition: VFS_curl.h:38
virtual bool isContainer()
A VFS_curl node cannot contain children.
Definition: VFS_curl.cpp:100
bool _poll
If data is considered expired, re-request it.
Definition: VFS_curl.h:32
virtual QByteArray icon()
The "stream" icon found in the VFS_icons library.
Definition: VFS_curl.cpp:80
virtual QString reportDetails()
Report the url.
Definition: VFS_curl.cpp:90
virtual void expire()
Set the _stale value to true, and if _poll, request an update.
Definition: VFS_curl.cpp:316
int _timeout
The time to wait for a response before timing out. Defaults to 60000 ms = 1 minute.
Definition: VFS_curl.h:52
QJsonObject getHeaders(QNetworkReply *reply)
Create a QJsonObject based on a QNetworkReply.
Definition: VFS_curl.cpp:335
virtual void get(VFS_request *r)
VFS_curl::get.
Definition: VFS_curl.cpp:180
Q_INVOKABLE VFS_curl(QString url, bool json=false, bool poll=false, int expire=10000, int timeout=60000)
Definition: VFS_curl.cpp:33
virtual void networkTimeout()
A request was initiated, but timed out.
Definition: VFS_curl.cpp:302
void replyFinished(QNetworkReply *reply)
A network request has completed.
Definition: VFS_curl.cpp:217
QTimer _timer
For detecting timeouts on network requests. The QNetworkAccessManager doesn't do this on its own.
Definition: VFS_curl.h:51
QString _reason
If an http request was invalid, this will contain the error string.
Definition: VFS_curl.h:49
QList< VFS_request * > _requests
A list of outstanding VFS_request objects to satisfy once an http request is complete.
Definition: VFS_curl.h:35
virtual QJsonObject parse(QJsonObject data, QJsonObject &diffout)
Parse the incoming data into useful format.
Definition: VFS_curl.cpp:400
bool _valid
If the http request was valid.
Definition: VFS_curl.h:47
QNetworkAccessManager _manager
The http request manager.
Definition: VFS_curl.h:34
int _expire
Time in milliseconds to consider the retrieved data stale.
Definition: VFS_curl.h:33
QJsonObject _metadata
Certain headers returned from a successful http get request.
Definition: VFS_curl.h:37
bool _getting
If an outstanding request exists.
Definition: VFS_curl.h:48
virtual ~VFS_curl()
Definition: VFS_curl.cpp:69
QUrl _url
The url to request.
Definition: VFS_curl.h:30
virtual void metadata(VFS_request *r)
Fetch the metadata for this node.
Definition: VFS_curl.cpp:114
VFS_node is the base class from which all other VFS_node classes derive.
Definition: VFS_node.h:143
The base class for all requests between nodes.
Definition: VFS_node.h:54