recommender_api 0.0.1 → 0.0.2
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/api.gemspec +4 -1
- data/lib/api/handler.rb +8 -6
- data/lib/api/version.rb +1 -1
- data/lib/api/web.rb +24 -3
- data/spec/handler_spec.rb +6 -12
- data/spec/spec_helper.rb +13 -0
- data/spec/test_sinatra.rb +2 -0
- data/spec/web_spec.rb +9 -5
- metadata +46 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e15f137c185238a94cff4b12d9e2b9d8c14af32
|
4
|
+
data.tar.gz: 5dead20d915c2492d0dbf8b35f73b98e665bf365
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1007962f79944aff9752e68f9f42bf1c517c9cfe8d447d0a8b68c4d5143c15aefc23103431790913f80d3c73f2ab7c42790cdc18cd5b7395f0fb9b425706418
|
7
|
+
data.tar.gz: 1f81396b4706cbfd08ce919c1b0533eae7a349bf6c163ecb4253a5ac5d3281de69773c6ce4425da6acf725e697bc18f0797f91d65a58d80dec134b44c4787f4d
|
data/api.gemspec
CHANGED
@@ -22,7 +22,8 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.required_ruby_version = ">= 2.0"
|
23
23
|
spec.add_development_dependency "bundler"
|
24
24
|
spec.add_development_dependency "rake"
|
25
|
-
spec.add_development_dependency "auth_manager"
|
25
|
+
spec.add_development_dependency "auth_manager"
|
26
|
+
spec.add_development_dependency "dbAccessor"
|
26
27
|
spec.add_development_dependency "redis"
|
27
28
|
spec.add_development_dependency "uuid"
|
28
29
|
spec.add_development_dependency "session_manager"
|
@@ -30,4 +31,6 @@ Gem::Specification.new do |spec|
|
|
30
31
|
spec.add_development_dependency "rack"
|
31
32
|
spec.add_development_dependency "rspec"
|
32
33
|
spec.add_development_dependency "rack-test"
|
34
|
+
spec.add_development_dependency "activerecord"
|
35
|
+
spec.add_development_dependency "pg"
|
33
36
|
end
|
data/lib/api/handler.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require 'auth_manager'
|
2
2
|
require 'session_manager'
|
3
|
+
require 'dbAccessor'
|
3
4
|
|
4
|
-
|
5
|
+
module Api
|
6
|
+
class Handler
|
5
7
|
|
6
|
-
def self.create_account(param
|
7
|
-
added =
|
8
|
-
|
9
|
-
|
10
|
-
(session_response[:code] == 200) && added
|
8
|
+
def self.create_account(param)
|
9
|
+
added = DbAccessor::Writer.write_object(param)
|
10
|
+
if added[:code] == 201
|
11
|
+
true
|
11
12
|
else
|
12
13
|
false
|
13
14
|
end
|
@@ -45,3 +46,4 @@ class Api::Handler
|
|
45
46
|
end
|
46
47
|
|
47
48
|
end
|
49
|
+
end
|
data/lib/api/version.rb
CHANGED
data/lib/api/web.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'sinatra'
|
2
2
|
require_relative 'handler'
|
3
3
|
|
4
|
-
|
4
|
+
module Api
|
5
|
+
class Web < Sinatra::Base
|
5
6
|
|
6
7
|
post '/apps' do
|
7
8
|
if create(params)
|
@@ -33,6 +34,7 @@ class Api::Web < Sinatra::Application
|
|
33
34
|
body ['Sorry, an error occured']
|
34
35
|
end
|
35
36
|
end
|
37
|
+
|
36
38
|
post '/apps/connect' do
|
37
39
|
if connect(params)
|
38
40
|
status 200
|
@@ -55,11 +57,30 @@ class Api::Web < Sinatra::Application
|
|
55
57
|
option
|
56
58
|
end
|
57
59
|
|
58
|
-
def
|
59
|
-
|
60
|
+
def format_object(params)
|
61
|
+
if params[:object][:model_name] == 'User'
|
62
|
+
login = params[:object][:content][:login]
|
63
|
+
password = params[:object][:content][:password]
|
64
|
+
firstname = params[:object][:content][:firstname]
|
65
|
+
lastname = params[:object][:content][:lastname]
|
66
|
+
email = params[:object][:content][:email]
|
67
|
+
gender = params[:object][:content][:gender]
|
68
|
+
object = {model_name: 'User',content: {login: login,password: password,firstname: firstname, lastname: lastname,email: email,gender: gender}}
|
69
|
+
else
|
70
|
+
name = params[:object][:content][:name]
|
71
|
+
api_key = params[:object][:content][:api_key]
|
72
|
+
url = params[:object][:content][:url]
|
73
|
+
user_id = params[:object][:content][:user_id]
|
74
|
+
object = {model_name: 'Application',content: {name: name,api_key: api_key,url: url,user_id: user_id}}
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def create(params)
|
79
|
+
Api::Handler.create_account(format_object(params))
|
60
80
|
end
|
61
81
|
|
62
82
|
def connect(params)
|
63
83
|
Api::Handler.connect(params[:object].to_json, format_option(params))
|
64
84
|
end
|
65
85
|
end
|
86
|
+
end
|
data/spec/handler_spec.rb
CHANGED
@@ -6,6 +6,9 @@ describe Api::Handler do
|
|
6
6
|
let(:opt) { {user: true, app: false} }
|
7
7
|
let(:token) { 'a token' }
|
8
8
|
let(:session_info) { {login: 'login', token: token} }
|
9
|
+
nb = rand(1000)
|
10
|
+
let(:a_user) {{model_name: 'User',content: {login: 'macoumba'+nb.to_s,password: 'passeraa',firstname: 'Ndeye Fatou', lastname: 'Dieng',email: 'macoumba'+nb.to_s+'@gmail.com',gender: 'M'}} }
|
11
|
+
|
9
12
|
describe '#connect' do
|
10
13
|
before(:each) do
|
11
14
|
AuthManager::Base.redis_del({list: 'users'})
|
@@ -42,23 +45,14 @@ describe Api::Handler do
|
|
42
45
|
end
|
43
46
|
end
|
44
47
|
describe '#create_account' do
|
45
|
-
before(:each) do
|
46
|
-
AuthManager::Base.redis_del({list: 'users'})
|
47
|
-
AuthManager::Base.redis_del({list: 'applications'})
|
48
|
-
end
|
49
48
|
context 'When user account created' do
|
50
|
-
it {
|
51
|
-
|
52
|
-
user[:login] = 'login'
|
53
|
-
expect(Api::Handler.create_account(user.to_json, opt)).to be_true
|
49
|
+
it {
|
50
|
+
expect(Api::Handler.create_account(a_user)).to be_true
|
54
51
|
}
|
55
52
|
end
|
56
53
|
context 'When user account not created' do
|
57
54
|
it {
|
58
|
-
|
59
|
-
swap_option_to('user')
|
60
|
-
expect(Api::Handler.create_account(user.to_json, opt)).to be_true
|
61
|
-
expect(Api::Handler.create_account(user.to_json, opt)).to be_false
|
55
|
+
expect(Api::Handler.create_account(a_user)).to be_false
|
62
56
|
}
|
63
57
|
end
|
64
58
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
require 'api'
|
2
|
+
require 'uuid'
|
3
|
+
|
4
|
+
|
2
5
|
|
3
6
|
def swap_option_to(list)
|
4
7
|
if list == 'user'
|
@@ -18,6 +21,16 @@ def parameter_for(object_type)
|
|
18
21
|
end
|
19
22
|
end
|
20
23
|
|
24
|
+
def create_object_for(object_type)
|
25
|
+
nb = rand(1000)
|
26
|
+
api_key = UUID.generate
|
27
|
+
if object_type == 'app'
|
28
|
+
{object: {model_name: 'Application',content: {name: 'Axolot'+nb.to_s,api_key: api_key,url: 'http://www.wikimina'+nb.to_s+'.net',user_id: 3 }}}
|
29
|
+
else
|
30
|
+
{object: {model_name: 'User',content: {login: 'nana'+nb.to_s,password: 'passeraa',firstname: 'Ndeye Fatou', lastname: 'Dieng',email: 'nana'+nb.to_s+'@gmail.com',gender: 'M'}} }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
21
34
|
def bad_parameter_for(object_type)
|
22
35
|
if object_type == 'user'
|
23
36
|
{object: {login: 'not a login',password: 'not a password'}, option: {user: true,app: false} }
|
data/spec/web_spec.rb
CHANGED
@@ -15,32 +15,35 @@ describe Api::Web do
|
|
15
15
|
AuthManager::Base.redis_del({ list: 'users' })
|
16
16
|
AuthManager::Base.redis_del({ list: 'users_sessions' })
|
17
17
|
AuthManager::Base.redis_del({ list: 'applications_sessions' } )
|
18
|
+
AuthManager::Base.redis_sadd({list: 'users',object: {login: 'a login',password: 'a password'}})
|
19
|
+
AuthManager::Base.redis_sadd({list: 'applications',object: {api_key: 'an api_key'}})
|
18
20
|
end
|
19
21
|
|
20
22
|
context "POST '/apps'" do
|
23
|
+
app = create_object_for('app')
|
21
24
|
it "returns 200 when an object is created" do
|
22
|
-
post '/apps',
|
25
|
+
post '/apps', app
|
23
26
|
expect(last_response.status).to eq(200)
|
24
27
|
end
|
25
28
|
|
26
29
|
|
27
30
|
it "returns 400 when the creation fails" do
|
28
|
-
post '/apps',
|
31
|
+
post '/apps', app
|
29
32
|
expect(last_response.status).to eq(400)
|
30
33
|
end
|
31
34
|
|
32
35
|
end
|
33
36
|
|
34
37
|
context "POST '/users'" do
|
35
|
-
|
38
|
+
user = create_object_for('user')
|
36
39
|
it "returns 200 when a object is created" do
|
37
|
-
post '/users',
|
40
|
+
post '/users', user
|
38
41
|
expect(last_response.status).to eq(200)
|
39
42
|
end
|
40
43
|
|
41
44
|
|
42
45
|
it "returns 400 when the creation fails" do
|
43
|
-
post '/users',
|
46
|
+
post '/users', user
|
44
47
|
expect(last_response.status).to eq(400)
|
45
48
|
end
|
46
49
|
end
|
@@ -61,6 +64,7 @@ describe Api::Web do
|
|
61
64
|
post '/apps/connect', parameter_for('app')
|
62
65
|
expect(last_response.status).to eq(200)
|
63
66
|
end
|
67
|
+
|
64
68
|
it 'returns 400 code status for faillure' do
|
65
69
|
post '/apps/connect', bad_parameter_for('app')
|
66
70
|
expect(last_response.status).to eq(400)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recommender_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- binette && atacraft
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: dbAccessor
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: redis
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +164,34 @@ dependencies:
|
|
150
164
|
- - ">="
|
151
165
|
- !ruby/object:Gem::Version
|
152
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: activerecord
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: pg
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
153
195
|
description: Entry point of the as a service plateform
|
154
196
|
email:
|
155
197
|
- atacraft@gmail.com, fabira90@gmail.com
|
@@ -171,6 +213,7 @@ files:
|
|
171
213
|
- lib/api/web.rb
|
172
214
|
- spec/handler_spec.rb
|
173
215
|
- spec/spec_helper.rb
|
216
|
+
- spec/test_sinatra.rb
|
174
217
|
- spec/web_spec.rb
|
175
218
|
homepage: ''
|
176
219
|
licenses:
|
@@ -199,4 +242,5 @@ summary: Api for the recommender plateform
|
|
199
242
|
test_files:
|
200
243
|
- spec/handler_spec.rb
|
201
244
|
- spec/spec_helper.rb
|
245
|
+
- spec/test_sinatra.rb
|
202
246
|
- spec/web_spec.rb
|