First version. ADHERE service support with label, banner and media ads.
[qtmads] / src / SOMA / SOMA_serviceplugin.cpp
diff --git a/src/SOMA/SOMA_serviceplugin.cpp b/src/SOMA/SOMA_serviceplugin.cpp
new file mode 100644 (file)
index 0000000..13fc524
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2009 Eetu Lehmusvuo.
+ *
+ * This file is part of QtMAds.
+ *
+ * QtMAds is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * QtMAds is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with QtMAds.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "SOMA_serviceplugin.h"
+
+#include <QDebug>
+#include <QXmlStreamReader>
+#include <QFile>
+
+#include "../qtmadsservice.h"
+#include "../qtmadsadwidget.h"
+
+SomaServicePlugin::SomaServicePlugin()
+{
+}
+
+SomaServicePlugin::~SomaServicePlugin()
+{
+}
+
+
+bool SomaServicePlugin::parseUrlParameters(
+        const QHash<QString, QVariant> &dynamicParameters, QList<QPair<QString,QString> > &parsedParameters)
+{
+    qDebug() << "QtmadsService::parseUrlParameters()";
+    QHash<QString, QString>::iterator iter = parameterTags.begin();
+    QString tag;
+    QString serviceTag;
+    QString value;
+    // go through all parameters
+    while (iter != parameterTags.end()){
+        tag.append(iter.key());
+        serviceTag.append(iter.value());
+
+        // add dynamic parameters
+        if(dynamicParameters.contains(tag)){
+            value.append(dynamicParameters.value(tag).toString());
+            if(0 == tag.compare(TAG_ADTYPE)){
+                this->reqAdType = this->getAdTypeFromString(value);
+                if(this->reqAdType == txtAd){
+                    qDebug() << "txtAd";
+                }
+            }
+        }
+
+        // add service parameter
+        if(0 == tag.compare(TAG_ACCOUNTID)){
+            value.append(this->accountId);
+        }else if(0 == tag.compare(TAG_PASSWORD)){
+            value.append(this->password);
+
+        // add default ad parameters
+        }else if(0 == tag.compare(TAG_ADTYPE)){
+            if(value.isEmpty()){
+                value.append(this->getStringFromAdType(this->defAdType));
+                this->reqAdType = this->defAdType;
+            }
+        }else if(0 == tag.compare(TAG_TRANSACTIONID)){
+            if(value.isEmpty())
+                value.append(this->transactionId);
+
+        }else if(0 == tag.compare(TAG_LANGUAGE)){
+            if(value.isEmpty())
+                value.append(this->language);
+        }
+
+        //qDebug() << "tag: " << serviceTag << " value: " << value;
+        parsedParameters.append(QPair<QString,QString>(serviceTag,value));
+        tag.clear();
+        serviceTag.clear();
+        value.clear();
+        iter++;
+    }
+
+    /* userid
+    reqParameters.append(QPair<QString,QString>("accountid","1"));
+
+    reqParameters.append(QPair<QString,QString>("password","Testi1Test2"));
+    reqParameters.append(QPair<QString,QString>("transactionid","10:20:00:1"));
+    QHash<QString, QVariant>::const_iterator iter = dynamicParameters.constFind("adtype");
+    reqParameters.append(QPair<QString,QString>("messagetype", iter.value().toString()));
+    reqParameters.append(QPair<QString,QString>("transactionid","10:20:00:1"));
+    reqParameters.append(QPair<QString,QString>("language","en"));*/
+}
+
+
+bool SomaServicePlugin::parseReceivedAd(const QByteArray &response, QHash<QString, QVariant> &parsedAd)
+{
+    qDebug() << "parseReceivedAd()";
+    if(this->reqAdType == txtAd){
+        parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(txtAd)));
+        parsedAd.insert(TAG_TEXT, QVariant((QString)response));
+    }else if(this->reqAdType == imageAd){
+        parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(imageAd)));
+        parsedAd.insert(TAG_CONTENT_URL, QVariant((QString)response));
+    }else if(this->reqAdType == imageBannerAd){
+        parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(imageBannerAd)));
+        parsedAd.insert(TAG_HTML, QVariant((QString)response));
+    }else if(this->reqAdType == txtBannerAd){
+        parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(txtBannerAd)));
+        parsedAd.insert(TAG_HTML, QVariant((QString)response));
+    }else if(this->reqAdType == audioAd){
+        parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(audioAd)));
+        parsedAd.insert(TAG_CONTENT_URL, QVariant((QString)response));
+    }else if(this->reqAdType == videoAd){
+        parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(videoAd)));
+        parsedAd.insert(TAG_CONTENT_URL, QVariant((QString)response));
+    }else{
+        qDebug() << "Parse for ad type not found";
+    }
+}
+
+AdType SomaServicePlugin::getAdTypeFromString(QString adStr)
+{
+    AdType adType = anyAd;
+
+    if(0 == adStr.compare("txt")){
+        adType = txtAd;
+    }else if(0 == adStr.compare("picturead")){
+        adType = imageAd;
+    }else if(0 == adStr.compare("mobwebtext")){
+        adType = txtBannerAd;
+    }else if(0 == adStr.compare("mobwebbanner")){
+        adType = imageBannerAd;
+    }else if(0 == adStr.compare("audioad")){
+        adType = audioAd;
+    }else if(0 == adStr.compare("videoad")){
+        adType = videoAd;
+    }
+    return adType;
+}
+
+QString SomaServicePlugin::getStringFromAdType(AdType adType)
+{
+    QString adStr;
+    switch(adType){
+        default:
+        case anyAd:
+            adStr.append("anyAd");
+            break;
+        case txtAd:
+            adStr.append("txt");
+            break;
+        case imageAd:
+            adStr.append("picturead");
+            break;
+        case txtBannerAd:
+            adStr.append("mobwebtext");
+            break;
+        case imageBannerAd:
+            adStr.append("mobwebbanner");
+            break;
+        case audioAd:
+            adStr.append("audioad");
+            break;
+        case videoAd:
+            adStr.append("videoad");
+            break;
+    }
+    return adStr;
+}