Bredbandskollen CLI  1.2
Asynchronous network task engine
singlerequest.h
1 // Copyright (c) 2018 IIS (The Internet Foundation in Sweden)
2 // Written by Göran Andersson <initgoran@gmail.com>
3 
4 #pragma once
5 
6 #include "httpclienttask.h"
7 
8 class SingleRequest : public HttpClientTask {
9 public:
10  // GET url
11  SingleRequest(const std::string &name, const HttpHost &host,
12  const std::string &url, double timeout = 0.0) :
13  HttpClientTask(name, host), _url(url), _timeout(timeout) {
14  }
15  // POST post_data to url.
16  SingleRequest(const std::string &name, const HttpHost &host,
17  const std::string &url, const std::string &post_data,
18  double timeout = 0.0) :
19  HttpClientTask(name, host), _url(url),
20  _post_data(post_data), _timeout(timeout) {
21  }
22 
23  double start() override;
24 
25  double timerEvent() override;
26 
27  void newRequest(HttpClientConnection *conn) override {
28  if (_post_data.empty())
29  conn->get(_url);
30  else
31  conn->post(_url, _post_data);
32  }
33 
34  bool requestComplete(HttpClientConnection *conn) override;
35 
36  void connRemoved(SocketConnection *) override {
37  if (!terminated())
38  setError("SingleRequest Failure");
39  }
40 
41  unsigned int httpStatus() const {
42  return _status;
43  }
44 private:
45  std::string _url;
46  std::string _post_data;
47  double _timeout;
48  unsigned int _status = 0;
49 };
HTTP/1.1 client protocol.
Definition: httpclientconnection.h:39
void post(const std::string &url, size_t len)
Definition: httpclientconnection.cpp:376
void get(const std::string &url)
May be called in the newRequest callback:
Definition: httpclientconnection.cpp:317
API for HTTP clients.
Definition: httpclienttask.h:11
The host name and port number of a HTTP host.
Definition: httphost.h:17
Definition: singlerequest.h:8
double start() override
Definition: singlerequest.cpp:3
bool requestComplete(HttpClientConnection *conn) override
Called when response has been fully read.
Definition: singlerequest.cpp:15
void connRemoved(SocketConnection *) override
Definition: singlerequest.h:36
void newRequest(HttpClientConnection *conn) override
Initiate next request, or ignore to close connection.
Definition: singlerequest.h:27
double timerEvent() override
Definition: singlerequest.cpp:9
This class implements low-level socket connection operations. Inherit from it to implement protocols ...
Definition: socketconnection.h:47
bool terminated() const
Return true if task is finished.
Definition: task.h:429
virtual void setError(const std::string &msg)
Definition: task.h:383