client_api 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d1f3ecfc9fe23b33756fbbcd4cbc2d86c3ad166
4
- data.tar.gz: b3adbd713f6d21955fc00ec9943ec02d47bbbb1b
3
+ metadata.gz: 883253d3ae47c4132a521511271f056c2f52e79f
4
+ data.tar.gz: aeb25348fd8139ae8e1a464d3e90761bd1d1863b
5
5
  SHA512:
6
- metadata.gz: 145d09183ae20cb0a75608423676e21252b1f0e0fec28d6e0dd2e1a23aa07c349e2d4c0223c1c4e2e28f97a882d955ff84dcdb2f75980aa645fb469a2fc93e80
7
- data.tar.gz: 813552e93602c59d38ca62b73740f5e4d528bdd168dd2924663c307c0a4fd0e999957590b849b8a4611e970d00d25b041aff2f5ceee1717f48c0fecd19e5c08c
6
+ metadata.gz: e44e30edc44430b4f7505b03d09058162d0e1d98bc580a959620a0c5eb6e1c0d3b68937aa22b4fee294ee3440e28867d3c241c2e34c30079fb726bf20222b6b8
7
+ data.tar.gz: 8e7189827df613fccbe0c433ed873922af5bf5d014402a6614cfe13d5718226357325b42d1d32cfbedc7a04319e9b0815257f25172765ef031269b3e3055a204
@@ -11,54 +11,65 @@ class Handler
11
11
 
12
12
  def self.load_data(params)
13
13
  waited_keys = [:engine_name,:data]
14
- resp = invoke('/apps/load_data','POST',params)
15
- resp.code == 200 ? true : false
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,:user_id,:nb_of_similars]
20
- resp = invoke('/users/similar','POST',params)
21
- resp.code == 200 ? resp.body : false
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,:item_id,:nb_of_similars]
26
- resp = invoke('/items/similar','POST',params)
27
- resp.code == 200 ? resp.body : false
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,:user_id,:nb_of_recommendations]
32
- resp = invoke('/users/recommend','POST',params)
33
- resp.code == 200 ? resp.body : false
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
- #validate each method's parameter
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
- #invoke the api and analyze the response's code
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)
@@ -1,3 +1,3 @@
1
1
  module ClientApi
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
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 nil }
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 nil }
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 nil }
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
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 00:00:00.000000000 Z
11
+ date: 2014-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler