adtekio_adnetworks 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (212) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/Gemfile +24 -0
  5. data/README.md +333 -0
  6. data/Rakefile +56 -0
  7. data/VERSION +1 -0
  8. data/adtekio_adnetworks.gemspec +297 -0
  9. data/lib/adtekio_adnetworks.rb +6 -0
  10. data/lib/adtekio_adnetworks/api_key_scrapers.rb +59 -0
  11. data/lib/adtekio_adnetworks/api_key_scrapers/adcolony.rb +20 -0
  12. data/lib/adtekio_adnetworks/api_key_scrapers/applift.rb +13 -0
  13. data/lib/adtekio_adnetworks/api_key_scrapers/applovin.rb +13 -0
  14. data/lib/adtekio_adnetworks/api_key_scrapers/chartboost.rb +18 -0
  15. data/lib/adtekio_adnetworks/api_key_scrapers/crossinstall.rb +13 -0
  16. data/lib/adtekio_adnetworks/api_key_scrapers/leadbolt.rb +18 -0
  17. data/lib/adtekio_adnetworks/api_key_scrapers/loopme.rb +12 -0
  18. data/lib/adtekio_adnetworks/api_key_scrapers/mdotm.rb +22 -0
  19. data/lib/adtekio_adnetworks/api_key_scrapers/revmob.rb +22 -0
  20. data/lib/adtekio_adnetworks/api_key_scrapers/tapjoy.rb +19 -0
  21. data/lib/adtekio_adnetworks/api_key_scrapers/unilead.rb +13 -0
  22. data/lib/adtekio_adnetworks/api_key_scrapers/vungle.rb +23 -0
  23. data/lib/adtekio_adnetworks/importers.rb +58 -0
  24. data/lib/adtekio_adnetworks/importers/cost/adcolony.rb +43 -0
  25. data/lib/adtekio_adnetworks/importers/cost/adquant.rb +68 -0
  26. data/lib/adtekio_adnetworks/importers/cost/appia.rb +47 -0
  27. data/lib/adtekio_adnetworks/importers/cost/applifier.rb +64 -0
  28. data/lib/adtekio_adnetworks/importers/cost/applift.rb +41 -0
  29. data/lib/adtekio_adnetworks/importers/cost/applovin.rb +52 -0
  30. data/lib/adtekio_adnetworks/importers/cost/bidmotion.rb +82 -0
  31. data/lib/adtekio_adnetworks/importers/cost/chartboost.rb +40 -0
  32. data/lib/adtekio_adnetworks/importers/cost/crossinstall.rb +34 -0
  33. data/lib/adtekio_adnetworks/importers/cost/facebook.rb +39 -0
  34. data/lib/adtekio_adnetworks/importers/cost/fractionalmedia.rb +104 -0
  35. data/lib/adtekio_adnetworks/importers/cost/fyber.rb +54 -0
  36. data/lib/adtekio_adnetworks/importers/cost/gamegenetics.rb +44 -0
  37. data/lib/adtekio_adnetworks/importers/cost/glispa.rb +59 -0
  38. data/lib/adtekio_adnetworks/importers/cost/googleadwords.rb +99 -0
  39. data/lib/adtekio_adnetworks/importers/cost/jampp.rb +57 -0
  40. data/lib/adtekio_adnetworks/importers/cost/leadbolt.rb +43 -0
  41. data/lib/adtekio_adnetworks/importers/cost/lifestreet.rb +49 -0
  42. data/lib/adtekio_adnetworks/importers/cost/loopme.rb +63 -0
  43. data/lib/adtekio_adnetworks/importers/cost/matomy.rb +65 -0
  44. data/lib/adtekio_adnetworks/importers/cost/mdotm.rb +69 -0
  45. data/lib/adtekio_adnetworks/importers/cost/mmg.rb +67 -0
  46. data/lib/adtekio_adnetworks/importers/cost/mnectar.rb +45 -0
  47. data/lib/adtekio_adnetworks/importers/cost/moboqo.rb +33 -0
  48. data/lib/adtekio_adnetworks/importers/cost/mobpartner.rb +46 -0
  49. data/lib/adtekio_adnetworks/importers/cost/nanigans.rb +114 -0
  50. data/lib/adtekio_adnetworks/importers/cost/revmob.rb +44 -0
  51. data/lib/adtekio_adnetworks/importers/cost/rtbmob.rb +48 -0
  52. data/lib/adtekio_adnetworks/importers/cost/startapp.rb +47 -0
  53. data/lib/adtekio_adnetworks/importers/cost/supersonic.rb +77 -0
  54. data/lib/adtekio_adnetworks/importers/cost/tapjoy.rb +42 -0
  55. data/lib/adtekio_adnetworks/importers/cost/tokenads.rb +46 -0
  56. data/lib/adtekio_adnetworks/importers/cost/unilead.rb +39 -0
  57. data/lib/adtekio_adnetworks/importers/cost/vungle.rb +58 -0
  58. data/lib/adtekio_adnetworks/importers/cost_import.rb +13 -0
  59. data/lib/adtekio_adnetworks/importers/revenue/adcolony.rb +67 -0
  60. data/lib/adtekio_adnetworks/importers/revenue/applifier.rb +55 -0
  61. data/lib/adtekio_adnetworks/importers/revenue/applovin.rb +58 -0
  62. data/lib/adtekio_adnetworks/importers/revenue/chartboost.rb +43 -0
  63. data/lib/adtekio_adnetworks/importers/revenue/flurry.rb +85 -0
  64. data/lib/adtekio_adnetworks/importers/revenue/fyber.rb +61 -0
  65. data/lib/adtekio_adnetworks/importers/revenue/hypr_mx.rb +69 -0
  66. data/lib/adtekio_adnetworks/importers/revenue/lifestreet.rb +59 -0
  67. data/lib/adtekio_adnetworks/importers/revenue/mdotm.rb +38 -0
  68. data/lib/adtekio_adnetworks/importers/revenue/mopub.rb +54 -0
  69. data/lib/adtekio_adnetworks/importers/revenue/nexage.rb +71 -0
  70. data/lib/adtekio_adnetworks/importers/revenue/supersonic.rb +73 -0
  71. data/lib/adtekio_adnetworks/importers/revenue/tapsense.rb +38 -0
  72. data/lib/adtekio_adnetworks/importers/revenue/trialpay.rb +41 -0
  73. data/lib/adtekio_adnetworks/importers/revenue/vungle.rb +75 -0
  74. data/lib/adtekio_adnetworks/importers/revenue_import.rb +27 -0
  75. data/lib/adtekio_adnetworks/postbacks.rb +193 -0
  76. data/lib/adtekio_adnetworks/postbacks/aarki.rb +17 -0
  77. data/lib/adtekio_adnetworks/postbacks/adaction.rb +18 -0
  78. data/lib/adtekio_adnetworks/postbacks/adcash.rb +19 -0
  79. data/lib/adtekio_adnetworks/postbacks/adcolony.rb +90 -0
  80. data/lib/adtekio_adnetworks/postbacks/adgorithms.rb +74 -0
  81. data/lib/adtekio_adnetworks/postbacks/adjapon_nend.rb +39 -0
  82. data/lib/adtekio_adnetworks/postbacks/adknowledge.rb +18 -0
  83. data/lib/adtekio_adnetworks/postbacks/admob.rb +17 -0
  84. data/lib/adtekio_adnetworks/postbacks/adp.rb +18 -0
  85. data/lib/adtekio_adnetworks/postbacks/adperio.rb +19 -0
  86. data/lib/adtekio_adnetworks/postbacks/adquant.rb +39 -0
  87. data/lib/adtekio_adnetworks/postbacks/adstract.rb +15 -0
  88. data/lib/adtekio_adnetworks/postbacks/adxperience.rb +16 -0
  89. data/lib/adtekio_adnetworks/postbacks/airpush.rb +17 -0
  90. data/lib/adtekio_adnetworks/postbacks/app_chocolate.rb +17 -0
  91. data/lib/adtekio_adnetworks/postbacks/appfload.rb +17 -0
  92. data/lib/adtekio_adnetworks/postbacks/appia.rb +18 -0
  93. data/lib/adtekio_adnetworks/postbacks/appintheair.rb +17 -0
  94. data/lib/adtekio_adnetworks/postbacks/applifier.rb +49 -0
  95. data/lib/adtekio_adnetworks/postbacks/applift.rb +88 -0
  96. data/lib/adtekio_adnetworks/postbacks/applovin.rb +127 -0
  97. data/lib/adtekio_adnetworks/postbacks/appnext.rb +17 -0
  98. data/lib/adtekio_adnetworks/postbacks/appredeem.rb +33 -0
  99. data/lib/adtekio_adnetworks/postbacks/appsfire.rb +19 -0
  100. data/lib/adtekio_adnetworks/postbacks/appturbo.rb +18 -0
  101. data/lib/adtekio_adnetworks/postbacks/apsalar.rb +21 -0
  102. data/lib/adtekio_adnetworks/postbacks/bee7.rb +17 -0
  103. data/lib/adtekio_adnetworks/postbacks/bidmotion.rb +80 -0
  104. data/lib/adtekio_adnetworks/postbacks/blindferretmedia.rb +17 -0
  105. data/lib/adtekio_adnetworks/postbacks/chartboost.rb +116 -0
  106. data/lib/adtekio_adnetworks/postbacks/cheetah.rb +32 -0
  107. data/lib/adtekio_adnetworks/postbacks/clickky.rb +30 -0
  108. data/lib/adtekio_adnetworks/postbacks/covus.rb +17 -0
  109. data/lib/adtekio_adnetworks/postbacks/crossinstall.rb +26 -0
  110. data/lib/adtekio_adnetworks/postbacks/cyberagent_ameba.rb +17 -0
  111. data/lib/adtekio_adnetworks/postbacks/cyberagent_amoad.rb +17 -0
  112. data/lib/adtekio_adnetworks/postbacks/cyberagent_imobile.rb +43 -0
  113. data/lib/adtekio_adnetworks/postbacks/cyberagent_kjnw.rb +17 -0
  114. data/lib/adtekio_adnetworks/postbacks/cyberagent_maio.rb +18 -0
  115. data/lib/adtekio_adnetworks/postbacks/cyberagent_nend.rb +40 -0
  116. data/lib/adtekio_adnetworks/postbacks/cyberagent_smartc.rb +17 -0
  117. data/lib/adtekio_adnetworks/postbacks/cyberagent_smartnews.rb +17 -0
  118. data/lib/adtekio_adnetworks/postbacks/cyberz_asta.rb +26 -0
  119. data/lib/adtekio_adnetworks/postbacks/cyberz_bead.rb +26 -0
  120. data/lib/adtekio_adnetworks/postbacks/cyberz_imobile.rb +28 -0
  121. data/lib/adtekio_adnetworks/postbacks/cyberz_nend.rb +30 -0
  122. data/lib/adtekio_adnetworks/postbacks/datalead.rb +17 -0
  123. data/lib/adtekio_adnetworks/postbacks/eccrine.rb +80 -0
  124. data/lib/adtekio_adnetworks/postbacks/eeline.rb +50 -0
  125. data/lib/adtekio_adnetworks/postbacks/f5.rb +30 -0
  126. data/lib/adtekio_adnetworks/postbacks/fiksu.rb +43 -0
  127. data/lib/adtekio_adnetworks/postbacks/fiksu_applift.rb +31 -0
  128. data/lib/adtekio_adnetworks/postbacks/fractionalmedia.rb +78 -0
  129. data/lib/adtekio_adnetworks/postbacks/fyber.rb +36 -0
  130. data/lib/adtekio_adnetworks/postbacks/gamegenetics.rb +17 -0
  131. data/lib/adtekio_adnetworks/postbacks/ginga.rb +26 -0
  132. data/lib/adtekio_adnetworks/postbacks/glispa.rb +96 -0
  133. data/lib/adtekio_adnetworks/postbacks/googleadwords.rb +19 -0
  134. data/lib/adtekio_adnetworks/postbacks/growmobile.rb +36 -0
  135. data/lib/adtekio_adnetworks/postbacks/heyzap.rb +51 -0
  136. data/lib/adtekio_adnetworks/postbacks/inmobi.rb +50 -0
  137. data/lib/adtekio_adnetworks/postbacks/inneractive.rb +17 -0
  138. data/lib/adtekio_adnetworks/postbacks/instal.rb +18 -0
  139. data/lib/adtekio_adnetworks/postbacks/iqu.rb +19 -0
  140. data/lib/adtekio_adnetworks/postbacks/ironsource.rb +19 -0
  141. data/lib/adtekio_adnetworks/postbacks/jampp.rb +48 -0
  142. data/lib/adtekio_adnetworks/postbacks/jestadigital.rb +18 -0
  143. data/lib/adtekio_adnetworks/postbacks/jumpramp.rb +17 -0
  144. data/lib/adtekio_adnetworks/postbacks/jumptap.rb +23 -0
  145. data/lib/adtekio_adnetworks/postbacks/leadbolt.rb +29 -0
  146. data/lib/adtekio_adnetworks/postbacks/lifestreet.rb +97 -0
  147. data/lib/adtekio_adnetworks/postbacks/liftoff.rb +66 -0
  148. data/lib/adtekio_adnetworks/postbacks/loopme.rb +17 -0
  149. data/lib/adtekio_adnetworks/postbacks/magic_solver.rb +18 -0
  150. data/lib/adtekio_adnetworks/postbacks/marimedia.rb +20 -0
  151. data/lib/adtekio_adnetworks/postbacks/matomy.rb +59 -0
  152. data/lib/adtekio_adnetworks/postbacks/mdotm.rb +116 -0
  153. data/lib/adtekio_adnetworks/postbacks/misterbell.rb +18 -0
  154. data/lib/adtekio_adnetworks/postbacks/mmg.rb +20 -0
  155. data/lib/adtekio_adnetworks/postbacks/mnectar.rb +22 -0
  156. data/lib/adtekio_adnetworks/postbacks/moblin.rb +17 -0
  157. data/lib/adtekio_adnetworks/postbacks/moboqo.rb +17 -0
  158. data/lib/adtekio_adnetworks/postbacks/mobpartner.rb +19 -0
  159. data/lib/adtekio_adnetworks/postbacks/mopub.rb +30 -0
  160. data/lib/adtekio_adnetworks/postbacks/motive_interactive.rb +32 -0
  161. data/lib/adtekio_adnetworks/postbacks/mundo.rb +17 -0
  162. data/lib/adtekio_adnetworks/postbacks/nanigans.rb +38 -0
  163. data/lib/adtekio_adnetworks/postbacks/nativex.rb +30 -0
  164. data/lib/adtekio_adnetworks/postbacks/neodau.rb +19 -0
  165. data/lib/adtekio_adnetworks/postbacks/neverblue.rb +19 -0
  166. data/lib/adtekio_adnetworks/postbacks/operamedia.rb +39 -0
  167. data/lib/adtekio_adnetworks/postbacks/pandora.rb +17 -0
  168. data/lib/adtekio_adnetworks/postbacks/phunware.rb +18 -0
  169. data/lib/adtekio_adnetworks/postbacks/pirasin.rb +16 -0
  170. data/lib/adtekio_adnetworks/postbacks/playhaven.rb +31 -0
  171. data/lib/adtekio_adnetworks/postbacks/pocketmath.rb +17 -0
  172. data/lib/adtekio_adnetworks/postbacks/propeller.rb +18 -0
  173. data/lib/adtekio_adnetworks/postbacks/quixey.rb +17 -0
  174. data/lib/adtekio_adnetworks/postbacks/realzeit.rb +60 -0
  175. data/lib/adtekio_adnetworks/postbacks/remerge.rb +66 -0
  176. data/lib/adtekio_adnetworks/postbacks/revmob.rb +17 -0
  177. data/lib/adtekio_adnetworks/postbacks/ripple.rb +18 -0
  178. data/lib/adtekio_adnetworks/postbacks/roostr.rb +17 -0
  179. data/lib/adtekio_adnetworks/postbacks/rtbcom.rb +28 -0
  180. data/lib/adtekio_adnetworks/postbacks/septeni.rb +17 -0
  181. data/lib/adtekio_adnetworks/postbacks/seven_games.rb +51 -0
  182. data/lib/adtekio_adnetworks/postbacks/startapp.rb +48 -0
  183. data/lib/adtekio_adnetworks/postbacks/supersonic.rb +19 -0
  184. data/lib/adtekio_adnetworks/postbacks/tapjoy.rb +36 -0
  185. data/lib/adtekio_adnetworks/postbacks/taptica.rb +21 -0
  186. data/lib/adtekio_adnetworks/postbacks/targetcircle.rb +41 -0
  187. data/lib/adtekio_adnetworks/postbacks/todacell.rb +18 -0
  188. data/lib/adtekio_adnetworks/postbacks/tokenads.rb +18 -0
  189. data/lib/adtekio_adnetworks/postbacks/trademob.rb +48 -0
  190. data/lib/adtekio_adnetworks/postbacks/trademob_magic_solver.rb +22 -0
  191. data/lib/adtekio_adnetworks/postbacks/trialpay.rb +18 -0
  192. data/lib/adtekio_adnetworks/postbacks/unilead.rb +78 -0
  193. data/lib/adtekio_adnetworks/postbacks/uppsmobi.rb +19 -0
  194. data/lib/adtekio_adnetworks/postbacks/vungle.rb +33 -0
  195. data/lib/adtekio_adnetworks/postbacks/w4.rb +17 -0
  196. data/lib/adtekio_adnetworks/postbacks/webmedia.rb +17 -0
  197. data/lib/adtekio_adnetworks/postbacks/yahoo.rb +20 -0
  198. data/lib/adtekio_adnetworks/postbacks/youappi.rb +116 -0
  199. data/lib/adtekio_adnetworks/postbacks/zemail.rb +19 -0
  200. data/test/helper.rb +78 -0
  201. data/test/unit/postbacks/test_chartboost.rb +105 -0
  202. data/test/unit/postbacks/test_mdotm.rb +35 -0
  203. data/test/unit/postbacks/test_playhaven.rb +76 -0
  204. data/test/unit/postbacks/test_trademob_magic_solver.rb +24 -0
  205. data/test/unit/postbacks/test_unilead.rb +67 -0
  206. data/test/unit/test_api_key_scrapers.rb +302 -0
  207. data/test/unit/test_base_postback_class.rb +82 -0
  208. data/test/unit/test_cost_importers.rb +12 -0
  209. data/test/unit/test_postbacks.rb +33 -0
  210. data/test/unit/test_postbacks_definition.rb +111 -0
  211. data/test/unit/test_revenue_importers.rb +12 -0
  212. 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