2020-02-21 11:05:07 +02:00
|
|
|
// This source code file was last time modified by Arvo ES1JA on 20181229
|
|
|
|
|
|
|
|
|
|
#include "wsprnet.h"
|
|
|
|
|
|
|
|
|
|
#include <cmath>
|
|
|
|
|
|
|
|
|
|
#include <QTimer>
|
|
|
|
|
#include <QFile>
|
|
|
|
|
#include <QNetworkAccessManager>
|
|
|
|
|
#include <QNetworkRequest>
|
|
|
|
|
#include <QNetworkReply>
|
|
|
|
|
#include <QUrl>
|
|
|
|
|
#include <QUrlQuery>
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
|
|
|
|
|
#include "moc_eqsl.cpp"
|
|
|
|
|
|
|
|
|
|
namespace
|
|
|
|
|
{
|
|
|
|
|
char const * const EqslUrl = "http://www.eqsl.cc/qslcard/importADIF.cfm";
|
|
|
|
|
// char const * const wsprNetUrl = "http://127.0.0.1/post?";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
EQSL::EQSL(QNetworkAccessManager * manager, QObject *parent)
|
|
|
|
|
: QObject{parent}
|
|
|
|
|
, networkManager {manager}
|
|
|
|
|
, uploadTimer {new QTimer {this}}
|
|
|
|
|
, m_in_progress {false}
|
|
|
|
|
{
|
|
|
|
|
uploadTimer->setSingleShot(true);
|
|
|
|
|
connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkReply(QNetworkReply*)));
|
|
|
|
|
connect( uploadTimer, SIGNAL(timeout()), this, SLOT(work()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EQSL::upload(QString const& eqsl_username, QString const& eqsl_passwd, QString const& eqsl_nickname
|
|
|
|
|
, QString const& call, QString const& mode
|
|
|
|
|
, QDateTime const& QSO_date_on
|
|
|
|
|
, QString const& rpt_sent, QString const& band
|
|
|
|
|
, QString const& eqslcomments)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (m_in_progress) {
|
|
|
|
|
reply->abort();
|
|
|
|
|
m_in_progress = false;
|
|
|
|
|
}
|
|
|
|
|
myadif="<ADIF_VER:5>2.1.9";
|
|
|
|
|
myadif+="<EQSL_USER:" + QString::number(eqsl_username.length()) + ">" + eqsl_username;
|
|
|
|
|
myadif+="<EQSL_PSWD:" + QString::number(eqsl_passwd.length()) + ">" + eqsl_passwd;
|
|
|
|
|
myadif+="<PROGRAMID:4>JTDX<EOH><APP_EQSL_QTH_NICKNAME:" + QString::number(eqsl_nickname.length()) + ">" + eqsl_nickname;
|
|
|
|
|
myadif+="<CALL:" + QString::number(call.length()) + ">" + call;
|
|
|
|
|
myadif+="<MODE:" + QString::number(mode.length()) + ">" + mode;
|
2020-07-20 20:08:28 +03:00
|
|
|
myadif+="<QSO_DATE:8>" + QSO_date_on.date().toString("yyyyMMdd");
|
|
|
|
|
myadif+="<TIME_ON:4>" + QSO_date_on.time().toString("hhmm");
|
2020-02-21 11:05:07 +02:00
|
|
|
myadif+="<RST_SENT:" + QString::number(rpt_sent.length()) + ">" + rpt_sent;
|
|
|
|
|
myadif+="<BAND:" + QString::number(band.length()) + ">" + band;
|
|
|
|
|
if(eqslcomments!="") myadif+="<QSLMSG:" + QString::number(eqslcomments.length()) + ">" + eqslcomments;
|
|
|
|
|
// myadif+="<QSLMSG:19>TNX For QSO TU 73!.";
|
|
|
|
|
myadif+="<EOR>";
|
|
|
|
|
|
|
|
|
|
uploadTimer->start(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EQSL::networkReply(QNetworkReply *reply)
|
|
|
|
|
{
|
|
|
|
|
if (QNetworkReply::NoError != reply->error ()) {
|
|
|
|
|
|
|
|
|
|
printf ("eqsl upload error:%d\n",reply->error ());
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
QString serverResponse = reply->readAll();
|
|
|
|
|
|
|
|
|
|
// printf("eqsl upload result:%s\n",serverResponse.toStdString().c_str());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// delete request object instance on return to the event loop otherwise it is leaked
|
|
|
|
|
reply->deleteLater ();
|
|
|
|
|
m_in_progress = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EQSL::work()
|
|
|
|
|
{
|
2020-10-20 15:20:50 +03:00
|
|
|
#if QT_VERSION < QT_VERSION_CHECK (5, 15, 0)
|
2020-10-20 17:23:44 +03:00
|
|
|
if (QNetworkAccessManager::Accessible != networkManager->networkAccessible ()) {
|
2020-10-20 15:20:50 +03:00
|
|
|
// try and recover network access for QNAM
|
2020-10-20 17:23:44 +03:00
|
|
|
networkManager->setNetworkAccessible (QNetworkAccessManager::Accessible);
|
2020-10-20 15:20:50 +03:00
|
|
|
}
|
|
|
|
|
#endif
|
2020-02-21 11:05:07 +02:00
|
|
|
m_in_progress = true;
|
|
|
|
|
QUrl url(EqslUrl);
|
|
|
|
|
QUrlQuery query;
|
|
|
|
|
query.addQueryItem("ADIFdata", myadif);
|
|
|
|
|
url.setQuery(query.query());
|
|
|
|
|
m_in_progress = true;
|
|
|
|
|
// printf ("eqsl upload request:%s\n",myadif.toStdString().c_str());
|
|
|
|
|
QNetworkRequest request(url);
|
|
|
|
|
reply = networkManager->get(request);
|
|
|
|
|
// printf ("sent\n");
|
|
|
|
|
}
|
|
|
|
|
|