Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
georoutereply_esri.cpp
Go to the documentation of this file.
1// Copyright (C) 2013-2018 Esri <contracts@esri.com>
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
6
7#include <QJsonDocument>
8
10
11// JSON reference:
12// https://resources.arcgis.com/en/help/arcgis-rest-api/#/Route_service_with_synchronous_execution/02r300000036000000/
13
14GeoRouteReplyEsri::GeoRouteReplyEsri(QNetworkReply *reply, const QGeoRouteRequest &request,
15 QObject *parent) :
16 QGeoRouteReply(request, parent)
17{
18 if (!reply) {
19 setError(UnknownError, QStringLiteral("Null reply"));
20 return;
21 }
22 connect(reply, &QNetworkReply::finished,
23 this, &GeoRouteReplyEsri::networkReplyFinished);
24 connect(reply, &QNetworkReply::errorOccurred,
25 this, &GeoRouteReplyEsri::networkReplyError);
26 connect(this, &QGeoRouteReply::aborted, reply, &QNetworkReply::abort);
27 connect(this, &QObject::destroyed, reply, &QObject::deleteLater);
28}
29
30GeoRouteReplyEsri::~GeoRouteReplyEsri()
31{
32}
33
34void GeoRouteReplyEsri::networkReplyFinished()
35{
36 QNetworkReply *reply = static_cast<QNetworkReply *>(sender());
37 reply->deleteLater();
38
39 if (reply->error() != QNetworkReply::NoError)
40 return;
41
42 QJsonDocument document = QJsonDocument::fromJson(reply->readAll());
43 GeoRouteJsonParserEsri parser(document);
44
45 if (parser.isValid())
46 {
47 setRoutes(parser.routes());
48 setFinished(true);
49 } else {
50 setError(QGeoRouteReply::ParseError, parser.errorString());
51 }
52}
53
54void GeoRouteReplyEsri::networkReplyError(QNetworkReply::NetworkError error)
55{
56 Q_UNUSED(error);
57 QNetworkReply *reply = static_cast<QNetworkReply *>(sender());
58 reply->deleteLater();
59 setError(QGeoRouteReply::CommunicationError, reply->errorString());
60}
61
62QT_END_NAMESPACE
The QNetworkReply class contains the data and headers for a request sent with QNetworkAccessManager.