Added unique id handling.
[qadmob:trismers-qtadservice.git] / platforms / adfonic / qadplatformadfonic.cpp
1 #include "qadplatformadfonic.h"
2 #include <QUrlQuery>
3 #include "qad.h"
4 #include "qadservice.h"
5
6 const QString kAdfonicUrlFormat = "http://adfonic.net/ad/%1";
7
8 QAdPlatformAdfonic::QAdPlatformAdfonic()
9 {
10 }
11
12 bool QAdPlatformAdfonic::prepareRequest(const QAdService &adService, QUrl &url, QByteArray &/*bodyData*/)
13 {
14     if (adService.slotId().length() == 0)
15         return false;
16
17     url = QString(kAdfonicUrlFormat).arg(adService.slotId());
18     QUrlQuery query;
19
20     query.addQueryItem("r.id", adService.uniqueId());
21     query.addQueryItem("s.test", adService.testMode() ? "1": "0");
22     query.addQueryItem("t.markup", "0");
23     query.addQueryItem("t.format", "json");
24     url.setQuery(query);
25     return true;
26 }
27
28 QAd *QAdPlatformAdfonic::createAdFromResponse(const QVariant &response)
29 {
30     QUrl url;
31     QUrl imageUrl;
32     QAd::Format adFormat = QAd::Null;
33
34     if (response.type() != QVariant::Map)
35         return NULL;
36     QVariantMap map = response.toMap();
37     if (map.value("status") != QString("success"))
38         return NULL;
39
40     QVariant format = map.value("format");
41     if (format.type() == QVariant::String) {
42         QString formatString = format.toString();
43
44         if (formatString == "banner") {
45             adFormat = QAd::Banner;
46         } else {
47             if (formatString == "text") {
48                 adFormat = QAd::Text;
49             } else {
50                 if (formatString.indexOf("image") == 0) {
51                     adFormat = QAd::Image;
52                 }
53             }
54         }
55     }
56
57     QVariant destination = map.value("destination");
58     if (destination.type() == QVariant::Map) {
59         QVariantMap destinationMap = destination.toMap();
60
61         if (destinationMap.value("type") == QString("URL")) {
62             url = QUrl(destinationMap.value("url").toUrl());
63         }
64     }
65     QVariant components = map.value("components");
66     if (components.type() == QVariant::Map) {
67         QVariantMap componentsMap = components.toMap();
68         QVariant imageComponent = componentsMap.value("image");
69
70         if (imageComponent.type() == QVariant::Map) {
71             QVariantMap imageComponentMap = imageComponent.toMap();
72
73             imageUrl = QUrl(imageComponentMap.value("url").toUrl());
74         }
75     }
76     QAd *newAd = new QAd();
77
78     newAd->setUrl(url);
79     newAd->setImageUrl(imageUrl);
80     return newAd;
81 }