opera-mobile-store-sdk 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/opera-mobile-store-sdk/version.rb +1 -1
- data/lib/opera/ad_marvel/models/ad.rb +0 -0
- data/lib/opera/ad_marvel/models/campaign.rb +0 -0
- data/lib/opera/ad_marvel/models/click.rb +9 -0
- data/lib/opera/ad_marvel/models/impression.rb +24 -0
- data/lib/opera/ad_marvel/models/reportable.rb +52 -0
- data/lib/opera/ad_marvel/sdk/config.rb +39 -0
- data/lib/opera/mobile_store/product.rb +8 -4
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: caf7ab8aee315eb11bf1591e3ebcfe0b7658ab4e
|
4
|
+
data.tar.gz: 338a216c2d284cd812646005592a59777f09b8eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a55570d35892d7d23d86cb4c98c5016764123920b48dc05b378bd3e1bb1bbee1262a0a75e8e1e65dc604889a6485a723f9ffa4b1946717fafa7d180c161fc70
|
7
|
+
data.tar.gz: 48783119a2fb7abaf69a80a4ea2bcd1d525e342f22139ad379bf5cf8d992824c783b12d3ceb87f813e2ca849a71812a21126f63440116ab5ec6bd2fbabe5861f
|
data/.gitignore
CHANGED
File without changes
|
File without changes
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
|
3
|
+
module Opera
|
4
|
+
module AdMarvel
|
5
|
+
class Impression
|
6
|
+
|
7
|
+
include Opera::AdMarvel::Reportable
|
8
|
+
|
9
|
+
attr_accessor :random, :user_id
|
10
|
+
|
11
|
+
def random
|
12
|
+
@random ||= SecureRandom.random_number(18446744073709551615)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Override to add random and user_id:
|
16
|
+
def attributes_with_payload_keys
|
17
|
+
super.merge(
|
18
|
+
{ "cb" => random, "uid" => user_id }.select { |_, value| !value.nil? }
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Opera
|
2
|
+
module AdMarvel
|
3
|
+
|
4
|
+
module Reportable
|
5
|
+
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
include ActiveModel::Model
|
10
|
+
include ActiveModel::Serialization
|
11
|
+
|
12
|
+
attr_accessor :partner_id, :site_id, :banner_id
|
13
|
+
end
|
14
|
+
|
15
|
+
def attributes_with_payload_keys
|
16
|
+
{
|
17
|
+
"pid" => partner_id, "sid" => site_id, "bid" => banner_id
|
18
|
+
}.select { |_, value| !value.nil? }
|
19
|
+
end
|
20
|
+
|
21
|
+
def as_payload
|
22
|
+
attributes_with_payload_keys.inject("") do |payload, keyval|
|
23
|
+
"#{payload}__#{keyval.join('=')}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def save
|
28
|
+
unless @already_saved
|
29
|
+
|
30
|
+
collector_path = "/fam/" + case self.class.name.demodulize
|
31
|
+
when "Impression" then "view_offline.php"
|
32
|
+
when "Click" then "ck_offline.php"
|
33
|
+
else raise "Not Implemented"
|
34
|
+
end
|
35
|
+
|
36
|
+
@already_saved = true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
module ClassMethods
|
41
|
+
def create(given_attributes = {})
|
42
|
+
reportable = self.new given_attributes
|
43
|
+
reportable.save
|
44
|
+
reportable
|
45
|
+
end
|
46
|
+
alias_method :report, :create
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Opera
|
2
|
+
module AdMarvelSDK
|
3
|
+
class Config
|
4
|
+
|
5
|
+
include ActiveSupport::Configurable
|
6
|
+
|
7
|
+
DEFAULT_API_URL = "http://ads.admarvel.com".freeze
|
8
|
+
|
9
|
+
# API host:
|
10
|
+
config_accessor :api_host do
|
11
|
+
api_uri = URI(ENV.fetch "OPERA_AD_MARVEL_API_URL", DEFAULT_API_URL)
|
12
|
+
api_uri.path = ""
|
13
|
+
api_uri.to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
# API path:
|
17
|
+
config_accessor :api_path do
|
18
|
+
api_uri = URI(ENV.fetch "OPERA_AD_MARVEL_API_URL", DEFAULT_API_URL)
|
19
|
+
api_uri.path
|
20
|
+
end
|
21
|
+
|
22
|
+
# API Call Timeout:
|
23
|
+
config_accessor :api_call_timeout do
|
24
|
+
ENV.fetch("OPERA_AD_MARVEL_API_CALL_TIMEOUT", 15).to_i
|
25
|
+
end
|
26
|
+
|
27
|
+
# API Call Open Timeout:
|
28
|
+
config_accessor :api_call_open_timeout do
|
29
|
+
ENV.fetch("OPERA_AD_MARVEL_API_CALL_OPEN_TIMEOUT", 2).to_i
|
30
|
+
end
|
31
|
+
|
32
|
+
# Logger:
|
33
|
+
config_accessor :logger do
|
34
|
+
Logger.new($stdout)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -128,20 +128,24 @@ module Opera::MobileStore
|
|
128
128
|
def self.build_from_nokogiri_node(node)
|
129
129
|
|
130
130
|
# Initialize the category unless it's already in it's Identity Map:
|
131
|
-
category_id = node.xpath
|
131
|
+
category_id = if (some_id = node.xpath 'number(category/@id)') && !some_id.nan?
|
132
|
+
some_id.to_i
|
133
|
+
end
|
134
|
+
|
132
135
|
Category.new(
|
133
136
|
id: category_id,
|
134
137
|
code: node.xpath("string(category/@code)"),
|
135
138
|
name: node.xpath("string(category)")
|
136
|
-
) unless Category.identity_mapped?
|
139
|
+
) unless category_id.blank? || Category.identity_mapped?(category_id)
|
137
140
|
|
138
141
|
# Initialize the category unless it's already in it's Identity Map:
|
139
|
-
author_id = node.xpath
|
142
|
+
author_id = node.xpath 'number(author/@id)').to_i
|
143
|
+
|
140
144
|
Developer.new(
|
141
145
|
id: author_id,
|
142
146
|
name: node.xpath("string(author)"),
|
143
147
|
email: node.xpath("string(author_email)")
|
144
|
-
) unless Developer.identity_mapped?
|
148
|
+
) unless author_id.blank? || Developer.identity_mapped?(author_id)
|
145
149
|
|
146
150
|
data = {
|
147
151
|
id: node.xpath("number(@id)").to_i,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opera-mobile-store-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roberto Quintanilla
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -127,6 +127,12 @@ files:
|
|
127
127
|
- bin/setup
|
128
128
|
- lib/opera-mobile-store-sdk.rb
|
129
129
|
- lib/opera-mobile-store-sdk/version.rb
|
130
|
+
- lib/opera/ad_marvel/models/ad.rb
|
131
|
+
- lib/opera/ad_marvel/models/campaign.rb
|
132
|
+
- lib/opera/ad_marvel/models/click.rb
|
133
|
+
- lib/opera/ad_marvel/models/impression.rb
|
134
|
+
- lib/opera/ad_marvel/models/reportable.rb
|
135
|
+
- lib/opera/ad_marvel/sdk/config.rb
|
130
136
|
- lib/opera/mobile_store/build.rb
|
131
137
|
- lib/opera/mobile_store/build_file.rb
|
132
138
|
- lib/opera/mobile_store/category.rb
|