client_api 0.0.4 → 0.0.5
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/lib/client_api/handler.rb +35 -26
- data/lib/client_api/version.rb +1 -1
- data/spec/handler_spec.rb +34 -3
- 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: 883253d3ae47c4132a521511271f056c2f52e79f
|
4
|
+
data.tar.gz: aeb25348fd8139ae8e1a464d3e90761bd1d1863b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e44e30edc44430b4f7505b03d09058162d0e1d98bc580a959620a0c5eb6e1c0d3b68937aa22b4fee294ee3440e28867d3c241c2e34c30079fb726bf20222b6b8
|
7
|
+
data.tar.gz: 8e7189827df613fccbe0c433ed873922af5bf5d014402a6614cfe13d5718226357325b42d1d32cfbedc7a04319e9b0815257f25172765ef031269b3e3055a204
|
data/lib/client_api/handler.rb
CHANGED
@@ -11,54 +11,65 @@ class Handler
|
|
11
11
|
|
12
12
|
def self.load_data(params)
|
13
13
|
waited_keys = [:engine_name,:data]
|
14
|
-
|
15
|
-
|
14
|
+
if valid_reco_parameter(params,waited_keys)
|
15
|
+
resp = invoke('/apps/load_data','POST',params)
|
16
|
+
resp.code == 200 ? true : false
|
17
|
+
else
|
18
|
+
false
|
19
|
+
end
|
16
20
|
end
|
17
21
|
|
18
22
|
def self.similar_users(params)
|
19
|
-
waited_keys = [:engine_name,:
|
20
|
-
|
21
|
-
|
23
|
+
waited_keys = [:engine_name,:api_key,:id,:nb_wanted]
|
24
|
+
if valid_reco_parameter(params,waited_keys) && valid_parameter_type?(params)
|
25
|
+
resp = invoke('/users/similar','POST',params)
|
26
|
+
resp.code == 200 ? resp.body : false
|
27
|
+
else
|
28
|
+
false
|
29
|
+
end
|
22
30
|
end
|
23
31
|
|
24
32
|
def self.similar_items(params)
|
25
|
-
waited_keys = [:engine_name,:
|
26
|
-
|
27
|
-
|
33
|
+
waited_keys = [:engine_name,:api_key,:id,:nb_wanted]
|
34
|
+
if valid_reco_parameter(params,waited_keys) && valid_parameter_type?(params)
|
35
|
+
resp = invoke('/items/similar','POST',params)
|
36
|
+
resp.code == 200 ? resp.body : false
|
37
|
+
else
|
38
|
+
false
|
39
|
+
end
|
28
40
|
end
|
29
41
|
|
30
42
|
def self.recommend(params)
|
31
|
-
waited_keys = [:engine_name,:
|
32
|
-
|
33
|
-
|
43
|
+
waited_keys = [:engine_name,:api_key,:id,:nb_wanted]
|
44
|
+
if valid_reco_parameter(params,waited_keys) && valid_parameter_type?(params)
|
45
|
+
resp = invoke('/users/recommend','POST',params)
|
46
|
+
resp.code == 200 ? resp.body : false
|
47
|
+
else
|
48
|
+
false
|
49
|
+
end
|
34
50
|
end
|
35
51
|
|
36
52
|
private #######################################
|
37
53
|
|
38
|
-
#launch a request to the api server
|
39
54
|
def self.get_response(request,url,param)
|
40
55
|
request[:post] ? response = RestClient.post(url,param) : response = RestClient.get(url, {:params => param})
|
41
56
|
response
|
42
57
|
end
|
43
58
|
|
44
|
-
#return the response's code
|
45
59
|
def self.get_code(response)
|
46
60
|
response.code
|
47
61
|
end
|
48
62
|
|
49
|
-
#return the correct url to the api server
|
50
63
|
def self.get_url(url)
|
51
64
|
return API_SERVER+url
|
52
65
|
end
|
53
66
|
|
54
|
-
#determines the restfull method
|
55
67
|
def self.get_request(type)
|
56
68
|
request = {post: false,get: false}
|
57
69
|
type == 'POST' ? request[:post] = true : request[:get] = true
|
58
70
|
request
|
59
71
|
end
|
60
72
|
|
61
|
-
#invoke the api et return the response
|
62
73
|
def self.invoke(uri,req,params)
|
63
74
|
request = get_request(req)
|
64
75
|
url = get_url(uri)
|
@@ -66,12 +77,10 @@ class Handler
|
|
66
77
|
return response
|
67
78
|
end
|
68
79
|
|
69
|
-
#determines if the passed parameter is a hash
|
70
80
|
def self.valid_parameter?(param)
|
71
81
|
param.is_a?(Hash)
|
72
82
|
end
|
73
83
|
|
74
|
-
#determines if the waited keys are present in the parameter
|
75
84
|
def self.valid_keys?(param,waited_keys)
|
76
85
|
waited_keys.each do |k|
|
77
86
|
if !(param.has_key?(k))
|
@@ -82,7 +91,6 @@ class Handler
|
|
82
91
|
return true
|
83
92
|
end
|
84
93
|
|
85
|
-
#determines if the parameter's values are not empty Hash
|
86
94
|
def self.valid_values?(param)
|
87
95
|
parameter = {object: JSON.parse(param[:object],symbolize_names: true),option: JSON.parse(param[:option],symbolize_names: true)}
|
88
96
|
values = parameter.values
|
@@ -95,7 +103,6 @@ class Handler
|
|
95
103
|
return true
|
96
104
|
end
|
97
105
|
|
98
|
-
#determines if the option is valid
|
99
106
|
def self.valid_option?(option)
|
100
107
|
option = JSON.parse(option,symbolize_names: true)
|
101
108
|
waited_keys = [:user,:app]
|
@@ -117,7 +124,6 @@ class Handler
|
|
117
124
|
end
|
118
125
|
end
|
119
126
|
|
120
|
-
#determines if the object's keys are valid
|
121
127
|
def self.valid_object_keys?(keys,object_keys)
|
122
128
|
object_keys.each do |k|
|
123
129
|
unless keys.include?(k)
|
@@ -128,7 +134,6 @@ class Handler
|
|
128
134
|
return true
|
129
135
|
end
|
130
136
|
|
131
|
-
#determines if the object's values are valid
|
132
137
|
def self.valid_object_values?(values)
|
133
138
|
values.each do |v|
|
134
139
|
if v.nil? || !(v.is_a?(String)) || v.empty?
|
@@ -139,7 +144,6 @@ class Handler
|
|
139
144
|
return true
|
140
145
|
end
|
141
146
|
|
142
|
-
#determines if the object is valid
|
143
147
|
def self.valid_param_object?(object_keys,keys,values)
|
144
148
|
response = true
|
145
149
|
if !(valid_object_keys?(keys,object_keys)) || !(valid_object_values?(values))
|
@@ -148,7 +152,6 @@ class Handler
|
|
148
152
|
response
|
149
153
|
end
|
150
154
|
|
151
|
-
#determines if the object is valid according to the true option
|
152
155
|
def self.valid_object?(object,option)
|
153
156
|
object = JSON.parse(object,symbolize_names: true)
|
154
157
|
option = JSON.parse(option,symbolize_names: true)
|
@@ -163,12 +166,18 @@ class Handler
|
|
163
166
|
end
|
164
167
|
end
|
165
168
|
|
166
|
-
|
169
|
+
def self.valid_parameter_type?(params)
|
170
|
+
params[:engine_name].is_a?(String) && params[:api_key].is_a?(String) && params[:id].is_a?(Fixnum) && params[:nb_wanted].is_a?(Fixnum)
|
171
|
+
end
|
172
|
+
|
167
173
|
def self.validate(param,waited_keys)
|
168
174
|
valid_parameter?(param) && valid_keys?(param,waited_keys) && valid_values?(param) && valid_option?(param[:option]) && valid_object?(param[:object],param[:option])
|
169
175
|
end
|
170
176
|
|
171
|
-
|
177
|
+
def self.valid_reco_parameter(param,waited_keys)
|
178
|
+
valid_parameter?(param) && valid_keys?(param,waited_keys)
|
179
|
+
end
|
180
|
+
|
172
181
|
def self.call_api(params,short_uri,rest_req,waited_keys)
|
173
182
|
if validate(params,waited_keys)
|
174
183
|
response = invoke(short_uri,rest_req,params)
|
data/lib/client_api/version.rb
CHANGED
data/spec/handler_spec.rb
CHANGED
@@ -91,19 +91,50 @@ describe Handler do
|
|
91
91
|
|
92
92
|
describe '.similar_users' do
|
93
93
|
context "When similar users are found" do
|
94
|
-
it {expect(Handler.similar_users(params_user_based)).to_not eq
|
94
|
+
it {expect(Handler.similar_users(params_user_based)).to_not eq false }
|
95
|
+
end
|
96
|
+
context "When similar_users parameter are not valid" do
|
97
|
+
param = {engine_name: 1,api_key: '926eb0b0-e99d-0131-7e06-080027ab4d7b',id: 1,nb_wanted: 2}
|
98
|
+
it {expect(Handler.similar_users(param)).to eq false }
|
99
|
+
param = {engine_name: "eng869",api_key: 2,id: 1,nb_wanted: 2}
|
100
|
+
it {expect(Handler.similar_users(param)).to eq false }
|
101
|
+
param = {engine_name: "eng869",api_key: '926eb0b0-e99d-0131-7e06-080027ab4d7b',id: '1',nb_wanted: 2}
|
102
|
+
it {expect(Handler.similar_users(param)).to eq false }
|
103
|
+
param = {engine_name: 1,api_key: '926eb0b0-e99d-0131-7e06-080027ab4d7b',id: 1,nb_wanted: '2'}
|
104
|
+
it {expect(Handler.similar_users(param)).to eq false }
|
95
105
|
end
|
96
106
|
end
|
97
107
|
|
98
108
|
describe '.similar_items' do
|
99
109
|
context "When similar items are found" do
|
100
|
-
it {expect(Handler.similar_items(params_item_based)).to_not eq
|
110
|
+
it {expect(Handler.similar_items(params_item_based)).to_not eq false }
|
111
|
+
end
|
112
|
+
context "When similar_users parameter are not valid" do
|
113
|
+
param = {engine_name: 1,api_key: '926eb0b0-e99d-0131-7e06-080027ab4d7b',id: 1,nb_wanted: 2}
|
114
|
+
it {expect(Handler.similar_items(param)).to eq false }
|
115
|
+
param = {engine_name: "eng111",api_key: 2,id: 1,nb_wanted: 2}
|
116
|
+
it {expect(Handler.similar_items(param)).to eq false }
|
117
|
+
param = {engine_name: "eng111",api_key: '926eb0b0-e99d-0131-7e06-080027ab4d7b',id: '1',nb_wanted: 2}
|
118
|
+
it {expect(Handler.similar_items(param)).to eq false }
|
119
|
+
param = {engine_name: 1,api_key: '926eb0b0-e99d-0131-7e06-080027ab4d7b',id: 1,nb_wanted: '2'}
|
120
|
+
it {expect(Handler.similar_items(param)).to eq false }
|
101
121
|
end
|
102
122
|
end
|
103
123
|
|
104
124
|
describe '.recommend' do
|
105
125
|
context "When recommendations are sent" do
|
106
|
-
it {expect(Handler.recommend(params_item_based)).to_not eq
|
126
|
+
it {expect(Handler.recommend(params_item_based)).to_not eq false }
|
127
|
+
end
|
128
|
+
|
129
|
+
context "When similar_users parameter are not valid" do
|
130
|
+
param = {engine_name: 1,api_key: '926eb0b0-e99d-0131-7e06-080027ab4d7b',id: 1,nb_wanted: 2}
|
131
|
+
it {expect(Handler.recommend(param)).to eq false }
|
132
|
+
param = {engine_name: "eng111",api_key: 2,id: 1,nb_wanted: 2}
|
133
|
+
it {expect(Handler.recommend(param)).to eq false }
|
134
|
+
param = {engine_name: "eng111",api_key: '926eb0b0-e99d-0131-7e06-080027ab4d7b',id: '1',nb_wanted: 2}
|
135
|
+
it {expect(Handler.recommend(param)).to eq false }
|
136
|
+
param = {engine_name: 1,api_key: '926eb0b0-e99d-0131-7e06-080027ab4d7b',id: 1,nb_wanted: '2'}
|
137
|
+
it {expect(Handler.recommend(param)).to eq false }
|
107
138
|
end
|
108
139
|
end
|
109
140
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: client_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 'fabira && atakem '
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|