-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathyotawa.cpp
88 lines (82 loc) · 2.57 KB
/
yotawa.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
#include "yotawa.h"
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QUrlQuery>
#include <QNetworkReply>
YotaWA::YotaWA()
{
settings = new SettingsController();
networkManager = new QNetworkAccessManager();
cookieJar = new YotaCookieJar();
connect(networkManager, &QNetworkAccessManager::finished, this, &YotaWA::onResult);
}
void YotaWA::getHome()
{
cookieJar->load();
networkManager->setCookieJar(cookieJar);
QString plan;
switch(settings->getplan())
{
case 1: plan="voice"; autoplan=0; break;
case 2: plan="tablet"; autoplan=0; break;
default:
autoplan=true;
if(settings->getLastAutoPlan()==2)
{
plan="tablet";
autoplan=2;
}
else
{
plan="voice";
autoplan=1;
}
}
loadPage(plan);
}
void YotaWA::loadPage(QString plan)
{
networkManager->get(QNetworkRequest(QUrl("https://wa.yota.ru/webapi-v3/view/"+plan+"/home")));
}
void YotaWA::onResult(QNetworkReply *reply)
{
if(!reply->error())
{
QJsonDocument document = QJsonDocument::fromJson(reply->readAll());
QJsonObject root = document.object();
if(root.value("_exception").toBool())
{
if(root.value("code").toInt()==110600&&autoplan)
{
autoplan==2?loadPage("voice"):loadPage("tablet");
settings->setLastAutoPlan(autoplan==2?1:2);
autoplan=0;
}
else
emit getHomeError(root.value("code").toInt(), root.value("message").toString());
}
else
{
if(autoplan)
{
autoplan=false;
if(!settings->getLastAutoPlan())
settings->setLastAutoPlan(1);
}
double balance = root.value("userBalance").toObject().value("value").toDouble();
QString internet = root.value("optionStates").toArray()[0].toObject().value("descriptionText").toString();
QString next = root.value("mainDescription").toString();
QJsonObject price = root.value("price").toObject();
int priceval = price.value("value").toInt();
QString pricedesc = price.value("units").toString()+" "+price.value("descriptionText").toString();
cookieJar->save();
emit getHomeFinished(balance, internet, next, priceval, pricedesc);
}
reply->deleteLater();
}
else
{
emit getHomeError(-1, "Нет соединения с сервером");
}
}