attune 1.0.5 → 1.0.6
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/README.md +11 -9
- data/lib/attune.rb +10 -9
- data/lib/attune/api/anonymous.rb +65 -43
- data/lib/attune/api/entities.rb +77 -33
- data/lib/attune/client.rb +0 -2
- data/lib/attune/default.rb +1 -1
- data/lib/attune/mocks.rb +11 -0
- data/lib/attune/models/anonymous_result.rb +38 -0
- data/lib/attune/models/batch_ranking_request.rb +41 -0
- data/lib/attune/models/batch_ranking_result.rb +41 -0
- data/lib/attune/models/blacklist.rb +57 -68
- data/lib/attune/models/blacklist_get_response.rb +41 -0
- data/lib/attune/models/blacklist_params.rb +79 -0
- data/lib/attune/models/blacklist_save_response.rb +38 -0
- data/lib/attune/models/customer.rb +16 -19
- data/lib/attune/models/ranked_entities.rb +55 -0
- data/lib/attune/models/ranking_params.rb +93 -0
- data/lib/attune/models/scope_entry.rb +45 -0
- data/lib/attune/version.rb +1 -1
- data/spec/attune/client_spec.rb +24 -31
- data/spec/attune_spec.rb +1 -1
- data/spec/remote_spec.rb +1 -1
- metadata +12 -11
- data/lib/attune/models/anonymousresult.rb +0 -41
- data/lib/attune/models/batchrankingrequest.rb +0 -44
- data/lib/attune/models/batchrankingresult.rb +0 -44
- data/lib/attune/models/blacklistgetresponse.rb +0 -44
- data/lib/attune/models/blacklistparams.rb +0 -87
- data/lib/attune/models/blacklistsaveresponse.rb +0 -41
- data/lib/attune/models/rankedentities.rb +0 -60
- data/lib/attune/models/rankingparams.rb +0 -103
- data/lib/attune/models/scopeentry.rb +0 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f989d86ece4bbcff8762dbfc11c3879e7b057913
|
4
|
+
data.tar.gz: ef029ed4b38d4d0ed4a8dc072646bcf37e474a1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f00289644fedfcb042e5cc19a2001d60707f22c2ea0548e4a38a00133ca0f756a865b2b1105c18078618398bbca32ca48f374d1a83a34c391d9f829e41e5672
|
7
|
+
data.tar.gz: fbda6bd0e3aa269e23bdbcda5419f6c9292f96d418da688bec8155d8e0d9013f0586097443402bbb37896b9dfb294ea65d65eefcb3ac81f93aae2e9f1adfdaae
|
data/README.md
CHANGED
@@ -31,7 +31,7 @@ Visitors to the application should be tagged with an anonymous user id
|
|
31
31
|
``` ruby
|
32
32
|
class ApplicationController
|
33
33
|
before_filter do
|
34
|
-
session[:attune_id] ||= attune_client.
|
34
|
+
session[:attune_id] ||= attune_client.anonymous.create.id
|
35
35
|
end
|
36
36
|
|
37
37
|
private
|
@@ -49,7 +49,8 @@ class SessionsController
|
|
49
49
|
|
50
50
|
def create
|
51
51
|
# ...
|
52
|
-
|
52
|
+
attune_customer = Attune::Model::Customer.new(customer: current_user.id)
|
53
|
+
attune_client.anonymous.update(session[:attune_id], attune_customer)
|
53
54
|
end
|
54
55
|
end
|
55
56
|
```
|
@@ -64,14 +65,15 @@ class ProductsController
|
|
64
65
|
|
65
66
|
private
|
66
67
|
def sorted products
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
)
|
68
|
+
ranking_params = Attune::Model::RankingParams.new
|
69
|
+
ranking_params.anonymous = session[:attune_id]
|
70
|
+
ranking_params.view = request.fullpath
|
71
|
+
ranking_params.entity_type = 'products'
|
72
|
+
ranking_params.user_agent = request.env["HTTP_USER_AGENT"]
|
73
|
+
ranking_params.ids = products.map(&:id)
|
74
|
+
ranking = attune_client.entities.get_rankings(ranking_params)
|
73
75
|
products.sort_by do |product|
|
74
|
-
ranking
|
76
|
+
ranking.ranking.index(product.id.to_s)
|
75
77
|
end
|
76
78
|
end
|
77
79
|
end
|
data/lib/attune.rb
CHANGED
@@ -4,19 +4,20 @@ require "attune/version"
|
|
4
4
|
require "attune/configurable"
|
5
5
|
require "attune/default"
|
6
6
|
require "attune/client"
|
7
|
+
require "attune/mocks"
|
7
8
|
require "attune/api/entities"
|
8
9
|
require "attune/api/anonymous"
|
9
|
-
require "attune/models/
|
10
|
-
require "attune/models/
|
11
|
-
require "attune/models/
|
12
|
-
require "attune/models/
|
13
|
-
require "attune/models/
|
10
|
+
require "attune/models/blacklist_get_response"
|
11
|
+
require "attune/models/anonymous_result"
|
12
|
+
require "attune/models/blacklist_params"
|
13
|
+
require "attune/models/ranked_entities"
|
14
|
+
require "attune/models/ranking_params"
|
14
15
|
require "attune/models/customer"
|
15
16
|
require "attune/models/blacklist"
|
16
|
-
require "attune/models/
|
17
|
-
require "attune/models/
|
18
|
-
require "attune/models/
|
19
|
-
require "attune/models/
|
17
|
+
require "attune/models/batch_ranking_request"
|
18
|
+
require "attune/models/scope_entry"
|
19
|
+
require "attune/models/blacklist_save_response"
|
20
|
+
require "attune/models/batch_ranking_result"
|
20
21
|
|
21
22
|
module Attune
|
22
23
|
def self.client
|
data/lib/attune/api/anonymous.rb
CHANGED
@@ -10,14 +10,10 @@ module Attune
|
|
10
10
|
@client = client
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
URI.encode(string.to_s)
|
15
|
-
end
|
16
|
-
|
17
|
-
# Creates an anonymous visitor.
|
13
|
+
# Create anonymous visitor
|
18
14
|
#
|
19
15
|
# @return [Attune::Model::AnonymousResult]
|
20
|
-
# @raise [ArgumentError]
|
16
|
+
# @raise [ArgumentError] for invalid inputs
|
21
17
|
# @raise [Faraday::Error::ClientError] if the request fails or exceeds the timeout
|
22
18
|
# @raise [AuthenticationException] if authorization header not accepted
|
23
19
|
def create ()
|
@@ -38,26 +34,35 @@ module Attune
|
|
38
34
|
headers = nil
|
39
35
|
post_body = nil
|
40
36
|
response = @client.request(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body })
|
41
|
-
|
37
|
+
if response
|
38
|
+
Attune::Model::AnonymousResult.new(JSON.parse(response.body))
|
39
|
+
else
|
40
|
+
mockProc = MOCKS['Anonymous.create']
|
41
|
+
if mockProc
|
42
|
+
mockResponse = mockProc.call()
|
43
|
+
Attune::Model::AnonymousResult.new(mockResponse)
|
44
|
+
else
|
45
|
+
nil
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
42
49
|
end
|
43
50
|
|
44
|
-
#
|
51
|
+
# Returns an anonymous visitor, containing any assigned customer ID.
|
45
52
|
#
|
46
|
-
# @param [
|
47
|
-
# @
|
48
|
-
# @raise [ArgumentError]
|
53
|
+
# @param [String] anonymous
|
54
|
+
# @return [Attune::Model::Customer]
|
55
|
+
# @raise [ArgumentError] for invalid inputs
|
49
56
|
# @raise [Faraday::Error::ClientError] if the request fails or exceeds the timeout
|
50
57
|
# @raise [AuthenticationException] if authorization header not accepted
|
51
|
-
def
|
58
|
+
def get (anonymous)
|
52
59
|
query_param_keys = []
|
53
60
|
|
54
61
|
# verify existence of params
|
55
|
-
raise "anonymous is required" if anonymous.nil?
|
56
|
-
raise "body is required" if body.nil?
|
62
|
+
raise ArgumentError, "anonymous is required" if anonymous.nil?
|
57
63
|
# set default values and merge with input
|
58
64
|
options = {
|
59
|
-
:anonymous => anonymous
|
60
|
-
:body => body}
|
65
|
+
:anonymous => anonymous}
|
61
66
|
|
62
67
|
#resource path
|
63
68
|
path = "/anonymous/{anonymous}".sub('{format}','json').sub('{' + 'anonymous' + '}', escapeString(anonymous))
|
@@ -70,45 +75,38 @@ module Attune
|
|
70
75
|
|
71
76
|
headers = nil
|
72
77
|
post_body = nil
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
end
|
82
|
-
end
|
83
|
-
post_body = array
|
84
|
-
|
78
|
+
response = @client.request(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body })
|
79
|
+
if response
|
80
|
+
Attune::Model::Customer.new(JSON.parse(response.body))
|
81
|
+
else
|
82
|
+
mockProc = MOCKS['Anonymous.get']
|
83
|
+
if mockProc
|
84
|
+
mockResponse = mockProc.call(anonymous)
|
85
|
+
Attune::Model::Customer.new(mockResponse)
|
85
86
|
else
|
86
|
-
|
87
|
-
post_body = body.to_body
|
88
|
-
else
|
89
|
-
post_body = body
|
90
|
-
end
|
87
|
+
nil
|
91
88
|
end
|
92
89
|
end
|
93
|
-
@client.request(:PUT, path, {:params=>queryopts,:headers=>headers, :body=>post_body})
|
94
90
|
|
95
91
|
end
|
96
92
|
|
97
|
-
#
|
93
|
+
# Binds one actor to another, allowing activities of those actors to be shared between the two.
|
98
94
|
#
|
99
|
-
# @param [
|
100
|
-
# @
|
101
|
-
# @raise [ArgumentError]
|
95
|
+
# @param [String] anonymous
|
96
|
+
# @param [Attune::Model::Customer] body
|
97
|
+
# @raise [ArgumentError] for invalid inputs
|
102
98
|
# @raise [Faraday::Error::ClientError] if the request fails or exceeds the timeout
|
103
99
|
# @raise [AuthenticationException] if authorization header not accepted
|
104
|
-
def
|
100
|
+
def update (anonymous,body)
|
105
101
|
query_param_keys = []
|
106
102
|
|
107
103
|
# verify existence of params
|
108
|
-
raise "anonymous is required" if anonymous.nil?
|
104
|
+
raise ArgumentError, "anonymous is required" if anonymous.nil?
|
105
|
+
raise ArgumentError, "body is required" if body.nil?
|
109
106
|
# set default values and merge with input
|
110
107
|
options = {
|
111
|
-
:anonymous => anonymous
|
108
|
+
:anonymous => anonymous,
|
109
|
+
:body => body}
|
112
110
|
|
113
111
|
#resource path
|
114
112
|
path = "/anonymous/{anonymous}".sub('{format}','json').sub('{' + 'anonymous' + '}', escapeString(anonymous))
|
@@ -121,11 +119,35 @@ module Attune
|
|
121
119
|
|
122
120
|
headers = nil
|
123
121
|
post_body = nil
|
124
|
-
|
125
|
-
|
122
|
+
if body != nil
|
123
|
+
if body.is_a?(Array)
|
124
|
+
array = Array.new
|
125
|
+
body.each do |item|
|
126
|
+
if item.respond_to?("to_body".to_sym)
|
127
|
+
array.push item.to_body
|
128
|
+
else
|
129
|
+
array.push item
|
130
|
+
end
|
131
|
+
end
|
132
|
+
post_body = array
|
133
|
+
|
134
|
+
else
|
135
|
+
if body.respond_to?("to_body".to_sym)
|
136
|
+
post_body = body.to_body
|
137
|
+
else
|
138
|
+
post_body = body
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
@client.request(:PUT, path, {:params=>queryopts,:headers=>headers, :body=>post_body})
|
143
|
+
|
126
144
|
end
|
127
145
|
|
146
|
+
private
|
147
|
+
def escapeString(string)
|
148
|
+
URI.encode(string.to_s)
|
128
149
|
end
|
150
|
+
end
|
129
151
|
end
|
130
152
|
end
|
131
153
|
|
data/lib/attune/api/entities.rb
CHANGED
@@ -10,14 +10,10 @@ module Attune
|
|
10
10
|
@client = client
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
URI.encode(string.to_s)
|
15
|
-
end
|
16
|
-
|
17
|
-
# blacklistGet
|
13
|
+
# List all blacklist entries for your account.
|
18
14
|
#
|
19
15
|
# @return [Attune::Model::BlacklistGetResponse]
|
20
|
-
# @raise [ArgumentError]
|
16
|
+
# @raise [ArgumentError] for invalid inputs
|
21
17
|
# @raise [Faraday::Error::ClientError] if the request fails or exceeds the timeout
|
22
18
|
# @raise [AuthenticationException] if authorization header not accepted
|
23
19
|
def blacklist_get ()
|
@@ -38,14 +34,25 @@ module Attune
|
|
38
34
|
headers = nil
|
39
35
|
post_body = nil
|
40
36
|
response = @client.request(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body })
|
41
|
-
|
37
|
+
if response
|
38
|
+
Attune::Model::BlacklistGetResponse.new(JSON.parse(response.body))
|
39
|
+
else
|
40
|
+
mockProc = MOCKS['Entities.blacklist_get']
|
41
|
+
if mockProc
|
42
|
+
mockResponse = mockProc.call()
|
43
|
+
Attune::Model::BlacklistGetResponse.new(mockResponse)
|
44
|
+
else
|
45
|
+
nil
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
42
49
|
end
|
43
50
|
|
44
|
-
#
|
51
|
+
# Save a new blacklist entry.
|
45
52
|
#
|
46
|
-
# @param [BlacklistParams] body
|
53
|
+
# @param [Attune::Model::BlacklistParams] body
|
47
54
|
# @return [Attune::Model::BlacklistSaveResponse]
|
48
|
-
# @raise [ArgumentError]
|
55
|
+
# @raise [ArgumentError] for invalid inputs
|
49
56
|
# @raise [Faraday::Error::ClientError] if the request fails or exceeds the timeout
|
50
57
|
# @raise [AuthenticationException] if authorization header not accepted
|
51
58
|
def blacklist_save (body)
|
@@ -79,28 +86,39 @@ module Attune
|
|
79
86
|
|
80
87
|
else
|
81
88
|
if body.respond_to?("to_body".to_sym)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
89
|
+
post_body = body.to_body
|
90
|
+
else
|
91
|
+
post_body = body
|
92
|
+
end
|
86
93
|
end
|
87
94
|
end
|
88
95
|
response = @client.request(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body })
|
89
|
-
|
96
|
+
if response
|
97
|
+
Attune::Model::BlacklistSaveResponse.new(JSON.parse(response.body))
|
98
|
+
else
|
99
|
+
mockProc = MOCKS['Entities.blacklist_save']
|
100
|
+
if mockProc
|
101
|
+
mockResponse = mockProc.call(body)
|
102
|
+
Attune::Model::BlacklistSaveResponse.new(mockResponse)
|
103
|
+
else
|
104
|
+
nil
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
90
108
|
end
|
91
109
|
|
92
|
-
#
|
110
|
+
# Returns a ranking of the specified entities for the current user.
|
93
111
|
#
|
94
|
-
# @param [RankingParams] body
|
112
|
+
# @param [Attune::Model::RankingParams] body
|
95
113
|
# @return [Attune::Model::RankedEntities]
|
96
|
-
# @raise [ArgumentError]
|
114
|
+
# @raise [ArgumentError] for invalid inputs
|
97
115
|
# @raise [Faraday::Error::ClientError] if the request fails or exceeds the timeout
|
98
116
|
# @raise [AuthenticationException] if authorization header not accepted
|
99
117
|
def get_rankings (body)
|
100
118
|
query_param_keys = []
|
101
119
|
|
102
120
|
# verify existence of params
|
103
|
-
raise "body is required" if body.nil?
|
121
|
+
raise ArgumentError, "body is required" if body.nil?
|
104
122
|
# set default values and merge with input
|
105
123
|
options = {
|
106
124
|
:body => body}
|
@@ -129,28 +147,39 @@ module Attune
|
|
129
147
|
|
130
148
|
else
|
131
149
|
if body.respond_to?("to_body".to_sym)
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
150
|
+
post_body = body.to_body
|
151
|
+
else
|
152
|
+
post_body = body
|
153
|
+
end
|
136
154
|
end
|
137
155
|
end
|
138
156
|
response = @client.request(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body })
|
139
|
-
|
157
|
+
if response
|
158
|
+
Attune::Model::RankedEntities.new(JSON.parse(response.body))
|
159
|
+
else
|
160
|
+
mockProc = MOCKS['Entities.get_rankings']
|
161
|
+
if mockProc
|
162
|
+
mockResponse = mockProc.call(body)
|
163
|
+
Attune::Model::RankedEntities.new(mockResponse)
|
164
|
+
else
|
165
|
+
nil
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
140
169
|
end
|
141
170
|
|
142
|
-
#
|
171
|
+
# Returns multiple rankings of the specified entities for the current user.
|
143
172
|
#
|
144
|
-
# @param [BatchRankingRequest] body
|
173
|
+
# @param [Attune::Model::BatchRankingRequest] body
|
145
174
|
# @return [Attune::Model::BatchRankingResult]
|
146
|
-
# @raise [ArgumentError]
|
175
|
+
# @raise [ArgumentError] for invalid inputs
|
147
176
|
# @raise [Faraday::Error::ClientError] if the request fails or exceeds the timeout
|
148
177
|
# @raise [AuthenticationException] if authorization header not accepted
|
149
178
|
def batch_get_rankings (body)
|
150
179
|
query_param_keys = []
|
151
180
|
|
152
181
|
# verify existence of params
|
153
|
-
raise "body is required" if body.nil?
|
182
|
+
raise ArgumentError, "body is required" if body.nil?
|
154
183
|
# set default values and merge with input
|
155
184
|
options = {
|
156
185
|
:body => body}
|
@@ -179,17 +208,32 @@ module Attune
|
|
179
208
|
|
180
209
|
else
|
181
210
|
if body.respond_to?("to_body".to_sym)
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
211
|
+
post_body = body.to_body
|
212
|
+
else
|
213
|
+
post_body = body
|
214
|
+
end
|
186
215
|
end
|
187
216
|
end
|
188
217
|
response = @client.request(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body })
|
189
|
-
|
218
|
+
if response
|
219
|
+
Attune::Model::BatchRankingResult.new(JSON.parse(response.body))
|
220
|
+
else
|
221
|
+
mockProc = MOCKS['Entities.batch_get_rankings']
|
222
|
+
if mockProc
|
223
|
+
mockResponse = mockProc.call(body)
|
224
|
+
Attune::Model::BatchRankingResult.new(mockResponse)
|
225
|
+
else
|
226
|
+
nil
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
190
230
|
end
|
191
231
|
|
232
|
+
private
|
233
|
+
def escapeString(string)
|
234
|
+
URI.encode(string.to_s)
|
192
235
|
end
|
236
|
+
end
|
193
237
|
end
|
194
238
|
end
|
195
239
|
|
data/lib/attune/client.rb
CHANGED
@@ -67,8 +67,6 @@ module Attune
|
|
67
67
|
|
68
68
|
def request(http_method, path, opts)
|
69
69
|
adapter_method = adapter.method(http_method.downcase)
|
70
|
-
headers = {'Content-Type' => 'application/json' }
|
71
|
-
headers.merge! opts[:headers] if opts[:headers]
|
72
70
|
adapter_method.call do |req|
|
73
71
|
req.url path
|
74
72
|
req.headers['Content-Type'] = 'application/json'
|
data/lib/attune/default.rb
CHANGED
@@ -8,7 +8,7 @@ module Attune
|
|
8
8
|
module Default
|
9
9
|
extend Configurable
|
10
10
|
|
11
|
-
ENDPOINT = "
|
11
|
+
ENDPOINT = "https://api.attune-staging.co".freeze
|
12
12
|
|
13
13
|
# user our version of NetHttpPersistent adapter
|
14
14
|
Faraday::Adapter.register_middleware(attune_http_persistent: NetHttpPersistent)
|