-
Notifications
You must be signed in to change notification settings - Fork 33
/
qGirderAPI.cpp
97 lines (82 loc) · 2.94 KB
/
qGirderAPI.cpp
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
89
90
91
92
93
94
95
96
97
/*==============================================================================
Library: qRestAPI
Copyright (c) 2021 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.
==============================================================================*/
// Qt includes
#include <QUrl>
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
#include <QJSEngine>
#include <QJSValue>
#else
#include <QScriptEngine>
#include <QScriptValue>
#endif
// qRestAPI includes
#include "qGirderAPI.h"
#include "qRestResult.h"
// --------------------------------------------------------------------------
// qGirderAPI methods
// --------------------------------------------------------------------------
qGirderAPI::qGirderAPI(QObject* _parent)
: Superclass(_parent)
{
}
// --------------------------------------------------------------------------
qGirderAPI::~qGirderAPI()
{
}
// --------------------------------------------------------------------------
bool qGirderAPI::parseGirderAPIv1Response(const QByteArray& response, QList<QVariantMap>& result)
{
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
QJSEngine scriptEngine;
QJSValue scriptValue = scriptEngine
.evaluate("JSON.parse")
.callWithInstance(QJSValue(), QJSValueList() << QString(response));
#else
QScriptEngine scriptEngine;
QScriptValue scriptValue = scriptEngine
.evaluate("JSON.parse")
.call(QScriptValue(), QScriptValueList() << QString(response));
#endif
// e.g. {["key1": "value1", ...]} or {"key1": "value1", ...}
if (scriptValue.isArray())
{
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
quint32 length = scriptValue.property("length").toUInt();
#else
quint32 length = scriptValue.property("length").toUInt32();
#endif
for(quint32 i = 0; i < length; ++i)
{
qRestAPI::appendScriptValueToVariantMapList(result, scriptValue.property(i));
}
}
else
{
qRestAPI::appendScriptValueToVariantMapList(result, scriptValue);
}
return true;
}
// --------------------------------------------------------------------------
bool qGirderAPI::parseGirderAPIv1Response(qRestResult* restResult, const QByteArray& response)
{
QList<QVariantMap> result;
bool success = qGirderAPI::parseGirderAPIv1Response(response, result);
restResult->setResult(result);
return success;
}
// --------------------------------------------------------------------------
void qGirderAPI::parseResponse(qRestResult* restResult, const QByteArray& response)
{
Q_UNUSED(response);
qGirderAPI::parseGirderAPIv1Response(restResult, response);
}