First version. ADHERE service support with label, banner and media ads.
[qtmads] / src / SOMA / SOMA_serviceplugin.cpp
1 /*
2  * Copyright (c) 2009 Eetu Lehmusvuo.
3  *
4  * This file is part of QtMAds.
5  *
6  * QtMAds is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * QtMAds is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with QtMAds.  If not, see <http://www.gnu.org/licenses/>.
18  *
19  */
20
21 #include "SOMA_serviceplugin.h"
22
23 #include <QDebug>
24 #include <QXmlStreamReader>
25 #include <QFile>
26
27 #include "../qtmadsservice.h"
28 #include "../qtmadsadwidget.h"
29
30 SomaServicePlugin::SomaServicePlugin()
31 {
32 }
33
34 SomaServicePlugin::~SomaServicePlugin()
35 {
36 }
37
38
39 bool SomaServicePlugin::parseUrlParameters(
40         const QHash<QString, QVariant> &dynamicParameters, QList<QPair<QString,QString> > &parsedParameters)
41 {
42     qDebug() << "QtmadsService::parseUrlParameters()";
43     QHash<QString, QString>::iterator iter = parameterTags.begin();
44     QString tag;
45     QString serviceTag;
46     QString value;
47     // go through all parameters
48     while (iter != parameterTags.end()){
49         tag.append(iter.key());
50         serviceTag.append(iter.value());
51
52         // add dynamic parameters
53         if(dynamicParameters.contains(tag)){
54             value.append(dynamicParameters.value(tag).toString());
55             if(0 == tag.compare(TAG_ADTYPE)){
56                 this->reqAdType = this->getAdTypeFromString(value);
57                 if(this->reqAdType == txtAd){
58                     qDebug() << "txtAd";
59                 }
60             }
61         }
62
63         // add service parameter
64         if(0 == tag.compare(TAG_ACCOUNTID)){
65             value.append(this->accountId);
66         }else if(0 == tag.compare(TAG_PASSWORD)){
67             value.append(this->password);
68
69         // add default ad parameters
70         }else if(0 == tag.compare(TAG_ADTYPE)){
71             if(value.isEmpty()){
72                 value.append(this->getStringFromAdType(this->defAdType));
73                 this->reqAdType = this->defAdType;
74             }
75         }else if(0 == tag.compare(TAG_TRANSACTIONID)){
76             if(value.isEmpty())
77                 value.append(this->transactionId);
78
79         }else if(0 == tag.compare(TAG_LANGUAGE)){
80             if(value.isEmpty())
81                 value.append(this->language);
82         }
83
84         //qDebug() << "tag: " << serviceTag << " value: " << value;
85         parsedParameters.append(QPair<QString,QString>(serviceTag,value));
86         tag.clear();
87         serviceTag.clear();
88         value.clear();
89         iter++;
90     }
91
92     /* userid
93     reqParameters.append(QPair<QString,QString>("accountid","1"));
94
95     reqParameters.append(QPair<QString,QString>("password","Testi1Test2"));
96     reqParameters.append(QPair<QString,QString>("transactionid","10:20:00:1"));
97     QHash<QString, QVariant>::const_iterator iter = dynamicParameters.constFind("adtype");
98     reqParameters.append(QPair<QString,QString>("messagetype", iter.value().toString()));
99     reqParameters.append(QPair<QString,QString>("transactionid","10:20:00:1"));
100     reqParameters.append(QPair<QString,QString>("language","en"));*/
101 }
102
103
104 bool SomaServicePlugin::parseReceivedAd(const QByteArray &response, QHash<QString, QVariant> &parsedAd)
105 {
106     qDebug() << "parseReceivedAd()";
107     if(this->reqAdType == txtAd){
108         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(txtAd)));
109         parsedAd.insert(TAG_TEXT, QVariant((QString)response));
110     }else if(this->reqAdType == imageAd){
111         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(imageAd)));
112         parsedAd.insert(TAG_CONTENT_URL, QVariant((QString)response));
113     }else if(this->reqAdType == imageBannerAd){
114         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(imageBannerAd)));
115         parsedAd.insert(TAG_HTML, QVariant((QString)response));
116     }else if(this->reqAdType == txtBannerAd){
117         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(txtBannerAd)));
118         parsedAd.insert(TAG_HTML, QVariant((QString)response));
119     }else if(this->reqAdType == audioAd){
120         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(audioAd)));
121         parsedAd.insert(TAG_CONTENT_URL, QVariant((QString)response));
122     }else if(this->reqAdType == videoAd){
123         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(videoAd)));
124         parsedAd.insert(TAG_CONTENT_URL, QVariant((QString)response));
125     }else{
126         qDebug() << "Parse for ad type not found";
127     }
128 }
129
130 AdType SomaServicePlugin::getAdTypeFromString(QString adStr)
131 {
132     AdType adType = anyAd;
133
134     if(0 == adStr.compare("txt")){
135         adType = txtAd;
136     }else if(0 == adStr.compare("picturead")){
137         adType = imageAd;
138     }else if(0 == adStr.compare("mobwebtext")){
139         adType = txtBannerAd;
140     }else if(0 == adStr.compare("mobwebbanner")){
141         adType = imageBannerAd;
142     }else if(0 == adStr.compare("audioad")){
143         adType = audioAd;
144     }else if(0 == adStr.compare("videoad")){
145         adType = videoAd;
146     }
147     return adType;
148 }
149
150 QString SomaServicePlugin::getStringFromAdType(AdType adType)
151 {
152     QString adStr;
153     switch(adType){
154         default:
155         case anyAd:
156             adStr.append("anyAd");
157             break;
158         case txtAd:
159             adStr.append("txt");
160             break;
161         case imageAd:
162             adStr.append("picturead");
163             break;
164         case txtBannerAd:
165             adStr.append("mobwebtext");
166             break;
167         case imageBannerAd:
168             adStr.append("mobwebbanner");
169             break;
170         case audioAd:
171             adStr.append("audioad");
172             break;
173         case videoAd:
174             adStr.append("videoad");
175             break;
176     }
177     return adStr;
178 }