diff --git a/Sources/VoipSMS/VoipMsSMSClient.cpp b/Sources/VoipSMS/VoipMsSMSClient.cpp index 52aa8f5..ff9b340 100644 --- a/Sources/VoipSMS/VoipMsSMSClient.cpp +++ b/Sources/VoipSMS/VoipMsSMSClient.cpp @@ -27,18 +27,18 @@ unsigned int CVoipMsSMSClient::SetVOIPMsSettings(CVoipMSSMSSettings *SettingsDat int CVoipMsSMSClient::DownloadSMSFromServer() { - QDate EndDate; - mCurStartDate = mVOIPMsSettings.mStartDate; - if(mCurStartDate.daysTo(QDate::currentDate()) > VOIP_MS_SMS_DATESPAN) - { - EndDate = mCurStartDate.addDays(VOIP_MS_SMS_DATESPAN); - } - else - { - EndDate = mCurStartDate.addDays(mCurStartDate.daysTo(QDate::currentDate())); - } - - SendSMSDownloadRequest(mCurStartDate,EndDate); +// QDate EndDate; +// mCurStartDate = mVOIPMsSettings.mStartDate; +// if(mCurStartDate.daysTo(QDate::currentDate()) > VOIP_MS_SMS_DATESPAN) +// { +// EndDate = mCurStartDate.addDays(VOIP_MS_SMS_DATESPAN); +// } +// else +// { +// EndDate = mCurStartDate.addDays(mCurStartDate.daysTo(QDate::currentDate())); +// } + mCurStartDate = QDate::currentDate().addDays(-VOIP_MS_SMS_DATESPAN); + SendSMSDownloadRequest(mCurStartDate,QDate::currentDate()); // QString Url; // Url.clear(); @@ -79,7 +79,7 @@ int CVoipMsSMSClient::SendSMSDownloadRequest(QDate StartDate, QDate EndDate) << "from=" << StartDate.toString("yyyy-MM-dd") << "&" << "to=" << EndDate.toString("yyyy-MM-dd") << "&" << "did=" << mVOIPMsSettings.mDefaultDID << "&" - << "limit=" << "50"; + << "limit=" << VOIP_MS_SMS_MAX_COUNT; qDebug() << "Cmd: " << Url; mVOIPMSSocket->get(QNetworkRequest(Url)); @@ -127,19 +127,20 @@ void CVoipMsSMSClient::VoipServerReplyFinished(QNetworkReply *NetworkReply) } else { + qDebug() << "VOIP.MS reply: " << JsonObject["status"].toString(); if(JsonObject["status"].toString() == "no_sms") { SMSReceived(0); } - else - { - qDebug() << "Failed VOIP.MS reply: " << JsonObject["status"].toString(); - } } } unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) { + + QList NewMessages; + int NBMsgReceived; + if(SMSArray != 0) { foreach (const QJsonValue & value, *SMSArray) @@ -152,32 +153,96 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) NewMessage.mMessageText = obj["message"].toString(); NewMessage.mType = (SmsType_t)obj["type"].toString().toInt(); NewMessage.mVOIPMSDatabaseID = obj["id"].toString();//.toLongLong(); - mSMSMessagesList.append(NewMessage); - qDebug() << obj["contact"].toString().toUtf8() << " : " << obj["message"].toString().toUtf8(); - } - } - - if(mCurStartDate != QDate::currentDate()) - { - if(mSMSMessagesList.size() != 0) - { - mCurStartDate = QDate::fromString(mSMSMessagesList.last().mDateTime.toString("yyyy-MM-dd")); + NewMessages.append(NewMessage); + //qDebug() << obj["date"].toString() << " : " << obj["id"].toString(); } - QDate EndDate; - if(mCurStartDate.daysTo(QDate::currentDate()) > VOIP_MS_SMS_DATESPAN) + NBMsgReceived = NewMessages.size(); + qDebug() << "Received " << NBMsgReceived << "messages"; + + if(mSMSMessagesList.size() >0 && NewMessages.size() > 0) { - EndDate = mCurStartDate.addDays(VOIP_MS_SMS_DATESPAN); + //remove existing messages... + bool finished = false; + int i = 0; + while(!finished) + { + //compare starting from the end for efficiency... + QDateTime NewDate = NewMessages.at(0).mDateTime; + QDateTime OldDate = mSMSMessagesList.last().mDateTime; + + if(NewDate >= OldDate) + { + NewMessages.removeAt(0); + if(NewMessages.size() == 0) + { + finished = true; + } + } + else + { + finished = true; + } + } + } + + mSMSMessagesList.append(NewMessages); + + + if(NBMsgReceived == VOIP_MS_SMS_MAX_COUNT) + { + //Restart at the last day received... + mCurStartDate = mSMSMessagesList.last().mDateTime.date(); + QDate EarlierDate = mCurStartDate.addDays(-VOIP_MS_SMS_DATESPAN); + SendSMSDownloadRequest(EarlierDate,mCurStartDate); } else { - EndDate = mCurStartDate.addDays(mCurStartDate.daysTo(QDate::currentDate())); - } + qDebug() << "Finished download of " << mSMSMessagesList.size() << " SMS messages"; + qDebug("-----------------------------------------------------------------------"); + qDebug(" "); + for(int i = 0; i < mSMSMessagesList.size(); i++) + { + qDebug() << mSMSMessagesList.at(i).mDateTime.toString("yyyy:MM:dd hh:mm:ss") << " : " << mSMSMessagesList.at(i).mContact << " : " << mSMSMessagesList.at(i).mMessageText.toUtf8().data(); + } + qDebug("-----------------------------------------------------------------------"); + qDebug(" "); - SendSMSDownloadRequest(mCurStartDate,EndDate); + } + } + else + { + qDebug("No SMS to download in this period."); } - qDebug("Added %d messages in the list",mSMSMessagesList.size()); + + + + + + + +// if(mCurStartDate != QDate::currentDate()) +// { +// if(mSMSMessagesList.size() != 0) +// { +// mCurStartDate = QDate::fromString(mSMSMessagesList.last().mDateTime.toString("yyyy-MM-dd")); +// } + +// QDate EndDate; +// if(mCurStartDate.daysTo(QDate::currentDate()) > VOIP_MS_SMS_DATESPAN) +// { +// EndDate = mCurStartDate.addDays(VOIP_MS_SMS_DATESPAN); +// } +// else +// { +// EndDate = mCurStartDate.addDays(mCurStartDate.daysTo(QDate::currentDate())); +// } + +// SendSMSDownloadRequest(mCurStartDate,EndDate); +// } + +// qDebug("Added %d messages in the list",mSMSMessagesList.size()); return RET_OK; } diff --git a/Sources/VoipSMS/VoipMsSMSClient.h b/Sources/VoipSMS/VoipMsSMSClient.h index 5c9b616..1a0ea87 100644 --- a/Sources/VoipSMS/VoipMsSMSClient.h +++ b/Sources/VoipSMS/VoipMsSMSClient.h @@ -13,6 +13,7 @@ #define VOIP_MS_API_URL "https://www.voip.ms/api/v1/rest.php?" #define VOIP_MS_SMS_DATESPAN 90 +#define VOIP_MS_SMS_MAX_COUNT 500 enum VoipMSRetValues {