attune 0.0.2 → 0.0.3
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 +1 -1
- data/lib/attune/client.rb +12 -7
- data/lib/attune/version.rb +1 -1
- data/spec/attune/client_spec.rb +25 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71b45b8b01601ab2b240d6c5243a39c0991a23d9
|
4
|
+
data.tar.gz: fd29c20cac7f27e6cb3aa00f9a6c8ec4c54070a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 830ae6660ed070894351cb69c13da91827fbb9abaa43a79377e527d1f8d339be1c6c20391280f4b9a315363c8cb7d24f344e6e9ccc0ba166d327651cbe9549f5
|
7
|
+
data.tar.gz: b7dd011b6e0003d0fa5d7e7a69cb53666dd3773e1cd50de389e870bb928ba75d9a1e4506d73b4af124d37a8eeac464a1b14cf66bf7473241fe7bbc618201844b
|
data/README.md
CHANGED
data/lib/attune/client.rb
CHANGED
@@ -42,7 +42,7 @@ module Attune
|
|
42
42
|
# @option options [String] :user_agent The user agent for the application used by the anonymous users
|
43
43
|
# @return id [String]
|
44
44
|
# @raise [ArgumentError] if user_agent is not provided
|
45
|
-
# @raise [Faraday::Error] if the request fails or exceeds the timeout
|
45
|
+
# @raise [Faraday::Error::ClientError] if the request fails or exceeds the timeout
|
46
46
|
def create_anonymous(options)
|
47
47
|
raise ArgumentError, "user_agent required" unless options[:user_agent]
|
48
48
|
if id = options[:id]
|
@@ -76,7 +76,7 @@ module Attune
|
|
76
76
|
# @option options [String] :customer id of customer (optional)
|
77
77
|
# @return ranking [Array<String>] The entities in their ranked order
|
78
78
|
# @raise [ArgumentError] if required parameters are missing
|
79
|
-
# @raise [Faraday::Error] if the request fails or exceeds the timeout
|
79
|
+
# @raise [Faraday::Error::ClientError] if the request fails or exceeds the timeout
|
80
80
|
def get_rankings(options)
|
81
81
|
qs = encoded_ranking_params(options)
|
82
82
|
if response = get("rankings/#{qs}", customer: options.fetch(:customer, 'none'))
|
@@ -90,7 +90,7 @@ module Attune
|
|
90
90
|
# Get multiple rankings in one call
|
91
91
|
#
|
92
92
|
# @example
|
93
|
-
# rankings = client.
|
93
|
+
# rankings = client.multi_get_rankings([
|
94
94
|
# {
|
95
95
|
# id: '0cddbc0-6114-11e3-949a-0800200c9a66',
|
96
96
|
# view: 'b/mens-pants',
|
@@ -106,15 +106,20 @@ module Attune
|
|
106
106
|
# ])
|
107
107
|
# @param [Array<Hash>] multi_options An array of options (see #get_rankings)
|
108
108
|
# @return [Array<Array<String>>] rankings
|
109
|
-
# @raise [Faraday::Error] if the request fails or exceeds the timeout
|
109
|
+
# @raise [Faraday::Error::ClientError] if the request fails or exceeds the timeout
|
110
110
|
def multi_get_rankings(multi_options)
|
111
111
|
requests = multi_options.map do |options|
|
112
112
|
encoded_ranking_params(options)
|
113
113
|
end
|
114
114
|
if response = get("rankings", ids: requests)
|
115
115
|
results = JSON.parse(response.body)['results']
|
116
|
-
|
117
|
-
|
116
|
+
|
117
|
+
# Order of encoded paramaters may change, so we must parse them
|
118
|
+
results = Hash[results.map do |request, result|
|
119
|
+
[CGI.parse(request), result]
|
120
|
+
end]
|
121
|
+
requests.map do |request|
|
122
|
+
results[CGI.parse(request)]['ranking']
|
118
123
|
end
|
119
124
|
else
|
120
125
|
# In mock mode: return the entities in the order passed in
|
@@ -133,7 +138,7 @@ module Attune
|
|
133
138
|
# '25892e17-80f6-415f-9c65-7395632f022',
|
134
139
|
# 'cd171f7c-560d-4a62-8d65-16b87419a58'
|
135
140
|
# )
|
136
|
-
# @raise [Faraday::Error] if the request fails or exceeds the timeout
|
141
|
+
# @raise [Faraday::Error::ClientError] if the request fails or exceeds the timeout
|
137
142
|
def bind(id, customer_id)
|
138
143
|
put("bindings/anonymous=#{id}&customer=#{customer_id}")
|
139
144
|
true
|
data/lib/attune/version.rb
CHANGED
data/spec/attune/client_spec.rb
CHANGED
@@ -116,9 +116,33 @@ describe Attune::Client do
|
|
116
116
|
expect(rankings).to eq(%W[1004 1003 1002 1001])
|
117
117
|
end
|
118
118
|
|
119
|
+
let(:req1){ CGI::escape 'anonymous=0cddbc0-6114-11e3-949a-0800200c9a66&view=b%2Fmens-pants&entity_collection=products&entities=1001%2C%2C1002%2C%2C1003%2C%2C1004&ip=none' }
|
120
|
+
let(:req2){ CGI::escape 'anonymous=0cddbc0-6114-11e3-949a-0800200c9a66&view=b%2Fmens-pants&entity_collection=products&entities=2001%2C%2C2002%2C%2C2003%2C%2C2004&ip=none' }
|
119
121
|
it "can multi_get_rankings" do
|
120
122
|
stubs.get("/rankings?ids=anonymous%3D0cddbc0-6114-11e3-949a-0800200c9a66%26view%3Db%252Fmens-pants%26entity_collection%3Dproducts%26entities%3D1001%252C%252C1002%252C%252C1003%252C%252C1004%26ip%3Dnone&ids=anonymous%3D0cddbc0-6114-11e3-949a-0800200c9a66%26view%3Db%252Fmens-pants%26entity_collection%3Dproducts%26entities%3D2001%252C%252C2002%252C%252C2003%252C%252C2004%26ip%3Dnone") do
|
121
|
-
[200, {},
|
123
|
+
[200, {}, <<-JSON]
|
124
|
+
{
|
125
|
+
"errors": {},
|
126
|
+
"results": {
|
127
|
+
"anonymous=0cddbc0-6114-11e3-949a-0800200c9a66&entities=1001%2C%2C1002%2C%2C1003%2C%2C1004&entity_collection=products&ip=none&view=b%2Fmens-pants": {
|
128
|
+
"ranking": [
|
129
|
+
"1004",
|
130
|
+
"1003",
|
131
|
+
"1002",
|
132
|
+
"1001"
|
133
|
+
]
|
134
|
+
},
|
135
|
+
"anonymous=0cddbc0-6114-11e3-949a-0800200c9a66&entities=2001%2C%2C2002%2C%2C2003%2C%2C2004&entity_collection=products&ip=none&view=b%2Fmens-pants": {
|
136
|
+
"ranking": [
|
137
|
+
"2004",
|
138
|
+
"2003",
|
139
|
+
"2002",
|
140
|
+
"2001"
|
141
|
+
]
|
142
|
+
}
|
143
|
+
}
|
144
|
+
}
|
145
|
+
JSON
|
122
146
|
end
|
123
147
|
rankings = client.multi_get_rankings([
|
124
148
|
{
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attune
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Hawthorn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|