adzerk_decision_sdk 1.0.0.pre.beta.1

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.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/Gemfile.lock +70 -0
  4. data/README.md +97 -0
  5. data/Rakefile +10 -0
  6. data/adzerk_decision_sdk.gemspec +39 -0
  7. data/docs/Consent.md +17 -0
  8. data/docs/ConsentRequest.md +19 -0
  9. data/docs/Content.md +25 -0
  10. data/docs/Decision.md +35 -0
  11. data/docs/DecisionApi.md +57 -0
  12. data/docs/DecisionData.md +25 -0
  13. data/docs/DecisionRequest.md +43 -0
  14. data/docs/DecisionResponse.md +21 -0
  15. data/docs/Event.md +19 -0
  16. data/docs/GdprConsent.md +19 -0
  17. data/docs/Placement.md +47 -0
  18. data/docs/PricingData.md +25 -0
  19. data/docs/Request.md +43 -0
  20. data/docs/RequestConsent.md +17 -0
  21. data/docs/Response.md +21 -0
  22. data/docs/User.md +17 -0
  23. data/docs/UserdbApi.md +536 -0
  24. data/git_push.sh +58 -0
  25. data/lib/adzerk_decision_sdk/api/decision_api.rb +80 -0
  26. data/lib/adzerk_decision_sdk/api/userdb_api.rb +731 -0
  27. data/lib/adzerk_decision_sdk/api_client.rb +386 -0
  28. data/lib/adzerk_decision_sdk/api_error.rb +57 -0
  29. data/lib/adzerk_decision_sdk/client.rb +43 -0
  30. data/lib/adzerk_decision_sdk/configuration.rb +262 -0
  31. data/lib/adzerk_decision_sdk/decision_client.rb +73 -0
  32. data/lib/adzerk_decision_sdk/event_type.rb +61 -0
  33. data/lib/adzerk_decision_sdk/models/consent_request.rb +215 -0
  34. data/lib/adzerk_decision_sdk/models/content.rb +242 -0
  35. data/lib/adzerk_decision_sdk/models/decision.rb +291 -0
  36. data/lib/adzerk_decision_sdk/models/decision_data.rb +242 -0
  37. data/lib/adzerk_decision_sdk/models/decision_request.rb +359 -0
  38. data/lib/adzerk_decision_sdk/models/decision_response.rb +224 -0
  39. data/lib/adzerk_decision_sdk/models/event.rb +215 -0
  40. data/lib/adzerk_decision_sdk/models/placement.rb +377 -0
  41. data/lib/adzerk_decision_sdk/models/pricing_data.rb +242 -0
  42. data/lib/adzerk_decision_sdk/models/user.rb +208 -0
  43. data/lib/adzerk_decision_sdk/pixel_client.rb +26 -0
  44. data/lib/adzerk_decision_sdk/rate_type.rb +8 -0
  45. data/lib/adzerk_decision_sdk/user_db_client.rb +64 -0
  46. data/lib/adzerk_decision_sdk/version.rb +15 -0
  47. data/lib/adzerk_decision_sdk.rb +58 -0
  48. data/pkg/adzerk_decision_sdk-1.0.0.gem +0 -0
  49. data/spec/.gitkeep +0 -0
  50. data/spec/placeholder_spec.rb +9 -0
  51. metadata +153 -0
