promoted-ruby-client 0.1.18 → 0.1.19
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/Gemfile.lock +1 -1
- data/README.md +62 -0
- data/dev.md +1 -1
- data/lib/promoted/ruby/client.rb +3 -1
- data/lib/promoted/ruby/client/constants.rb +7 -0
- data/lib/promoted/ruby/client/request_builder.rb +10 -3
- data/lib/promoted/ruby/client/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b8a39c8af4d21ae9987db29f0041e57d54de87da119b799e89091069a0bfbc2
|
4
|
+
data.tar.gz: 7b3932706882a896f330b0bd0a3d05671111e80b97fac4403e355ae30e537750
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3146dc2f31afa84fa2b332b1cdb5ca145e7aa51140ae14503a8ca8a4aebc96bb59c4313ee10884b85ba819c930f40f9dd88e7d88454a39a9748b42f3e7d827e5
|
7
|
+
data.tar.gz: 903cb0dca7f83acfa605db3be223833ffebe78d0e530b1e98599ed2b8b15e2b5babffb1e40704789bab45f42f3d8372a46e2263733428da2e9fea90860003cb0
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -94,7 +94,66 @@ Field Name | Type | Optional? | Description
|
|
94
94
|
```:request_id``` | String | Yes | Generated by the SDK when needed (*do not set*)
|
95
95
|
```:content_id``` | String | No | Identifier for the content to be shown, must be set.
|
96
96
|
```:properties``` | Properties | Yes | Any additional custom properties to associate. For v1 integrations, it is fine not to fill in all the properties.
|
97
|
+
---
|
98
|
+
### Size
|
99
|
+
User's screen dimensions.
|
100
|
+
Field Name | Type | Optional? | Description
|
101
|
+
---------- | ---- | --------- | -----------
|
102
|
+
```:width``` | Integer | No | Screen width
|
103
|
+
```:height``` | Integer | No | Screen height
|
104
|
+
---
|
105
|
+
|
106
|
+
### ClientHints
|
107
|
+
Alternative to user-agent strings. See https://raw.githubusercontent.com/snowplow/iglu-central/master/schemas/org.ietf/http_client_hints/jsonschema/1-0-0
|
108
|
+
Field Name | Type | Optional? | Description
|
109
|
+
---------- | ---- | --------- | -----------
|
110
|
+
```:is_mobile``` | Boolean | Yes | Mobile flag
|
111
|
+
```:brand``` | Array of ClientBrandHint | Yes |
|
112
|
+
```:architecture``` | String | Yes |
|
113
|
+
```:model``` | String | Yes |
|
114
|
+
```:platform``` | String | Yes |
|
115
|
+
```:platform_version``` | String | Yes |
|
116
|
+
```:ua_full_version``` | String | Yes |
|
117
|
+
|
118
|
+
---
|
119
|
+
### ClientBrandHint
|
120
|
+
See https://raw.githubusercontent.com/snowplow/iglu-central/master/schemas/org.ietf/http_client_hints/jsonschema/1-0-0
|
121
|
+
Field Name | Type | Optional? | Description
|
122
|
+
---------- | ---- | --------- | -----------
|
123
|
+
```:brand``` | String | Yes | Mobile flag
|
124
|
+
```:version``` | String | Yes |
|
97
125
|
|
126
|
+
---
|
127
|
+
### Location
|
128
|
+
Information about the user's location.
|
129
|
+
Field Name | Type | Optional? | Description
|
130
|
+
---------- | ---- | --------- | -----------
|
131
|
+
```:latitude``` | Float | No | Location latitude
|
132
|
+
```:longitude``` | Float | No | Location longitude
|
133
|
+
```:accuracy_in_meters``` | Integer | Yes | Location accuracy if available
|
134
|
+
```:client_hints``` | ClientHints | Yes | HTTP client hints structure
|
135
|
+
---
|
136
|
+
|
137
|
+
### Browser
|
138
|
+
Information about the user's browser.
|
139
|
+
Field Name | Type | Optional? | Description
|
140
|
+
---------- | ---- | --------- | -----------
|
141
|
+
```:user_agent``` | String | Yes | Browser user agent string
|
142
|
+
```:viewport_size``` | Size | Yes | Size of the browser viewport
|
143
|
+
```:
|
144
|
+
---
|
145
|
+
### Device
|
146
|
+
Information about the user's device.
|
147
|
+
Field Name | Type | Optional? | Description
|
148
|
+
---------- | ---- | --------- | -----------
|
149
|
+
```:device_type``` | one of (`UNKNOWN_DEVICE_TYPE`, `DESKTOP`, `MOBILE`, `TABLET`) | Yes | Type of device
|
150
|
+
```:brand``` | String | Yes | "Apple, "google", Samsung", etc.
|
151
|
+
```:manufacturer``` | String | Yes | "Apple", "HTC", Motorola", "HUAWEI", etc.
|
152
|
+
```:identifier``` | String | Yes | Android: android.os.Build.MODEL; iOS: iPhoneXX,YY, etc.
|
153
|
+
```:screen``` | Screen | Yes | Screen dimensions
|
154
|
+
```:ip_address``` | String | Yes | Originating IP address
|
155
|
+
```:location``` | Location | Yes | Location information
|
156
|
+
```:browser``` | Browser | Yes | Browser information
|
98
157
|
---
|
99
158
|
### Paging
|
100
159
|
#### TODO
|
@@ -108,6 +167,7 @@ Field Name | Type | Optional? | Description
|
|
108
167
|
```:use_case``` | String | Yes | One of the use case values, i.e. 'FEED' (see [constants.rb](https://github.com/promotedai/promoted-ruby-client/blob/main/lib/promoted/ruby/client/constants.rb)).
|
109
168
|
```:properties``` | Properties | Yes | Any additional custom properties to associate.
|
110
169
|
```:paging``` | Paging | Yes | Paging parameters (see TODO)
|
170
|
+
```:device``` | Device | Yes | Device information (as available)
|
111
171
|
---
|
112
172
|
### MetricsRequest
|
113
173
|
Input to ```prepare_for_logging```
|
@@ -142,6 +202,8 @@ Field Name | Type | Optional? | Description
|
|
142
202
|
---------- | ---- | --------- | -----------
|
143
203
|
```:insertion``` | [] of Insertion | No | The insertions, which are from Delivery API (when ```deliver``` was called, i.e. we weren't either only-log or part of an experiment) or the input insertions (when the other conditions don't hold).
|
144
204
|
```:log_request``` | LogRequest | Yes | A message suitable for logging to Metrics API via ```send_log_request```. If the call to ```deliver``` was made (i.e. the request was not part of the CONTROL arm of an experiment or marked to only log), ```:log_request``` will not be set, as you can assume logging was performed on the server-side by Promoted.
|
205
|
+
```:client_request_id``` | String | Yes | Client-generated request id sent to Delivery API and may be useful for logging and debugging.
|
206
|
+
```:execution_server``` | one of 'API' or 'SDK' | Yes | Indicates if response insertions on a delivery request came from the API or the SDK.
|
145
207
|
---
|
146
208
|
|
147
209
|
### PromotedClient
|
data/dev.md
CHANGED
@@ -4,5 +4,5 @@
|
|
4
4
|
2. Get credentials for deployment from 1password.
|
5
5
|
3. Modify `promoted-ruby-client.gemspec`'s push block.
|
6
6
|
4. Run `gem build promoted-ruby-client.gemspec` to generate `gem`.
|
7
|
-
5. Run (using new output) `gem push promoted-ruby-client-0.1.
|
7
|
+
5. Run (using new output) `gem push promoted-ruby-client-0.1.19.gem`
|
8
8
|
6. Update README with new version.
|
data/lib/promoted/ruby/client.rb
CHANGED
@@ -210,7 +210,9 @@ module Promoted
|
|
210
210
|
|
211
211
|
client_response = {
|
212
212
|
insertion: response_insertions,
|
213
|
-
log_request: log_req
|
213
|
+
log_request: log_req,
|
214
|
+
execution_server: insertions_from_delivery ? Promoted::Ruby::Client::EXECUTION_SERVER['API'] : Promoted::Ruby::Client::EXECUTION_SERVER['SDK'],
|
215
|
+
client_request_id: delivery_request_builder.client_request_id
|
214
216
|
}
|
215
217
|
return client_response
|
216
218
|
end
|
@@ -32,6 +32,13 @@ module Promoted
|
|
32
32
|
CLIENT_TYPE = {'UNKNOWN_REQUEST_CLIENT' => 'UNKNOWN_REQUEST_CLIENT',
|
33
33
|
'PLATFORM_SERVER' => 'PLATFORM_SERVER',
|
34
34
|
'PLATFORM_CLIENT' => 'PLATFORM_CLIENT'}
|
35
|
+
|
36
|
+
EXECUTION_SERVER = {'API' => 'API', 'SDK' => 'SDK'}
|
37
|
+
|
38
|
+
DEVICE_TYPE = {'UNKNOWN_DEVICE_TYPE' => 'UNKNOWN_DEVICE_TYPE',
|
39
|
+
'DESKTOP' => 'DESKTOP',
|
40
|
+
'MOBILE' => 'MOBILE',
|
41
|
+
'TABLET' => 'TABLET'}
|
35
42
|
end
|
36
43
|
end
|
37
44
|
end
|
@@ -2,7 +2,7 @@ module Promoted
|
|
2
2
|
module Ruby
|
3
3
|
module Client
|
4
4
|
class RequestBuilder
|
5
|
-
attr_reader :session_id, :only_log, :experiment, :client_info,
|
5
|
+
attr_reader :session_id, :only_log, :experiment, :client_info, :device,
|
6
6
|
:view_id, :insertion, :to_compact_delivery_properties_func,
|
7
7
|
:request_id, :full_insertion, :use_case, :request, :to_compact_metrics_properties_func
|
8
8
|
|
@@ -24,6 +24,7 @@ module Promoted
|
|
24
24
|
@session_id = request[:session_id]
|
25
25
|
@platform_id = request[:platform_id]
|
26
26
|
@client_info = request[:client_info] || {}
|
27
|
+
@device = request[:device] || {}
|
27
28
|
@view_id = request[:view_id]
|
28
29
|
@use_case = Promoted::Ruby::Client::USE_CASES[request[:use_case]] || Promoted::Ruby::Client::USE_CASES['UNKNOWN_USE_CASE']
|
29
30
|
@full_insertion = args[:full_insertion]
|
@@ -57,6 +58,7 @@ module Promoted
|
|
57
58
|
user_info: user_info,
|
58
59
|
timing: timing,
|
59
60
|
client_info: @client_info.merge({ :client_type => Promoted::Ruby::Client::CLIENT_TYPE['PLATFORM_SERVER'] }),
|
61
|
+
device: @device,
|
60
62
|
platform_id: @platform_id,
|
61
63
|
view_id: @view_id,
|
62
64
|
session_id: @session_id,
|
@@ -64,7 +66,7 @@ module Promoted
|
|
64
66
|
search_query: request[:search_query],
|
65
67
|
properties: request[:properties],
|
66
68
|
paging: request[:paging],
|
67
|
-
client_request_id:
|
69
|
+
client_request_id: client_request_id
|
68
70
|
}
|
69
71
|
params[:insertion] = insertions_with_compact_props(@to_compact_delivery_properties_func)
|
70
72
|
|
@@ -102,7 +104,8 @@ module Promoted
|
|
102
104
|
params = {
|
103
105
|
user_info: user_info,
|
104
106
|
timing: timing,
|
105
|
-
client_info: @client_info
|
107
|
+
client_info: @client_info,
|
108
|
+
device: @device
|
106
109
|
}
|
107
110
|
|
108
111
|
if @experiment
|
@@ -184,6 +187,10 @@ module Promoted
|
|
184
187
|
@insertion
|
185
188
|
end
|
186
189
|
|
190
|
+
def client_request_id
|
191
|
+
request[:client_request_id]
|
192
|
+
end
|
193
|
+
|
187
194
|
private
|
188
195
|
|
189
196
|
def add_missing_ids_on_insertions! request, insertions
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: promoted-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- scottmcmaster
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|