Helix Web Services Client  1
Helix Web Services Client SDK for Qt Applications
Client.h
1 #ifndef __HWS_CLIENT_H__
2 #define __HWS_CLIENT_H__
3 
4 #include <QObject>
5 #include <QSettings>
6 #include <QSharedPointer>
7 #include <QUrl>
8 #include <QVariant>
9 
10 #include "Session.h"
11 #include "RequestError.h"
12 
13 namespace hws
14 {
16  class Client : public QObject
17  {
18  Q_OBJECT
19 
20  public:
21  // Most of our return results are returned as this consistent format.
22  typedef QList<QVariantMap> QVariantMapList;
23 
24  // URL parameters must be converted to string values.
25  // Note that this API will handle the URI encoding.
26  typedef QHash<QString, QString> QStringHash;
27 
28  // Initialize a client with a specific HWS url.
29  Client(QObject *parent, QUrl url);
30 
32  Client(QObject *parent);
33 
36  ~Client();
37 
39  const QUrl & url() const;
40 
42  void setUrl(const QUrl & url);
43 
46  bool hasSession() const;
47 
49  const Session & session() const;
50 
53  void setSession(const Session & session);
54 
59  const QString & hwsPrefixPath() const;
60 
65  void setHWSPrefixPath(const QString & path);
66 
71  const QString & settingsKey() const;
72 
76  const QSharedPointer<QSettings> settings() const;
77 
79  void setSettings(QSharedPointer<QSettings> settings);
80 
88  void addRequestConfig(QString key, QString value);
89 
94  void ignoreSslErrors(bool ignore);
95 
96  public slots:
97 
103  void validateSession();
104 
110  void logIn(const QString & user, const QString & password);
111 
112 
119  void executeMethod(const QString & method, const QString & path,
120  const QSharedPointer<QStringHash> params = QSharedPointer<QStringHash>(),
121  const QSharedPointer<QByteArray> body = QSharedPointer<QByteArray>());
122 
129  void executeMethod(const QString & method, const QString & path,
130  const QSharedPointer<QStringHash> params,
131  const QVariantMap & body);
132 
139  void executeMethod(const QString & method, const QString & path,
140  const QSharedPointer<QStringHash> params,
141  const QVariantMapList & body);
142 
143  signals:
144 
156  void validateSessionDone(RequestErrorPtr error);
157 
161  void logInDone(RequestErrorPtr error, SessionPtr session);
162 
174  void executeMethodDone(RequestErrorPtr error,
175  const QString & method,
176  const QString & path,
177  const QSharedPointer<QVariantMapList> body);
178 
179  // Implementation is hidden using PIMPL technique.
180  // I'm hiding the direct include dependencies on Qt5Network and
181  // Qt5WebSockets.
182  private:
183  class Impl;
184 
185  class LogInFinished;
186  class ExecuteMethodFinished;
187 
188  Impl *mImpl;
189 
190  // Disabled methods
191  private:
192  Client(const Client &);
193 
194  Client & operator=(const Client &);
195  };
196 
197  typedef QSharedPointer<Client> ClientPtr;
198 }
199 
200 #endif /* __HWS_CLIENT_H__ */
void validateSession()
Definition: Client.cpp:571
void setSettings(QSharedPointer< QSettings > settings)
The current settings handle for the client.
Definition: Client.cpp:25
void logIn(const QString &user, const QString &password)
Definition: Client.cpp:592
Definition: hws.h:63
const QSharedPointer< QSettings > settings() const
void executeMethodDone(RequestErrorPtr error, const QString &method, const QString &path, const QSharedPointer< QVariantMapList > body)
Front end to making requests against the Phoenix web services API.
Definition: Client.h:16
The HWS Session, that owns our security token.
Definition: Session.h:22
const QString & hwsPrefixPath() const
Definition: Client.cpp:550
~Client()
Definition: Client.cpp:520
void addRequestConfig(QString key, QString value)
Definition: Client.cpp:560
void logInDone(RequestErrorPtr error, SessionPtr session)
void setHWSPrefixPath(const QString &path)
Definition: Client.cpp:555
const QString & settingsKey() const
bool hasSession() const
Definition: Client.cpp:535
Definition: Client.cpp:204
void setUrl(const QUrl &url)
The Helix Web Services URL.
Definition: Client.cpp:525
void ignoreSslErrors(bool ignore)
Definition: Client.cpp:565
void executeMethod(const QString &method, const QString &path, const QSharedPointer< QStringHash > params=QSharedPointer< QStringHash >(), const QSharedPointer< QByteArray > body=QSharedPointer< QByteArray >())
Definition: Client.cpp:620
const QUrl & url() const
The Helix Web Services URL.
Definition: Client.cpp:530
const Session & session() const
The session instance is required before making any remote call.
Definition: Client.cpp:540
void validateSessionDone(RequestErrorPtr error)
Definition: Client.cpp:172
void setSession(const Session &session)
Definition: Client.cpp:545