@@ -0,0 +1,208 @@
1
+ =begin
2
+ #Adzerk Decision API
3
+
4
+ #Adzerk Decision API
5
+
6
+ The version of the OpenAPI document: 1.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.2.3
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module AdzerkDecisionSdk
16
+ # Object containing the UserKey used for [UserDB targeting](https://dev.adzerk.com/docs/userdb-1)
17
+ class User
18
+ # The UserKey used for UserDB Targeting
19
+ attr_accessor :key
20
+
21
+ # Attribute mapping from ruby-style variable name to JSON key.
22
+ def self.attribute_map
23
+ {
24
+ :'key' => :'key'
25
+ }
26
+ end
27
+
28
+ # Attribute type mapping.
29
+ def self.openapi_types
30
+ {
31
+ :'key' => :'String'
32
+ }
33
+ end
34
+
35
+ # List of attributes with nullable: true
36
+ def self.openapi_nullable
37
+ Set.new([
38
+ ])
39
+ end
40
+
41
+ # Initializes the object
42
+ # @param [Hash] attributes Model attributes in the form of hash
43
+ def initialize(attributes = {})
44
+ if (!attributes.is_a?(Hash))
45
+ fail ArgumentError, "The input argument (attributes) must be a hash in `AdzerkDecisionSdk::User` initialize method"
46
+ end
47
+
48
+ # check to see if the attribute exists and convert string to symbol for hash key
49
+ attributes = attributes.each_with_object({}) { |(k, v), h|
50
+ if (!self.class.attribute_map.key?(k.to_sym))
51
+ fail ArgumentError, "`#{k}` is not a valid attribute in `AdzerkDecisionSdk::User`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
52
+ end
53
+ h[k.to_sym] = v
54
+ }
55
+
56
+ if attributes.key?(:'key')
57
+ self.key = attributes[:'key']
58
+ end
59
+ end
60
+
61
+ # Show invalid properties with the reasons. Usually used together with valid?
62
+ # @return Array for valid properties with the reasons
63
+ def list_invalid_properties
64
+ invalid_properties = Array.new
65
+ invalid_properties
66
+ end
67
+
68
+ # Check to see if the all the properties in the model are valid
69
+ # @return true if the model is valid
70
+ def valid?
71
+ true
72
+ end
73
+
74
+ # Checks equality by comparing each attribute.
75
+ # @param [Object] Object to be compared
76
+ def ==(o)
77
+ return true if self.equal?(o)
78
+ self.class == o.class &&
79
+ key == o.key
80
+ end
81
+
82
+ # @see the `==` method
83
+ # @param [Object] Object to be compared
84
+ def eql?(o)
85
+ self == o
86
+ end
87
+
88
+ # Calculates hash code according to all attributes.
89
+ # @return [Integer] Hash code
90
+ def hash
91
+ [key].hash
92
+ end
93
+
94
+ # Builds the object from hash
95
+ # @param [Hash] attributes Model attributes in the form of hash
96
+ # @return [Object] Returns the model itself
97
+ def self.build_from_hash(attributes)
98
+ new.build_from_hash(attributes)
99
+ end
100
+
101
+ # Builds the object from hash
102
+ # @param [Hash] attributes Model attributes in the form of hash
103
+ # @return [Object] Returns the model itself
104
+ def build_from_hash(attributes)
105
+ return nil unless attributes.is_a?(Hash)
106
+ self.class.openapi_types.each_pair do |key, type|
107
+ if type =~ /\AArray<(.*)>/i
108
+ # check to ensure the input is an array given that the attribute
109
+ # is documented as an array but the input is not
110
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
111
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
112
+ end
113
+ elsif !attributes[self.class.attribute_map[key]].nil?
114
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
115
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
116
+ end
117
+
118
+ self
119
+ end
120
+
121
+ # Deserializes the data based on type
122
+ # @param string type Data type
123
+ # @param string value Value to be deserialized
124
+ # @return [Object] Deserialized data
125
+ def _deserialize(type, value)
126
+ case type.to_sym
127
+ when :DateTime
128
+ DateTime.parse(value)
129
+ when :Date
130
+ Date.parse(value)
131
+ when :String
132
+ value.to_s
133
+ when :Integer
134
+ value.to_i
135
+ when :Float
136
+ value.to_f
137
+ when :Boolean
138
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
139
+ true
140
+ else
141
+ false
142
+ end
143
+ when :Object
144
+ # generic object (usually a Hash), return directly
145
+ value
146
+ when /\AArray<(?<inner_type>.+)>\z/
147
+ inner_type = Regexp.last_match[:inner_type]
148
+ value.map { |v| _deserialize(inner_type, v) }
149
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
150
+ k_type = Regexp.last_match[:k_type]
151
+ v_type = Regexp.last_match[:v_type]
152
+ {}.tap do |hash|
153
+ value.each do |k, v|
154
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
155
+ end
156
+ end
157
+ else # model
158
+ AdzerkDecisionSdk.const_get(type).build_from_hash(value)
159
+ end
160
+ end
161
+
162
+ # Returns the string representation of the object
163
+ # @return [String] String presentation of the object
164
+ def to_s
165
+ to_hash.to_s
166
+ end
167
+
168
+ # to_body is an alias to to_hash (backward compatibility)
169
+ # @return [Hash] Returns the object in the form of hash
170
+ def to_body
171
+ to_hash
172
+ end
173
+
174
+ # Returns the object in the form of hash
175
+ # @return [Hash] Returns the object in the form of hash
176
+ def to_hash
177
+ hash = {}
178
+ self.class.attribute_map.each_pair do |attr, param|
179
+ value = self.send(attr)
180
+ if value.nil?
181
+ is_nullable = self.class.openapi_nullable.include?(attr)
182
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
183
+ end
184
+
185
+ hash[param] = _to_hash(value)
186
+ end
187
+ hash
188
+ end
189
+
190
+ # Outputs non-array value in the form of hash
191
+ # For object, use to_hash. Otherwise, just return the value
192
+ # @param [Object] value Any valid value
193
+ # @return [Hash] Returns the value in the form of hash
194
+ def _to_hash(value)
195
+ if value.is_a?(Array)
196
+ value.compact.map { |v| _to_hash(v) }
197
+ elsif value.is_a?(Hash)
198
+ {}.tap do |hash|
199
+ value.each { |k, v| hash[k] = _to_hash(v) }
200
+ end
201
+ elsif value.respond_to? :to_hash
202
+ value.to_hash
203
+ else
204
+ value
205
+ end
206
+ end
207
+ end
208
+ end
@@ -0,0 +1,26 @@
1
+ require 'uri'
2
+ require 'typhoeus'
3
+
4
+ module AdzerkDecisionSdk
5
+ class PixelClient
6
+ def initialize(api_client)
7
+ @api_client = api_client
8
+ end
9
+
10
+ def fire(url, revenue_override: nil, additional_revenue: nil)
11
+ uri = URI(url)
12
+ query_params = URI.decode_www_form(uri.query)
13
+ query_params << ["override", revenue_override] if not revenue_override.nil?
14
+ query_params << ["additional", additional_revenue] if not additional_revenue.nil?
15
+ uri.query = URI.encode_www_form(query_params)
16
+ new_url = uri.to_s()
17
+
18
+ request = @api_client.build_request(:GET, '')
19
+ request.base_url = new_url
20
+ response = request.run()
21
+ location = response.response_code == 302 ? response.headers['location'] : nil
22
+
23
+ [response.response_code, location]
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,8 @@
1
+ module RateType
2
+ FLAT = 1
3
+ CPM = 2
4
+ CPC = 3
5
+ CPA_VIEW = 4
6
+ CPA_CLICK = 5
7
+ CPA_VIEW_AND_CLICK = 6
8
+ end
@@ -0,0 +1,64 @@
1
+ require 'adzerk_decision_sdk/api/userdb_api'
2
+
3
+ module AdzerkDecisionSdk
4
+ class UserDbClient
5
+ def initialize(network_id, api_client)
6
+ @network_id = network_id
7
+ @api = UserdbApi.new(api_client)
8
+ end
9
+
10
+ def set_custom_properties(user_key, properties, network_id: nil)
11
+ @api.add_custom_properties(network_id || @network_id, user_key, { body: properties })
12
+ end
13
+
14
+ def add_interest(user_key, interest, network_id: nil)
15
+ @api.add_interests(network_id || @network_id, user_key, interest)
16
+ end
17
+
18
+ def add_retargeting_segment(user_key, advertiser_id, retargeting_segment_id, network_id: nil)
19
+ @api.add_retargeting_segment(network_id || @network_id, advertiser_id, retargeting_segment_id, user_key)
20
+ end
21
+
22
+ def forget(user_key, network_id: nil)
23
+ @api.forget(network_id || @network_id, user_key)
24
+ end
25
+
26
+ def gdpr_consent(gdpr_consent, network_id: nil)
27
+ body = gdpr_consent.respond_to?('to_hash') ? gdpr_consent.to_hash() : gdpr_consent
28
+ @api.gdpr_consent(network_id || @network_id, { body: body })
29
+ end
30
+
31
+ def ip_override(user_key, ip, network_id: nil)
32
+ @api.ip_override(network_id || @network_id, user_key, ip)
33
+ end
34
+
35
+ def match_user(user_key, partner_id, user_id, network_id: nil)
36
+ @api.match_user(network_id || @network_id, user_key, partner_id, user_id)
37
+ end
38
+
39
+ def opt_out(user_key, network_id: nil)
40
+ @api.opt_out(network_id || @network_id, user_key)
41
+ end
42
+
43
+ def read(user_key, network_id: nil)
44
+ bad_keys = [
45
+ :cookieMonster,
46
+ :dirtyCookies,
47
+ :isNew,
48
+ :adViewTimes,
49
+ :advertiserViewTimes,
50
+ :flightViewTimes,
51
+ :siteViewTimes,
52
+ :campaignViewTimes,
53
+ :pendingConversions,
54
+ :campaignConversions
55
+ ]
56
+
57
+ user_record = @api.read(network_id || @network_id, user_key)
58
+
59
+ user_record.delete_if do |key, _|
60
+ bad_keys.include?(key)
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,15 @@
1
+ =begin
2
+ #Adzerk Decision API
3
+
4
+ #Adzerk Decision API
5
+
6
+ The version of the OpenAPI document: 1.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.2.3
10
+
11
+ =end
12
+
13
+ module AdzerkDecisionSdk
14
+ VERSION = '1.0.0-beta.1'
15
+ end
@@ -0,0 +1,58 @@
1
+ =begin
2
+ #Adzerk Decision API
3
+
4
+ #Adzerk Decision API
5
+
6
+ The version of the OpenAPI document: 1.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.2.3
10
+
11
+ =end
12
+
13
+ require 'adzerk_decision_sdk/client'
14
+ require 'adzerk_decision_sdk/event_type'
15
+ require 'adzerk_decision_sdk/rate_type'
16
+
17
+ # Common files
18
+ require 'adzerk_decision_sdk/api_client'
19
+ require 'adzerk_decision_sdk/api_error'
20
+ require 'adzerk_decision_sdk/version'
21
+ require 'adzerk_decision_sdk/configuration'
22
+
23
+ # Models
24
+ require 'adzerk_decision_sdk/models/consent_request'
25
+ require 'adzerk_decision_sdk/models/content'
26
+ require 'adzerk_decision_sdk/models/decision'
27
+ require 'adzerk_decision_sdk/models/decision_data'
28
+ require 'adzerk_decision_sdk/models/event'
29
+ require 'adzerk_decision_sdk/models/placement'
30
+ require 'adzerk_decision_sdk/models/pricing_data'
31
+ require 'adzerk_decision_sdk/models/decision_request'
32
+ require 'adzerk_decision_sdk/models/decision_response'
33
+ require 'adzerk_decision_sdk/models/user'
34
+
35
+ # APIs
36
+ require 'adzerk_decision_sdk/api/decision_api'
37
+ require 'adzerk_decision_sdk/api/userdb_api'
38
+
39
+ # require 'adzerk_decision_sdk/client_options'
40
+ # require 'adzerk_decision_sdk/client'
41
+
42
+ module AdzerkDecisionSdk
43
+ class << self
44
+ # Customize default settings for the SDK using block.
45
+ # AdzerkDecisionSdk.configure do |config|
46
+ # config.username = "xxx"
47
+ # config.password = "xxx"
48
+ # end
49
+ # If no block given, return the default Configuration object.
50
+ def configure
51
+ if block_given?
52
+ yield(Configuration.default)
53
+ else
54
+ Configuration.default
55
+ end
56
+ end
57
+ end
58
+ end
Binary file
data/spec/.gitkeep ADDED
File without changes
@@ -0,0 +1,9 @@
1
+ require "adzerk_decision_sdk"
2
+
3
+ RSpec.describe AdzerkDecisionSdk::Client do
4
+ describe "#decisions.get" do
5
+ it "never fails" do
6
+ expect(true).to eq(true)
7
+ end
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,153 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: adzerk_decision_sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.pre.beta.1
5
+ platform: ruby
6
+ authors:
7
+ - Adzerk, Inc.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-05-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: typhoeus
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: json
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.1'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.1.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.1'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.1.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: rspec
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '3.6'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 3.6.0
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '3.6'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 3.6.0
73
+ description: Ruby library for the Adzerk Decision API
74
+ email:
75
+ - engineering@adzerk.com
76
+ executables: []
77
+ extensions: []
78
+ extra_rdoc_files: []
79
+ files:
80
+ - Gemfile
81
+ - Gemfile.lock
82
+ - README.md
83
+ - Rakefile
84
+ - adzerk_decision_sdk.gemspec
85
+ - docs/Consent.md
86
+ - docs/ConsentRequest.md
87
+ - docs/Content.md
88
+ - docs/Decision.md
89
+ - docs/DecisionApi.md
90
+ - docs/DecisionData.md
91
+ - docs/DecisionRequest.md
92
+ - docs/DecisionResponse.md
93
+ - docs/Event.md
94
+ - docs/GdprConsent.md
95
+ - docs/Placement.md
96
+ - docs/PricingData.md
97
+ - docs/Request.md
98
+ - docs/RequestConsent.md
99
+ - docs/Response.md
100
+ - docs/User.md
101
+ - docs/UserdbApi.md
102
+ - git_push.sh
103
+ - lib/adzerk_decision_sdk.rb
104
+ - lib/adzerk_decision_sdk/api/decision_api.rb
105
+ - lib/adzerk_decision_sdk/api/userdb_api.rb
106
+ - lib/adzerk_decision_sdk/api_client.rb
107
+ - lib/adzerk_decision_sdk/api_error.rb
108
+ - lib/adzerk_decision_sdk/client.rb
109
+ - lib/adzerk_decision_sdk/configuration.rb
110
+ - lib/adzerk_decision_sdk/decision_client.rb
111
+ - lib/adzerk_decision_sdk/event_type.rb
112
+ - lib/adzerk_decision_sdk/models/consent_request.rb
113
+ - lib/adzerk_decision_sdk/models/content.rb
114
+ - lib/adzerk_decision_sdk/models/decision.rb
115
+ - lib/adzerk_decision_sdk/models/decision_data.rb
116
+ - lib/adzerk_decision_sdk/models/decision_request.rb
117
+ - lib/adzerk_decision_sdk/models/decision_response.rb
118
+ - lib/adzerk_decision_sdk/models/event.rb
119
+ - lib/adzerk_decision_sdk/models/placement.rb
120
+ - lib/adzerk_decision_sdk/models/pricing_data.rb
121
+ - lib/adzerk_decision_sdk/models/user.rb
122
+ - lib/adzerk_decision_sdk/pixel_client.rb
123
+ - lib/adzerk_decision_sdk/rate_type.rb
124
+ - lib/adzerk_decision_sdk/user_db_client.rb
125
+ - lib/adzerk_decision_sdk/version.rb
126
+ - pkg/adzerk_decision_sdk-1.0.0.gem
127
+ - spec/.gitkeep
128
+ - spec/placeholder_spec.rb
129
+ homepage: http://adzerk.com
130
+ licenses:
131
+ - Apache-2.0
132
+ metadata: {}
133
+ post_install_message:
134
+ rdoc_options: []
135
+ require_paths:
136
+ - lib
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '1.9'
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">"
145
+ - !ruby/object:Gem::Version
146
+ version: 1.3.1
147
+ requirements: []
148
+ rubygems_version: 3.1.2
149
+ signing_key:
150
+ specification_version: 4
151
+ summary: Adzerk Decision API
152
+ test_files:
153
+ - spec/placeholder_spec.rb