forked from espakm/qRestAPI
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqMidasAPI.h
88 lines (68 loc) · 2.82 KB
/
qMidasAPI.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*==============================================================================
Library: qRestAPI
Copyright (c) 2010 Kitware Inc.
See Doc/copyright/copyright.txt
or http://www.slicer.org/copyright/copyright.txt for details.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
This file was originally developed by Jean-Christophe Fillion-Robin, Kitware Inc.
and was partially funded by NIH grant 3P41RR013218-12S1
==============================================================================*/
#ifndef __qMidasAPI_h
#define __qMidasAPI_h
#include "qRestAPI.h"
class qMidasAPIPrivate;
/// qMidasAPI is a simple interface class to communicate with a Midas3 public
/// API.
/// Queries are posted to the server and answers reported back.
/// qMidasAPI works in synchronous or unsynchronous way.
/// Usage:
/// <code>
/// qMidasAPI midas;
/// midas.setMidasUrl("http://slicer.kitware.com/midas3");
/// connect(&midas, SIGNAL(resultReceived(QUuid,QList<QVariantMap>)),
/// myApp, SLOT(processResult(QUuid,QList<QVariantMap>)));
/// midas.query("midas.version");
/// ...
/// </code>
class qMidasAPI : public qRestAPI
{
Q_OBJECT
/// Url of the Midas server. e.g. "http://slicer.kitware.com/midas3"
/// @deprecated Use the serverUrl property
Q_PROPERTY(QString midasUrl READ midasUrl WRITE setMidasUrl)
typedef qRestAPI Superclass;
public:
explicit qMidasAPI(QObject*parent = 0);
virtual ~qMidasAPI();
/// @deprecated Use qRestAPI::Parameters.
typedef Parameters ParametersType;
QString midasUrl()const;
void setMidasUrl(const QString& newMidasUrl);
/// Utility function that waits \a maxWaitingTimeInMSecs msecs for the result
/// of the query. Returns the answer of the server or an empty map if the
/// result failed.
/// If an error is emitted, "queryError" is added to the output.
/// Internally, a QEventLoop is used so it can have side effects on your
/// application.
/// @deprecated Use the non-static version from qRestAPI.
static QList<QVariantMap> synchronousQuery(bool &ok,
const QString& midasUrl,
const QString& method,
const ParametersType& parameters = ParametersType(),
int maxWaitingTimeInMSecs = 2500);
signals:
void errorReceived(QUuid queryId, QString error);
void resultReceived(QUuid queryId, QList<QVariantMap> result);
protected:
QUrl createUrl(const QString& method, const qRestAPI::Parameters& parameters);
void parseResponse(qRestResult* restResult, const QByteArray& response);
private:
QScopedPointer<qMidasAPIPrivate> d_ptr;
Q_DECLARE_PRIVATE(qMidasAPI);
Q_DISABLE_COPY(qMidasAPI);
};
#endif