-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathhttphelper.cpp
More file actions
68 lines (54 loc) · 1.75 KB
/
Copy pathhttphelper.cpp
File metadata and controls
68 lines (54 loc) · 1.75 KB
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
// Copyright © 2011 Vinícius dos Santos Oliveira
#include "httphelper.h"
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <qt-json/json.h>
using namespace JsonRPC;
HttpHelper::HttpHelper(QObject *parent) :
QObject(parent),
peer(new Peer(this)),
httpClient(new QNetworkAccessManager(this))
{
connect(peer, SIGNAL(readyRequestMessage(QByteArray)),
this, SLOT(onReadyRequestMessage(QByteArray)));
connect(peer, SIGNAL(readyResponse(QVariant,QVariant)),
this, SIGNAL(readyResponse(QVariant,QVariant)));
connect(peer, SIGNAL(requestError(int,QString,QVariant,QVariant)),
this, SIGNAL(requestError(int,QString,QVariant,QVariant)));
connect(httpClient, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
}
QUrl HttpHelper::url() const
{
return m_url;
}
void HttpHelper::setUrl(const QUrl &url)
{
this->m_url = url;
}
bool HttpHelper::call(const QString &method, const QVariant ¶ms, const QVariant &id)
{
return peer->call(method, params, id);
}
void HttpHelper::onReadyRequestMessage(const QByteArray &json)
{
QNetworkRequest request(m_url);
request.setHeader(QNetworkRequest::ContentTypeHeader,
QString("application/json-rpc"));
request.setRawHeader("Accept", "application/json-rpc");
httpClient->post(request, json);
}
void HttpHelper::replyFinished(QNetworkReply *reply)
{
reply->deleteLater();
QByteArray content = reply->readAll();
if (reply->error() != QNetworkReply::NoError) {
bool ok;
QtJson::Json::parse(QString::fromUtf8(content), ok);
if (!ok) {
emit error(reply->error());
return;
}
}
peer->handleMessage(content);
}