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