service.h
Go to the documentation of this file.
1 #ifndef HTTP_SERVICE_H
2 #define HTTP_SERVICE_H
3 
4 #include <QNetworkAccessManager>
5 #include <QHttpPart>
6 #include <QFile>
7 #include <sstream>
8 #include <iostream>
9 #include "url.h"
10 #include "config.h"
11 
12 namespace dnai {
13  namespace http {
14  class Service
15  {
16  public:
17  static void Init(const Config &);
18  static void callInterceptors(Url*);
20 
21  static QHttpPart makeHttpPart(QString const &, QString const &);
22  static QHttpPart makeHttpPart(QString const &, QFile *);
23 
24  public:
25  template<typename... Args>
26  static Url *url(Args const&... args)
27  {
28  std::ostringstream oss;
30  qDebug() << "==HttpService== base url:" << QString(Service::m_config.base_url.c_str());
31  int a[] = {0, ((void)(oss << args << "/"), 0) ... };
32  static_cast<void>(a);
33  oss.str().pop_back();
34  auto url = new Url(m_manager, QUrl(QString::fromStdString(oss.str())));
36  return url;
37  }
38 
39  private:
40  static QNetworkAccessManager *m_manager;
41  static Config m_config;
42  };
43  }
44 }
45 
46 #endif // HTTP_SERVICE_H
std::function< void(Url *)> InterceptorFunction
Definition: types.h:12
static QHttpPart makeHttpPart(QString const &, QString const &)
Definition: service.cpp:30
std::string base_url
Definition: config.h:10
static void callInterceptors(Url *)
Definition: service.cpp:18
static void Init(const Config &)
Definition: service.cpp:10
Definition: service.h:14
Definition: url.h:16
static Url * url(Args const &...args)
Definition: service.h:26
static Config m_config
Definition: service.h:41
Definition: api.h:13
static QNetworkAccessManager * m_manager
Definition: service.h:40
static void addInterceptor(InterceptorFunction)
Definition: service.cpp:25
Definition: config.h:9