SMS download

This commit is contained in:
J-F Martel 2015-12-11 14:14:36 -05:00
parent 6b7ff8e86a
commit 0c16233403
2 changed files with 100 additions and 34 deletions

View File

@ -27,18 +27,18 @@ unsigned int CVoipMsSMSClient::SetVOIPMsSettings(CVoipMSSMSSettings *SettingsDat
int CVoipMsSMSClient::DownloadSMSFromServer() int CVoipMsSMSClient::DownloadSMSFromServer()
{ {
QDate EndDate; // QDate EndDate;
mCurStartDate = mVOIPMsSettings.mStartDate; // mCurStartDate = mVOIPMsSettings.mStartDate;
if(mCurStartDate.daysTo(QDate::currentDate()) > VOIP_MS_SMS_DATESPAN) // if(mCurStartDate.daysTo(QDate::currentDate()) > VOIP_MS_SMS_DATESPAN)
{ // {
EndDate = mCurStartDate.addDays(VOIP_MS_SMS_DATESPAN); // EndDate = mCurStartDate.addDays(VOIP_MS_SMS_DATESPAN);
} // }
else // else
{ // {
EndDate = mCurStartDate.addDays(mCurStartDate.daysTo(QDate::currentDate())); // EndDate = mCurStartDate.addDays(mCurStartDate.daysTo(QDate::currentDate()));
} // }
mCurStartDate = QDate::currentDate().addDays(-VOIP_MS_SMS_DATESPAN);
SendSMSDownloadRequest(mCurStartDate,EndDate); SendSMSDownloadRequest(mCurStartDate,QDate::currentDate());
// QString Url; // QString Url;
// Url.clear(); // Url.clear();
@ -79,7 +79,7 @@ int CVoipMsSMSClient::SendSMSDownloadRequest(QDate StartDate, QDate EndDate)
<< "from=" << StartDate.toString("yyyy-MM-dd") << "&" << "from=" << StartDate.toString("yyyy-MM-dd") << "&"
<< "to=" << EndDate.toString("yyyy-MM-dd") << "&" << "to=" << EndDate.toString("yyyy-MM-dd") << "&"
<< "did=" << mVOIPMsSettings.mDefaultDID << "&" << "did=" << mVOIPMsSettings.mDefaultDID << "&"
<< "limit=" << "50"; << "limit=" << VOIP_MS_SMS_MAX_COUNT;
qDebug() << "Cmd: " << Url; qDebug() << "Cmd: " << Url;
mVOIPMSSocket->get(QNetworkRequest(Url)); mVOIPMSSocket->get(QNetworkRequest(Url));
@ -127,19 +127,20 @@ void CVoipMsSMSClient::VoipServerReplyFinished(QNetworkReply *NetworkReply)
} }
else else
{ {
qDebug() << "VOIP.MS reply: " << JsonObject["status"].toString();
if(JsonObject["status"].toString() == "no_sms") if(JsonObject["status"].toString() == "no_sms")
{ {
SMSReceived(0); SMSReceived(0);
} }
else
{
qDebug() << "Failed VOIP.MS reply: " << JsonObject["status"].toString();
}
} }
} }
unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
{ {
QList<CSMSMessage> NewMessages;
int NBMsgReceived;
if(SMSArray != 0) if(SMSArray != 0)
{ {
foreach (const QJsonValue & value, *SMSArray) foreach (const QJsonValue & value, *SMSArray)
@ -152,32 +153,96 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
NewMessage.mMessageText = obj["message"].toString(); NewMessage.mMessageText = obj["message"].toString();
NewMessage.mType = (SmsType_t)obj["type"].toString().toInt(); NewMessage.mType = (SmsType_t)obj["type"].toString().toInt();
NewMessage.mVOIPMSDatabaseID = obj["id"].toString();//.toLongLong(); NewMessage.mVOIPMSDatabaseID = obj["id"].toString();//.toLongLong();
mSMSMessagesList.append(NewMessage); NewMessages.append(NewMessage);
qDebug() << obj["contact"].toString().toUtf8() << " : " << obj["message"].toString().toUtf8(); //qDebug() << obj["date"].toString() << " : " << obj["id"].toString();
}
}
if(mCurStartDate != QDate::currentDate())
{
if(mSMSMessagesList.size() != 0)
{
mCurStartDate = QDate::fromString(mSMSMessagesList.last().mDateTime.toString("yyyy-MM-dd"));
} }
QDate EndDate; NBMsgReceived = NewMessages.size();
if(mCurStartDate.daysTo(QDate::currentDate()) > VOIP_MS_SMS_DATESPAN) 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 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; return RET_OK;
} }

View File

@ -13,6 +13,7 @@
#define VOIP_MS_API_URL "https://www.voip.ms/api/v1/rest.php?" #define VOIP_MS_API_URL "https://www.voip.ms/api/v1/rest.php?"
#define VOIP_MS_SMS_DATESPAN 90 #define VOIP_MS_SMS_DATESPAN 90
#define VOIP_MS_SMS_MAX_COUNT 500
enum VoipMSRetValues enum VoipMSRetValues
{ {