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 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