adtekio_adnetworks 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +24 -0
- data/README.md +333 -0
- data/Rakefile +56 -0
- data/VERSION +1 -0
- data/adtekio_adnetworks.gemspec +297 -0
- data/lib/adtekio_adnetworks.rb +6 -0
- data/lib/adtekio_adnetworks/api_key_scrapers.rb +59 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/adcolony.rb +20 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/applift.rb +13 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/applovin.rb +13 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/chartboost.rb +18 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/crossinstall.rb +13 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/leadbolt.rb +18 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/loopme.rb +12 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/mdotm.rb +22 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/revmob.rb +22 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/tapjoy.rb +19 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/unilead.rb +13 -0
- data/lib/adtekio_adnetworks/api_key_scrapers/vungle.rb +23 -0
- data/lib/adtekio_adnetworks/importers.rb +58 -0
- data/lib/adtekio_adnetworks/importers/cost/adcolony.rb +43 -0
- data/lib/adtekio_adnetworks/importers/cost/adquant.rb +68 -0
- data/lib/adtekio_adnetworks/importers/cost/appia.rb +47 -0
- data/lib/adtekio_adnetworks/importers/cost/applifier.rb +64 -0
- data/lib/adtekio_adnetworks/importers/cost/applift.rb +41 -0
- data/lib/adtekio_adnetworks/importers/cost/applovin.rb +52 -0
- data/lib/adtekio_adnetworks/importers/cost/bidmotion.rb +82 -0
- data/lib/adtekio_adnetworks/importers/cost/chartboost.rb +40 -0
- data/lib/adtekio_adnetworks/importers/cost/crossinstall.rb +34 -0
- data/lib/adtekio_adnetworks/importers/cost/facebook.rb +39 -0
- data/lib/adtekio_adnetworks/importers/cost/fractionalmedia.rb +104 -0
- data/lib/adtekio_adnetworks/importers/cost/fyber.rb +54 -0
- data/lib/adtekio_adnetworks/importers/cost/gamegenetics.rb +44 -0
- data/lib/adtekio_adnetworks/importers/cost/glispa.rb +59 -0
- data/lib/adtekio_adnetworks/importers/cost/googleadwords.rb +99 -0
- data/lib/adtekio_adnetworks/importers/cost/jampp.rb +57 -0
- data/lib/adtekio_adnetworks/importers/cost/leadbolt.rb +43 -0
- data/lib/adtekio_adnetworks/importers/cost/lifestreet.rb +49 -0
- data/lib/adtekio_adnetworks/importers/cost/loopme.rb +63 -0
- data/lib/adtekio_adnetworks/importers/cost/matomy.rb +65 -0
- data/lib/adtekio_adnetworks/importers/cost/mdotm.rb +69 -0
- data/lib/adtekio_adnetworks/importers/cost/mmg.rb +67 -0
- data/lib/adtekio_adnetworks/importers/cost/mnectar.rb +45 -0
- data/lib/adtekio_adnetworks/importers/cost/moboqo.rb +33 -0
- data/lib/adtekio_adnetworks/importers/cost/mobpartner.rb +46 -0
- data/lib/adtekio_adnetworks/importers/cost/nanigans.rb +114 -0
- data/lib/adtekio_adnetworks/importers/cost/revmob.rb +44 -0
- data/lib/adtekio_adnetworks/importers/cost/rtbmob.rb +48 -0
- data/lib/adtekio_adnetworks/importers/cost/startapp.rb +47 -0
- data/lib/adtekio_adnetworks/importers/cost/supersonic.rb +77 -0
- data/lib/adtekio_adnetworks/importers/cost/tapjoy.rb +42 -0
- data/lib/adtekio_adnetworks/importers/cost/tokenads.rb +46 -0
- data/lib/adtekio_adnetworks/importers/cost/unilead.rb +39 -0
- data/lib/adtekio_adnetworks/importers/cost/vungle.rb +58 -0
- data/lib/adtekio_adnetworks/importers/cost_import.rb +13 -0
- data/lib/adtekio_adnetworks/importers/revenue/adcolony.rb +67 -0
- data/lib/adtekio_adnetworks/importers/revenue/applifier.rb +55 -0
- data/lib/adtekio_adnetworks/importers/revenue/applovin.rb +58 -0
- data/lib/adtekio_adnetworks/importers/revenue/chartboost.rb +43 -0
- data/lib/adtekio_adnetworks/importers/revenue/flurry.rb +85 -0
- data/lib/adtekio_adnetworks/importers/revenue/fyber.rb +61 -0
- data/lib/adtekio_adnetworks/importers/revenue/hypr_mx.rb +69 -0
- data/lib/adtekio_adnetworks/importers/revenue/lifestreet.rb +59 -0
- data/lib/adtekio_adnetworks/importers/revenue/mdotm.rb +38 -0
- data/lib/adtekio_adnetworks/importers/revenue/mopub.rb +54 -0
- data/lib/adtekio_adnetworks/importers/revenue/nexage.rb +71 -0
- data/lib/adtekio_adnetworks/importers/revenue/supersonic.rb +73 -0
- data/lib/adtekio_adnetworks/importers/revenue/tapsense.rb +38 -0
- data/lib/adtekio_adnetworks/importers/revenue/trialpay.rb +41 -0
- data/lib/adtekio_adnetworks/importers/revenue/vungle.rb +75 -0
- data/lib/adtekio_adnetworks/importers/revenue_import.rb +27 -0
- data/lib/adtekio_adnetworks/postbacks.rb +193 -0
- data/lib/adtekio_adnetworks/postbacks/aarki.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/adaction.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/adcash.rb +19 -0
- data/lib/adtekio_adnetworks/postbacks/adcolony.rb +90 -0
- data/lib/adtekio_adnetworks/postbacks/adgorithms.rb +74 -0
- data/lib/adtekio_adnetworks/postbacks/adjapon_nend.rb +39 -0
- data/lib/adtekio_adnetworks/postbacks/adknowledge.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/admob.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/adp.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/adperio.rb +19 -0
- data/lib/adtekio_adnetworks/postbacks/adquant.rb +39 -0
- data/lib/adtekio_adnetworks/postbacks/adstract.rb +15 -0
- data/lib/adtekio_adnetworks/postbacks/adxperience.rb +16 -0
- data/lib/adtekio_adnetworks/postbacks/airpush.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/app_chocolate.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/appfload.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/appia.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/appintheair.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/applifier.rb +49 -0
- data/lib/adtekio_adnetworks/postbacks/applift.rb +88 -0
- data/lib/adtekio_adnetworks/postbacks/applovin.rb +127 -0
- data/lib/adtekio_adnetworks/postbacks/appnext.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/appredeem.rb +33 -0
- data/lib/adtekio_adnetworks/postbacks/appsfire.rb +19 -0
- data/lib/adtekio_adnetworks/postbacks/appturbo.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/apsalar.rb +21 -0
- data/lib/adtekio_adnetworks/postbacks/bee7.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/bidmotion.rb +80 -0
- data/lib/adtekio_adnetworks/postbacks/blindferretmedia.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/chartboost.rb +116 -0
- data/lib/adtekio_adnetworks/postbacks/cheetah.rb +32 -0
- data/lib/adtekio_adnetworks/postbacks/clickky.rb +30 -0
- data/lib/adtekio_adnetworks/postbacks/covus.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/crossinstall.rb +26 -0
- data/lib/adtekio_adnetworks/postbacks/cyberagent_ameba.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/cyberagent_amoad.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/cyberagent_imobile.rb +43 -0
- data/lib/adtekio_adnetworks/postbacks/cyberagent_kjnw.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/cyberagent_maio.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/cyberagent_nend.rb +40 -0
- data/lib/adtekio_adnetworks/postbacks/cyberagent_smartc.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/cyberagent_smartnews.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/cyberz_asta.rb +26 -0
- data/lib/adtekio_adnetworks/postbacks/cyberz_bead.rb +26 -0
- data/lib/adtekio_adnetworks/postbacks/cyberz_imobile.rb +28 -0
- data/lib/adtekio_adnetworks/postbacks/cyberz_nend.rb +30 -0
- data/lib/adtekio_adnetworks/postbacks/datalead.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/eccrine.rb +80 -0
- data/lib/adtekio_adnetworks/postbacks/eeline.rb +50 -0
- data/lib/adtekio_adnetworks/postbacks/f5.rb +30 -0
- data/lib/adtekio_adnetworks/postbacks/fiksu.rb +43 -0
- data/lib/adtekio_adnetworks/postbacks/fiksu_applift.rb +31 -0
- data/lib/adtekio_adnetworks/postbacks/fractionalmedia.rb +78 -0
- data/lib/adtekio_adnetworks/postbacks/fyber.rb +36 -0
- data/lib/adtekio_adnetworks/postbacks/gamegenetics.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/ginga.rb +26 -0
- data/lib/adtekio_adnetworks/postbacks/glispa.rb +96 -0
- data/lib/adtekio_adnetworks/postbacks/googleadwords.rb +19 -0
- data/lib/adtekio_adnetworks/postbacks/growmobile.rb +36 -0
- data/lib/adtekio_adnetworks/postbacks/heyzap.rb +51 -0
- data/lib/adtekio_adnetworks/postbacks/inmobi.rb +50 -0
- data/lib/adtekio_adnetworks/postbacks/inneractive.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/instal.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/iqu.rb +19 -0
- data/lib/adtekio_adnetworks/postbacks/ironsource.rb +19 -0
- data/lib/adtekio_adnetworks/postbacks/jampp.rb +48 -0
- data/lib/adtekio_adnetworks/postbacks/jestadigital.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/jumpramp.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/jumptap.rb +23 -0
- data/lib/adtekio_adnetworks/postbacks/leadbolt.rb +29 -0
- data/lib/adtekio_adnetworks/postbacks/lifestreet.rb +97 -0
- data/lib/adtekio_adnetworks/postbacks/liftoff.rb +66 -0
- data/lib/adtekio_adnetworks/postbacks/loopme.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/magic_solver.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/marimedia.rb +20 -0
- data/lib/adtekio_adnetworks/postbacks/matomy.rb +59 -0
- data/lib/adtekio_adnetworks/postbacks/mdotm.rb +116 -0
- data/lib/adtekio_adnetworks/postbacks/misterbell.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/mmg.rb +20 -0
- data/lib/adtekio_adnetworks/postbacks/mnectar.rb +22 -0
- data/lib/adtekio_adnetworks/postbacks/moblin.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/moboqo.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/mobpartner.rb +19 -0
- data/lib/adtekio_adnetworks/postbacks/mopub.rb +30 -0
- data/lib/adtekio_adnetworks/postbacks/motive_interactive.rb +32 -0
- data/lib/adtekio_adnetworks/postbacks/mundo.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/nanigans.rb +38 -0
- data/lib/adtekio_adnetworks/postbacks/nativex.rb +30 -0
- data/lib/adtekio_adnetworks/postbacks/neodau.rb +19 -0
- data/lib/adtekio_adnetworks/postbacks/neverblue.rb +19 -0
- data/lib/adtekio_adnetworks/postbacks/operamedia.rb +39 -0
- data/lib/adtekio_adnetworks/postbacks/pandora.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/phunware.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/pirasin.rb +16 -0
- data/lib/adtekio_adnetworks/postbacks/playhaven.rb +31 -0
- data/lib/adtekio_adnetworks/postbacks/pocketmath.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/propeller.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/quixey.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/realzeit.rb +60 -0
- data/lib/adtekio_adnetworks/postbacks/remerge.rb +66 -0
- data/lib/adtekio_adnetworks/postbacks/revmob.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/ripple.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/roostr.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/rtbcom.rb +28 -0
- data/lib/adtekio_adnetworks/postbacks/septeni.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/seven_games.rb +51 -0
- data/lib/adtekio_adnetworks/postbacks/startapp.rb +48 -0
- data/lib/adtekio_adnetworks/postbacks/supersonic.rb +19 -0
- data/lib/adtekio_adnetworks/postbacks/tapjoy.rb +36 -0
- data/lib/adtekio_adnetworks/postbacks/taptica.rb +21 -0
- data/lib/adtekio_adnetworks/postbacks/targetcircle.rb +41 -0
- data/lib/adtekio_adnetworks/postbacks/todacell.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/tokenads.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/trademob.rb +48 -0
- data/lib/adtekio_adnetworks/postbacks/trademob_magic_solver.rb +22 -0
- data/lib/adtekio_adnetworks/postbacks/trialpay.rb +18 -0
- data/lib/adtekio_adnetworks/postbacks/unilead.rb +78 -0
- data/lib/adtekio_adnetworks/postbacks/uppsmobi.rb +19 -0
- data/lib/adtekio_adnetworks/postbacks/vungle.rb +33 -0
- data/lib/adtekio_adnetworks/postbacks/w4.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/webmedia.rb +17 -0
- data/lib/adtekio_adnetworks/postbacks/yahoo.rb +20 -0
- data/lib/adtekio_adnetworks/postbacks/youappi.rb +116 -0
- data/lib/adtekio_adnetworks/postbacks/zemail.rb +19 -0
- data/test/helper.rb +78 -0
- data/test/unit/postbacks/test_chartboost.rb +105 -0
- data/test/unit/postbacks/test_mdotm.rb +35 -0
- data/test/unit/postbacks/test_playhaven.rb +76 -0
- data/test/unit/postbacks/test_trademob_magic_solver.rb +24 -0
- data/test/unit/postbacks/test_unilead.rb +67 -0
- data/test/unit/test_api_key_scrapers.rb +302 -0
- data/test/unit/test_base_postback_class.rb +82 -0
- data/test/unit/test_cost_importers.rb +12 -0
- data/test/unit/test_postbacks.rb +33 -0
- data/test/unit/test_postbacks_definition.rb +111 -0
- data/test/unit/test_revenue_importers.rb +12 -0
- metadata +500 -0
@@ -0,0 +1,116 @@
|
|
1
|
+
class AdtekioAdnetworks::Postbacks::Youappi < AdtekioAdnetworks::BasePostbackClass
|
2
|
+
include AdtekioAdnetworks::BasePostbacks
|
3
|
+
|
4
|
+
define_network_config do
|
5
|
+
[:tracker_token]
|
6
|
+
end
|
7
|
+
|
8
|
+
define_postback_for :ios, :mac do
|
9
|
+
{ :url => "http://service.youappi.com/tracking/report",
|
10
|
+
:params => {
|
11
|
+
:params => "@{params[:click]}@",
|
12
|
+
:trackerToken => "@{netcfg.tracker_token}@"
|
13
|
+
},
|
14
|
+
:store_user => true
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
define_postback_for :ios, :apo do
|
19
|
+
{ :url => "http://service.youappi.com/tracking/event",
|
20
|
+
:params => {
|
21
|
+
:params => "@{user.click_data['click']}@",
|
22
|
+
:eventid => "app_open",
|
23
|
+
:eventidseq => "1",
|
24
|
+
:trackertoken => "@{netcfg.tracker_token}@",
|
25
|
+
:deviceidfa => "@{event.adid}@",
|
26
|
+
:event_ts => "@{params[:tscreated]}@"
|
27
|
+
},
|
28
|
+
:user_required => true
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
define_postback_for :ios, :fun do
|
33
|
+
{ :url => "http://service.youappi.com/tracking/event",
|
34
|
+
:params => {
|
35
|
+
:params => "@{user.click_data['click']}@",
|
36
|
+
:eventid => "funnel",
|
37
|
+
:eventidseq => "1",
|
38
|
+
:trackertoken => "@{netcfg.tracker_token}@",
|
39
|
+
:deviceidfa => "@{event.adid}@",
|
40
|
+
:event_ts => "@{params[:tscreated]}@"
|
41
|
+
},
|
42
|
+
:user_required => true,
|
43
|
+
:check => "event.params[:funnel_step] == 'tutorial_complete'"
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
define_postback_for :ios, :pay do
|
48
|
+
{ :url => "http://service.youappi.com/tracking/event",
|
49
|
+
:params => {
|
50
|
+
:params => "@{user.click_data['click']}@",
|
51
|
+
:eventid => "purchase",
|
52
|
+
:eventidseq => "1",
|
53
|
+
:eventvalue => "@{event.revenue}@",
|
54
|
+
:trackertoken => "@{netcfg.tracker_token}@",
|
55
|
+
:deviceidfa => "@{event.adid}@",
|
56
|
+
:event_ts => "@{params[:tscreated]}@"
|
57
|
+
},
|
58
|
+
:user_required => true
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
define_postback_for :android, :mac do
|
63
|
+
{ :url => "http://service.youappi.com/tracking/report",
|
64
|
+
:params => {
|
65
|
+
:params => "@{params[:click]}@",
|
66
|
+
:trackerToken => "@{netcfg.tracker_token}@"
|
67
|
+
},
|
68
|
+
:store_user => true
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
define_postback_for :android, :apo do
|
73
|
+
{ :url => "http://service.youappi.com/tracking/event",
|
74
|
+
:params => {
|
75
|
+
:params => "@{user.click_data['click']}@",
|
76
|
+
:eventid => "app_open",
|
77
|
+
:eventidseq => "1",
|
78
|
+
:trackertoken => "@{netcfg.tracker_token}@",
|
79
|
+
:deviceidfa => "@{event.adid}@",
|
80
|
+
:event_ts => "@{params[:tscreated]}@"
|
81
|
+
},
|
82
|
+
:user_required => true
|
83
|
+
}
|
84
|
+
end
|
85
|
+
|
86
|
+
define_postback_for :android, :fun do
|
87
|
+
{ :url => "http://service.youappi.com/tracking/event",
|
88
|
+
:params => {
|
89
|
+
:params => "@{user.click_data['click']}@",
|
90
|
+
:eventid => "funnel",
|
91
|
+
:eventidseq => "1",
|
92
|
+
:trackertoken => "@{netcfg.tracker_token}@",
|
93
|
+
:deviceidfa => "@{event.adid}@",
|
94
|
+
:event_ts => "@{params[:tscreated]}@"
|
95
|
+
},
|
96
|
+
:user_required => true,
|
97
|
+
:check => "event.params[:funnel_step] == 'level_won'"
|
98
|
+
}
|
99
|
+
end
|
100
|
+
|
101
|
+
define_postback_for :android, :pay do
|
102
|
+
{ :url => "http://service.youappi.com/tracking/event",
|
103
|
+
:params => {
|
104
|
+
:params => "@{user.click_data['click']}@",
|
105
|
+
:eventid => "purchase",
|
106
|
+
:eventidseq => "1",
|
107
|
+
:eventvalue => "@{event.revenue}@",
|
108
|
+
:trackertoken => "@{netcfg.tracker_token}@",
|
109
|
+
:deviceidfa => "@{event.adid}@",
|
110
|
+
:event_ts => "@{params[:tscreated]}@"
|
111
|
+
},
|
112
|
+
:user_required => true
|
113
|
+
}
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class AdtekioAdnetworks::Postbacks::Zemail < AdtekioAdnetworks::BasePostbackClass
|
2
|
+
include AdtekioAdnetworks::BasePostbacks
|
3
|
+
|
4
|
+
define_network_config do
|
5
|
+
[:axid, :gmid]
|
6
|
+
end
|
7
|
+
|
8
|
+
define_postback_for :all, :mac do
|
9
|
+
{ :url => "http://gztkr.mobi/",
|
10
|
+
:params => {
|
11
|
+
:gmid => "@{netcfg.gmid}@",
|
12
|
+
:axid => "@{netcfg.axid}@",
|
13
|
+
:cxt => "s2s",
|
14
|
+
:uxid => "@{params[:click]}@"
|
15
|
+
},
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'minitest/autorun'
|
12
|
+
require 'minitest/unit'
|
13
|
+
require 'shoulda/context'
|
14
|
+
require 'rr'
|
15
|
+
require 'pry'
|
16
|
+
require 'ostruct'
|
17
|
+
|
18
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
19
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
20
|
+
require 'adtekio_adnetworks'
|
21
|
+
|
22
|
+
class Minitest::Test
|
23
|
+
def os(hsh = {})
|
24
|
+
OpenStruct.new(hsh)
|
25
|
+
end
|
26
|
+
|
27
|
+
def instance_with_event(event = nil, opts = {})
|
28
|
+
test_klazz.new(event || os,
|
29
|
+
opts[:user] || os,
|
30
|
+
opts[:netcfg] || os,
|
31
|
+
opts[:params] || os)
|
32
|
+
end
|
33
|
+
|
34
|
+
def dump_exception(e)
|
35
|
+
puts "-"*20
|
36
|
+
puts e.message
|
37
|
+
puts "-"*20
|
38
|
+
puts e.backtrace
|
39
|
+
puts "-"*20
|
40
|
+
end
|
41
|
+
|
42
|
+
def for_all_cost_importers(&block)
|
43
|
+
AdtekioAdnetworks::CostImport.networks.map do |network,klz|
|
44
|
+
begin
|
45
|
+
yield(network, klz)
|
46
|
+
rescue Exception => e
|
47
|
+
dump_exception(e)
|
48
|
+
assert(false, "Failed cost test for #{network}")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def for_all_revenue_importers(&block)
|
54
|
+
AdtekioAdnetworks::RevenueImport.networks.map do |network,klz|
|
55
|
+
begin
|
56
|
+
yield(network, klz)
|
57
|
+
rescue Exception => e
|
58
|
+
dump_exception(e)
|
59
|
+
assert(false, "Failed revenue test for #{network}")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def for_all_events(&block)
|
65
|
+
AdtekioAdnetworks::Postbacks.networks.map do |network,klz|
|
66
|
+
klz.postbacks.map do |platform,events|
|
67
|
+
events.map do |event|
|
68
|
+
begin
|
69
|
+
yield(network, klz, platform, event)
|
70
|
+
rescue Exception => e
|
71
|
+
dump_exception(e)
|
72
|
+
assert(false, "Failed for #{network} / #{platform} / #{event}")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require File.dirname(File.expand_path(__FILE__)) + '/../../helper.rb'
|
2
|
+
|
3
|
+
module Postbacks
|
4
|
+
class TestChartboost < Minitest::Test
|
5
|
+
def test_klazz
|
6
|
+
AdtekioAdnetworks::Postbacks::Chartboost
|
7
|
+
end
|
8
|
+
|
9
|
+
class ChartboostEvent < OpenStruct
|
10
|
+
def android?
|
11
|
+
!!is_android
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "helper methods - iap_body" do
|
16
|
+
should "work with empty input" do
|
17
|
+
e = ChartboostEvent.new(:currency => "CUR",
|
18
|
+
:trigger_stamp => "STAMP",
|
19
|
+
:adid => "ADID")
|
20
|
+
nc = os(:api_token =>"TOKEN")
|
21
|
+
params = os(:price => 1.2, :st1 => "PRODUCT_ID")
|
22
|
+
|
23
|
+
obj = instance_with_event(e, :netcfg => nc, :params => params)
|
24
|
+
hsh = JSON.parse(obj.iap_body)
|
25
|
+
|
26
|
+
assert_equal("PRODUCT_ID", hsh["iap"]["product_id"])
|
27
|
+
assert_equal("ADID", hsh["identifiers"]["ifa"])
|
28
|
+
assert_equal("TOKEN", hsh["token"])
|
29
|
+
assert_equal("CUR", hsh["iap"]["currency"])
|
30
|
+
assert_equal("STAMP", hsh["timestamp"])
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "helper methods - signature" do
|
35
|
+
should "work with empty input" do
|
36
|
+
obj = instance_with_event(ChartboostEvent.new)
|
37
|
+
assert_equal("cccc6a43f6a1956435a451d876272ad7"+
|
38
|
+
"aae1ac0baec87f64ab27f8b131ccb2f8", obj.signature)
|
39
|
+
end
|
40
|
+
|
41
|
+
should "work with all inputs" do
|
42
|
+
e = os(:trigger_stamp => "fubar")
|
43
|
+
nc = os(:app_id => "app_id", :api_token => "api_token")
|
44
|
+
obj = instance_with_event(e, :netcfg => nc)
|
45
|
+
assert_equal("85191be548c623170605aaf539a03fa3"+
|
46
|
+
"9810f2c66e6262da3529ddefc79a8fb8", obj.signature)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context "helper methods - install_signature" do
|
51
|
+
should "work with empty input" do
|
52
|
+
obj = instance_with_event(ChartboostEvent.new)
|
53
|
+
assert_equal("b6577f8ada64c295ee9a927071274004"+
|
54
|
+
"d0cc592428a6c80175997a518086bf66", obj.install_signature)
|
55
|
+
end
|
56
|
+
|
57
|
+
should "work with all inputs" do
|
58
|
+
e = os(:trigger_stamp => "fubar")
|
59
|
+
nc = os(:app_id => "app_id", :api_token => "api_token",
|
60
|
+
:api_secret => "api_secret")
|
61
|
+
obj = instance_with_event(e, :netcfg => nc)
|
62
|
+
assert_equal("785dba88b030f33387f70439b15cc115"+
|
63
|
+
"98a64c13be93c6262f8fb7913279a3d8", obj.install_signature)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context "helper methods - install_body" do
|
68
|
+
should "have working android? true" do
|
69
|
+
obj = instance_with_event(ChartboostEvent.new(:is_android => true))
|
70
|
+
assert_equal({"app_id"=>nil,"claim"=>1}, JSON.parse(obj.install_body))
|
71
|
+
end
|
72
|
+
|
73
|
+
should "have working android with gadid" do
|
74
|
+
obj = instance_with_event(ChartboostEvent.new(:is_android => true,
|
75
|
+
:gadid => "gadid"))
|
76
|
+
assert_equal({"gaid" => "gadid", "uuid" => "gadid",
|
77
|
+
"app_id" => nil, "claim" => 1},
|
78
|
+
JSON.parse(obj.install_body))
|
79
|
+
end
|
80
|
+
|
81
|
+
should "have working android with android_id" do
|
82
|
+
obj = instance_with_event(ChartboostEvent.
|
83
|
+
new(:is_android => true,
|
84
|
+
:android_id => "android_id",
|
85
|
+
:gadid => "gadid"))
|
86
|
+
assert_equal({"gaid" => "gadid", "uuid" => "android_id",
|
87
|
+
"app_id" => nil, "claim" => 1},
|
88
|
+
JSON.parse(obj.install_body))
|
89
|
+
end
|
90
|
+
|
91
|
+
should "work if not android" do
|
92
|
+
obj = instance_with_event(ChartboostEvent.new(:is_android => false))
|
93
|
+
assert_equal({"ifa" => nil, "app_id"=>nil,"claim"=>1},
|
94
|
+
JSON.parse(obj.install_body))
|
95
|
+
end
|
96
|
+
|
97
|
+
should "set app_id if netcfg contains value" do
|
98
|
+
obj = instance_with_event(ChartboostEvent.new(:is_android => false),
|
99
|
+
:netcfg => os(:app_id=>"app_id"))
|
100
|
+
assert_equal({"ifa" => nil, "app_id"=>"app_id","claim"=>1},
|
101
|
+
JSON.parse(obj.install_body))
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.dirname(File.expand_path(__FILE__)) + '/../../helper.rb'
|
2
|
+
|
3
|
+
module Postbacks
|
4
|
+
class TestMdotm < Minitest::Test
|
5
|
+
def test_klazz
|
6
|
+
AdtekioAdnetworks::Postbacks::Mdotm
|
7
|
+
end
|
8
|
+
|
9
|
+
context "helper method - android_id" do
|
10
|
+
should "work with empty input" do
|
11
|
+
obj = instance_with_event
|
12
|
+
assert_equal nil, obj.android_id
|
13
|
+
end
|
14
|
+
|
15
|
+
should "work with some input" do
|
16
|
+
params = os(:android_id => "android_id")
|
17
|
+
obj = instance_with_event(nil, :params => params)
|
18
|
+
assert_equal "696565da69675bb7efe52dc8d7c2e7cd43b111f7", obj.android_id
|
19
|
+
end
|
20
|
+
|
21
|
+
should "generate url" do
|
22
|
+
params = os(:android_id => "android_id")
|
23
|
+
nc = os(:adv_id => "advertiser_id")
|
24
|
+
event = os(:bundleid => "bundleid")
|
25
|
+
obj = instance_with_event(event, :params => params, :netcfg => nc)
|
26
|
+
|
27
|
+
r = obj.mac(:android)
|
28
|
+
assert_equal("http://ads.mdotm.com/ads/receiver.php?advid="+
|
29
|
+
"advertiser_id&androidid=696565da69675bb7efe52"+
|
30
|
+
"dc8d7c2e7cd43b111f7&clickid=&deviceid=&"+
|
31
|
+
"package=bundleid", r.first[:url])
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require File.dirname(File.expand_path(__FILE__)) + '/../../helper.rb'
|
2
|
+
|
3
|
+
module Postbacks
|
4
|
+
class TestPlayhaven < Minitest::Test
|
5
|
+
def test_klazz
|
6
|
+
AdtekioAdnetworks::Postbacks::Playhaven
|
7
|
+
end
|
8
|
+
|
9
|
+
context "helper method - compute_params" do
|
10
|
+
should "work with empty input" do
|
11
|
+
obj = instance_with_event
|
12
|
+
mock(SecureRandom).hex.times(2) { "19fd147d6738e02337c4eccd5b3b3813" }
|
13
|
+
|
14
|
+
assert_equal({ :token=>nil, :tracking=>"0",
|
15
|
+
:nonce=>"19fd147d6738e02337c4eccd5b3b3813",
|
16
|
+
:ph_conversion=>1, :sig4=>"ByQeeSt3oxJFbURKiwf5rtwSFkE"},
|
17
|
+
obj.compute_params)
|
18
|
+
|
19
|
+
assert_equal("https://partner-api-ssl.playhaven.com/v4/advertiser/"+
|
20
|
+
"open?nonce=19fd147d6738e02337c4eccd5b3b3813&"+
|
21
|
+
"ph_conversion=1&sig4=ByQeeSt3oxJFbURKiwf5rtwSFkE&"+
|
22
|
+
"token&tracking=0",obj.mac(:ios).first[:url])
|
23
|
+
end
|
24
|
+
|
25
|
+
should "work with an event containing an adid" do
|
26
|
+
obj = instance_with_event(os(:adid => "adid"))
|
27
|
+
mock(SecureRandom).hex.times(2) { "19fd147d6738e02337c4eccd5b3b3813" }
|
28
|
+
|
29
|
+
assert_equal({ :token=>nil, :tracking=>"1",
|
30
|
+
:nonce=>"19fd147d6738e02337c4eccd5b3b3813",
|
31
|
+
:ph_conversion=>1, :sig4=>"B13Vmprec-tMXR7Dep15RLVESE0",
|
32
|
+
:ifa => "adid"},
|
33
|
+
obj.compute_params)
|
34
|
+
|
35
|
+
assert_equal("https://partner-api-ssl.playhaven.com/v4/advertiser/"+
|
36
|
+
"open?ifa=adid&nonce=19fd147d6738e02337c4eccd5b3b3813&"+
|
37
|
+
"ph_conversion=1&sig4=B13Vmprec-tMXR7Dep15RLVESE0&token"+
|
38
|
+
"&tracking=1",obj.mac(:ios).first[:url])
|
39
|
+
end
|
40
|
+
|
41
|
+
should "work with an event containing an adid and token" do
|
42
|
+
obj = instance_with_event(os(:adid => "adid"),
|
43
|
+
:netcfg => os(:token => "token"))
|
44
|
+
mock(SecureRandom).hex.times(2) { "19fd147d6738e02337c4eccd5b3b3813" }
|
45
|
+
|
46
|
+
assert_equal({ :token=>"token", :tracking=>"1",
|
47
|
+
:nonce=>"19fd147d6738e02337c4eccd5b3b3813",
|
48
|
+
:ph_conversion=>1, :sig4=>"K8f2gGgiD2mgalhnRDmk8MEwUss",
|
49
|
+
:ifa => "adid"},
|
50
|
+
obj.compute_params)
|
51
|
+
|
52
|
+
assert_equal("https://partner-api-ssl.playhaven.com/v4/advertiser/"+
|
53
|
+
"open?ifa=adid&nonce=19fd147d6738e02337c4eccd5b3b3813&"+
|
54
|
+
"ph_conversion=1&sig4=K8f2gGgiD2mgalhnRDmk8MEwUss&"+
|
55
|
+
"token=token&tracking=1",obj.mac(:ios).first[:url])
|
56
|
+
end
|
57
|
+
|
58
|
+
should "work with an event containing an adid, token and hmac" do
|
59
|
+
nc = os(:token => "token", :hmac => "hmac")
|
60
|
+
obj = instance_with_event(os(:adid => "adid"), :netcfg => nc)
|
61
|
+
mock(SecureRandom).hex.times(2) { "19fd147d6738e02337c4eccd5b3b3813" }
|
62
|
+
|
63
|
+
assert_equal({ :token=>"token", :tracking=>"1",
|
64
|
+
:nonce=>"19fd147d6738e02337c4eccd5b3b3813",
|
65
|
+
:ph_conversion=>1, :sig4=>"LuCilzd1kDmdhx4MktsHjNWyUCU",
|
66
|
+
:ifa => "adid"},
|
67
|
+
obj.compute_params)
|
68
|
+
|
69
|
+
assert_equal("https://partner-api-ssl.playhaven.com/v4/advertiser/"+
|
70
|
+
"open?ifa=adid&nonce=19fd147d6738e02337c4eccd5b3b3813&"+
|
71
|
+
"ph_conversion=1&sig4=LuCilzd1kDmdhx4MktsHjNWyUCU&"+
|
72
|
+
"token=token&tracking=1",obj.mac(:ios).first[:url])
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.dirname(File.expand_path(__FILE__)) + '/../../helper.rb'
|
2
|
+
|
3
|
+
module Postbacks
|
4
|
+
class TestTrademobMagicSolver < Minitest::Test
|
5
|
+
def test_klazz
|
6
|
+
AdtekioAdnetworks::Postbacks::TrademobMagicSolver
|
7
|
+
end
|
8
|
+
|
9
|
+
context "post body construction" do
|
10
|
+
should "have body" do
|
11
|
+
nc = os(:partner_id => "partner_id")
|
12
|
+
params = os(:locale => "locale")
|
13
|
+
event = os(:uuid => "uuid")
|
14
|
+
obj = instance_with_event(event, :params => params, :netcfg => nc)
|
15
|
+
|
16
|
+
r = obj.mac(:ios).first
|
17
|
+
assert_equal("lang=&locale=locale&partner_id=partner_id&udid=uuid",
|
18
|
+
r[:body])
|
19
|
+
assert_equal("http://api.magicsolver.com/iphone/apps/"+
|
20
|
+
"free_app_magic/register_udid/", r[:url])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|