adzerk_decision_sdk 1.0.0.pre.beta.1

Sign up to get free protection for your applications and to get access to all the features.
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