dev
This commit is contained in:
@@ -5,7 +5,12 @@
|
||||
|
||||
CSMSMessage::CSMSMessage()
|
||||
{
|
||||
|
||||
this->mContact = "INVALID";
|
||||
this->mDateTime = QDateTime::currentDateTime();
|
||||
this->mDID = "INVALID";
|
||||
this->mMessageText = "INVALID";
|
||||
this->mType = SMS_INVALID_TYPE;
|
||||
this->mVOIPMSDatabaseID = "INVALID";
|
||||
}
|
||||
|
||||
QDataStream &operator<<(QDataStream &out, const CSMSMessage &source)
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
typedef enum eSMSType
|
||||
{
|
||||
SMS_SENT_TYPE,
|
||||
SMS_RECEIVED_TYPE
|
||||
SMS_RECEIVED_TYPE,
|
||||
SMS_INVALID_TYPE
|
||||
}SmsType_t;
|
||||
|
||||
class CSMSMessage
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <QJsonObject>
|
||||
#include <QDateTime>
|
||||
#include <QStringList>
|
||||
#include "MasterCtrl.h"
|
||||
|
||||
CVoipMsSMSClient::CVoipMsSMSClient()
|
||||
{
|
||||
@@ -21,6 +22,8 @@ CVoipMsSMSClient::CVoipMsSMSClient()
|
||||
|
||||
mFirstDownloadDone = false;
|
||||
|
||||
mProgramHandle = 0;
|
||||
|
||||
}
|
||||
|
||||
CVoipMsSMSClient::~CVoipMsSMSClient()
|
||||
@@ -60,6 +63,8 @@ int CVoipMsSMSClient::SendSMSDownloadRequest(QDate StartDate, QDate EndDate)
|
||||
|
||||
// Url = "https://www.voip.ms/api/v1/rest.php?api_username=jean-francois.martel@polymtl.ca&api_password=Pentium2&method=getSMS&from=2015-11-01&to=2015-11-11&did=5143606463&limit=50";
|
||||
|
||||
StopSMSCheckTimer();
|
||||
|
||||
UrlStream << VOIP_MS_API_URL
|
||||
<< "api_username=" << mVOIPMsSettings.mUsername << "&"
|
||||
<< "api_password=" << mVOIPMsSettings.mPassword << "&"
|
||||
@@ -70,9 +75,55 @@ int CVoipMsSMSClient::SendSMSDownloadRequest(QDate StartDate, QDate EndDate)
|
||||
<< "limit=" << VOIP_MS_SMS_MAX_COUNT;
|
||||
|
||||
// qDebug() << "Cmd: " << Url;
|
||||
|
||||
mVOIPMSSocket->get(QNetworkRequest(Url));
|
||||
mCurStartDate = EndDate;
|
||||
|
||||
mLastRequestCmd = "getSMS";
|
||||
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int CVoipMsSMSClient::SendSMS(QList<CSMSMessage> *SMSList)
|
||||
{
|
||||
|
||||
if(SMSList->size() == 0)
|
||||
{
|
||||
return RET_ERROR;
|
||||
}
|
||||
|
||||
SendSMS(SMSList->at(0));
|
||||
|
||||
if(SMSList->size() > 1)
|
||||
{
|
||||
for(int i = 1; i < SMSList->size(); i++)
|
||||
{
|
||||
mPendingSMSSendList.append(SMSList->at(i));
|
||||
}
|
||||
}
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int CVoipMsSMSClient::SendSMS(CSMSMessage Message)
|
||||
{
|
||||
QString Url;
|
||||
Url.clear();
|
||||
QTextStream UrlStream(&Url);
|
||||
|
||||
StopSMSCheckTimer();
|
||||
UrlStream << VOIP_MS_API_URL
|
||||
<< "api_username=" << mVOIPMsSettings.mUsername << "&"
|
||||
<< "api_password=" << mVOIPMsSettings.mPassword << "&"
|
||||
<< "method=" << "sendSMS" << "&"
|
||||
<< "did=" << Message.mDID << "&"
|
||||
<< "dst=" << Message.mContact << "&"
|
||||
<< "message=" << Message.mMessageText;
|
||||
|
||||
qDebug() << "Sending SMS Msg : " << Url;
|
||||
mVOIPMSSocket->get(QNetworkRequest(Url));
|
||||
mLastRequestCmd = "sendSMS";
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
@@ -90,6 +141,7 @@ int CVoipMsSMSClient::CheckForNewSMS()
|
||||
return RET_ERROR;
|
||||
}
|
||||
|
||||
|
||||
QDate Today = QDate::currentDate();
|
||||
QDate StartDate = mSMSMessagesList.at(0).mDateTime.date();
|
||||
SendSMSDownloadRequest(StartDate,Today);
|
||||
@@ -103,12 +155,15 @@ unsigned int CVoipMsSMSClient::GetDidFromUserAccount(const QString username, con
|
||||
Url.clear();
|
||||
QTextStream UrlStream(&Url);
|
||||
|
||||
StopSMSCheckTimer();
|
||||
|
||||
UrlStream << VOIP_MS_API_URL
|
||||
<< "api_username=" << username << "&"
|
||||
<< "api_password=" << Password << "&"
|
||||
<< "method=" << Method << "&";
|
||||
|
||||
mVOIPMSSocket->get(QNetworkRequest(Url));
|
||||
mLastRequestCmd = Method;
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
@@ -116,22 +171,29 @@ unsigned int CVoipMsSMSClient::GetDidFromUserAccount(const QString username, con
|
||||
void CVoipMsSMSClient::VoipServerReplyFinished(QNetworkReply *NetworkReply)
|
||||
{
|
||||
QByteArray Reply = NetworkReply->readAll();
|
||||
NetworkReply->deleteLater();
|
||||
|
||||
QJsonDocument JsonReply = QJsonDocument::fromJson(Reply);
|
||||
QJsonObject JsonObject = JsonReply.object();
|
||||
QStringList Keys = JsonObject.keys();
|
||||
if(JsonObject["status"].toString() == "success")
|
||||
{
|
||||
if(Keys.contains("sms"))
|
||||
if(mLastRequestCmd == "getSMS")
|
||||
// if(Keys.contains("sms"))
|
||||
{
|
||||
QJsonArray SMSArray = JsonObject["sms"].toArray();
|
||||
SMSReceived(&SMSArray);
|
||||
}
|
||||
else if(Keys.contains("dids"))
|
||||
else if(mLastRequestCmd == "getDIDsInfo")
|
||||
// else if(Keys.contains("dids"))
|
||||
{
|
||||
QJsonArray DIDsInfoArray = JsonObject["dids"].toArray();
|
||||
DIDsInfoReceived(&DIDsInfoArray);
|
||||
}
|
||||
else if(mLastRequestCmd == "sendSMS")
|
||||
{
|
||||
SendSMSAckReceived(true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -140,7 +202,40 @@ void CVoipMsSMSClient::VoipServerReplyFinished(QNetworkReply *NetworkReply)
|
||||
{
|
||||
SMSReceived(0);
|
||||
}
|
||||
if(mLastRequestCmd == "sendSMS")
|
||||
{
|
||||
SendSMSAckReceived(false);
|
||||
}
|
||||
}
|
||||
Reply.clear();
|
||||
}
|
||||
|
||||
int CVoipMsSMSClient::SendSMSAckReceived(bool Success)
|
||||
{
|
||||
if(Success)
|
||||
{
|
||||
qDebug("SMS sent successfuly");
|
||||
if(mPendingSMSSendList.size() != 0)
|
||||
{
|
||||
CSMSMessage Msg = mPendingSMSSendList.takeFirst();
|
||||
SendSMS(Msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
CheckForNewSMS();
|
||||
// StartSMSCheckTimer();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug("SMS send failed");
|
||||
mPendingSMSSendList.clear();
|
||||
StartSMSCheckTimer();
|
||||
}
|
||||
|
||||
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
|
||||
@@ -200,6 +295,8 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
|
||||
}
|
||||
if(mFirstDownloadDone == true && NewMessages.size() > 0)
|
||||
{
|
||||
mProgramHandle->NewSMSMessagesArrived(NewMessages);
|
||||
|
||||
qDebug() << "Added " << NewMessages.size() << " new SMS messages";
|
||||
qDebug("-----------------------------------------------------------------------");
|
||||
qDebug(" ");
|
||||
@@ -240,6 +337,8 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
|
||||
mSMSMessagesList.append(NewMessages);
|
||||
if(mFirstDownloadDone == true && NewMessages.size() > 0)
|
||||
{
|
||||
mProgramHandle->NewSMSMessagesArrived(NewMessages);
|
||||
|
||||
qDebug() << "Added " << NewMessages.size() << " new SMS messages";
|
||||
qDebug("-----------------------------------------------------------------------");
|
||||
qDebug(" ");
|
||||
@@ -283,7 +382,8 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
|
||||
|
||||
|
||||
mFirstDownloadDone = true;
|
||||
mCheckNewSMSTimer->start(VOIP_MS_SMS_CHECK_TIMEOUT);
|
||||
// mCheckNewSMSTimer->start(VOIP_MS_SMS_CHECK_TIMEOUT);
|
||||
StartSMSCheckTimer();
|
||||
qDebug("Timer started");
|
||||
}
|
||||
|
||||
@@ -327,6 +427,8 @@ unsigned int CVoipMsSMSClient::DIDsInfoReceived(QJsonArray *DIDsInfoPtr)
|
||||
emit DIDSFetched(DIDs);
|
||||
}
|
||||
|
||||
StartSMSCheckTimer();
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
@@ -398,6 +500,18 @@ QString CVoipMsSMSClient::GetDefaultDID()
|
||||
return mVOIPMsSettings.mDefaultDID;
|
||||
}
|
||||
|
||||
void CVoipMsSMSClient::StartSMSCheckTimer()
|
||||
{
|
||||
if(mFirstDownloadDone == true)
|
||||
{
|
||||
mCheckNewSMSTimer->start(VOIP_MS_SMS_CHECK_TIMEOUT);
|
||||
}
|
||||
}
|
||||
|
||||
void CVoipMsSMSClient::StopSMSCheckTimer()
|
||||
{
|
||||
mCheckNewSMSTimer->stop();
|
||||
}
|
||||
|
||||
//https://www.voip.ms/api/v1/rest.php?api_username=jean-francois.martel@polymtl.ca&api_password=Pentium2&method=getBalance&advanced=True
|
||||
|
||||
|
||||
@@ -26,6 +26,8 @@ enum VoipMSRetValues
|
||||
VOIPMS_RET_NO_DID_FOUND
|
||||
};
|
||||
|
||||
class CMasterCtrl;
|
||||
|
||||
class CVoipMsSMSClient : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -40,6 +42,8 @@ public:
|
||||
|
||||
QList<CSMSMessage> mSMSMessagesList;
|
||||
|
||||
CMasterCtrl *mProgramHandle;
|
||||
|
||||
unsigned int GetDidFromUserAccount(const QString username, const QString Password);
|
||||
unsigned int SetVOIPMsSettings(CVoipMSSMSSettings *SettingsData);
|
||||
unsigned int NewSMSNotification(QString DID);
|
||||
@@ -50,12 +54,20 @@ public:
|
||||
int GetSMSCount();
|
||||
QString GetDefaultDID();
|
||||
|
||||
int SendSMS(QList<CSMSMessage> *SMSList);
|
||||
int SendSMS(CSMSMessage Message);
|
||||
|
||||
|
||||
private:
|
||||
QNetworkAccessManager *mVOIPMSSocket;
|
||||
|
||||
unsigned int SMSReceived(QJsonArray *sms);
|
||||
unsigned int DIDsInfoReceived(QJsonArray *DIDsInfo);
|
||||
int SendSMSAckReceived(bool Success);
|
||||
|
||||
void StartSMSCheckTimer();
|
||||
void StopSMSCheckTimer();
|
||||
|
||||
|
||||
CVoipMSSMSSettings mVOIPMsSettings;
|
||||
|
||||
@@ -66,6 +78,8 @@ private:
|
||||
QTimer *mCheckNewSMSTimer;
|
||||
|
||||
bool mFirstDownloadDone;
|
||||
QString mLastRequestCmd;
|
||||
QList<CSMSMessage> mPendingSMSSendList;
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user