cobot_client 0.4.0 → 0.5.0
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.
- data/README.md +6 -0
- data/cobot_client.gemspec +2 -0
- data/lib/cobot_client.rb +2 -1
- data/lib/cobot_client/api_client.rb +55 -0
- data/lib/cobot_client/version.rb +1 -1
- data/spec/cobot_client/api_client_spec.rb +68 -0
- metadata +37 -2
data/README.md
CHANGED
@@ -62,6 +62,12 @@ There is a module `CobotClient::UrlHelper`. After you include it you can call `c
|
|
62
62
|
cobot_url('co-up', '/api/user') # => 'https://co-up.cobot.me/api/user'
|
63
63
|
cobot_url('co-up', '/api/user', params: {x: 'y'}) # => 'https://co-up.cobot.me/api/user?x=y'
|
64
64
|
|
65
|
+
### Calling the API
|
66
|
+
|
67
|
+
CobotClient::ApiClient.new('<access token>').list_resources('<subdomain>')
|
68
|
+
|
69
|
+
For more details see the specs.
|
70
|
+
|
65
71
|
## Contributing
|
66
72
|
|
67
73
|
1. Fork it
|
data/cobot_client.gemspec
CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.add_dependency 'activesupport'
|
19
19
|
gem.add_dependency 'virtus'
|
20
20
|
gem.add_dependency 'oauth2'
|
21
|
+
gem.add_dependency 'rest-client'
|
22
|
+
gem.add_dependency 'json'
|
21
23
|
gem.add_development_dependency 'rspec'
|
22
24
|
gem.add_development_dependency 'rake'
|
23
25
|
end
|
data/lib/cobot_client.rb
CHANGED
@@ -2,8 +2,9 @@ require "cobot_client/version"
|
|
2
2
|
require 'cobot_client/engine' if defined?(Rails)
|
3
3
|
|
4
4
|
module CobotClient
|
5
|
-
autoload :
|
5
|
+
autoload :ApiClient, 'cobot_client/api_client'
|
6
6
|
autoload :NavigationLink, 'cobot_client/navigation_link'
|
7
7
|
autoload :NavigationLinkService, 'cobot_client/navigation_link_service'
|
8
|
+
autoload :UrlHelper, 'cobot_client/url_helper'
|
8
9
|
autoload :XdmHelper, 'cobot_client/xdm_helper'
|
9
10
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module CobotClient
|
5
|
+
class ApiClient
|
6
|
+
include UrlHelper
|
7
|
+
|
8
|
+
def initialize(access_token)
|
9
|
+
@access_token = access_token
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_resources(subdomain)
|
13
|
+
get subdomain, '/resources'
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_booking(subdomain, resource_id, attributes)
|
17
|
+
post subdomain, "/resources/#{resource_id}/bookings", attributes
|
18
|
+
end
|
19
|
+
|
20
|
+
def update_booking(subdomain, id, attributes)
|
21
|
+
put subdomain, "/bookings/#{id}", attributes
|
22
|
+
end
|
23
|
+
|
24
|
+
def delete_booking(subdomain, id)
|
25
|
+
delete subdomain, "/bookings/#{id}"
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def put(subdomain, path, params)
|
31
|
+
JSON.parse RestClient.put(cobot_url(subdomain, "/api#{path}"), params, auth_headers).body,
|
32
|
+
symbolize_names: true
|
33
|
+
end
|
34
|
+
|
35
|
+
def delete(subdomain, path)
|
36
|
+
RestClient.delete(cobot_url(subdomain, "/api#{path}"), auth_headers)
|
37
|
+
end
|
38
|
+
|
39
|
+
def post(subdomain, path, params)
|
40
|
+
JSON.parse RestClient.post(cobot_url(subdomain, "/api#{path}"), params, auth_headers).body,
|
41
|
+
symbolize_names: true
|
42
|
+
end
|
43
|
+
|
44
|
+
def get(subdomain, path)
|
45
|
+
JSON.parse(
|
46
|
+
RestClient.get(cobot_url(subdomain, "/api#{path}"), auth_headers).body,
|
47
|
+
symbolize_names: true
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
def auth_headers
|
52
|
+
{'Authorization' => "Bearer #{@access_token}"}
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/cobot_client/version.rb
CHANGED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CobotClient::ApiClient do
|
4
|
+
let(:api_client) { CobotClient::ApiClient.new('token-123') }
|
5
|
+
let(:default_response) { stub(:default_response, body: '{}') }
|
6
|
+
|
7
|
+
context 'listing resources' do
|
8
|
+
it 'calls rest client' do
|
9
|
+
RestClient.should_receive(:get).with('https://co-up.cobot.me/api/resources',
|
10
|
+
'Authorization' => 'Bearer token-123') { default_response }
|
11
|
+
|
12
|
+
api_client.get_resources 'co-up'
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'returns the json' do
|
16
|
+
RestClient.stub(:get) { stub(:response, body: [{id: 'resource-1'}].to_json) }
|
17
|
+
|
18
|
+
resources = api_client.get_resources 'co-up'
|
19
|
+
|
20
|
+
expect(resources).to eql([{id: 'resource-1'}])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'creating a booking' do
|
25
|
+
it 'calls rest client' do
|
26
|
+
RestClient.should_receive(:post).with('https://co-up.cobot.me/api/resources/res-1/bookings',
|
27
|
+
{title: 'meeting'},
|
28
|
+
'Authorization' => 'Bearer token-123') { default_response }
|
29
|
+
|
30
|
+
api_client.create_booking 'co-up', 'res-1', title: 'meeting'
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'returns the json' do
|
34
|
+
RestClient.stub(:post) { stub(:response, body: {title: 'meeting'}.to_json) }
|
35
|
+
|
36
|
+
booking = api_client.create_booking 'co-up', 'res-1', title: 'meeting'
|
37
|
+
|
38
|
+
expect(booking).to eql({title: 'meeting'})
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'updating a booking' do
|
43
|
+
it 'calls rest client' do
|
44
|
+
RestClient.should_receive(:put).with('https://co-up.cobot.me/api/bookings/booking-1',
|
45
|
+
{title: 'meeting'},
|
46
|
+
'Authorization' => 'Bearer token-123') { default_response }
|
47
|
+
|
48
|
+
api_client.update_booking 'co-up', 'booking-1', title: 'meeting'
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'returns the json' do
|
52
|
+
RestClient.stub(:put) { stub(:response, body: {title: 'meeting'}.to_json) }
|
53
|
+
|
54
|
+
booking = api_client.update_booking 'co-up', 'booking-1', title: 'meeting'
|
55
|
+
|
56
|
+
expect(booking).to eql({title: 'meeting'})
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'deleting a booking' do
|
61
|
+
it 'calls rest client' do
|
62
|
+
RestClient.should_receive(:delete).with('https://co-up.cobot.me/api/bookings/booking-1',
|
63
|
+
'Authorization' => 'Bearer token-123') { default_response }
|
64
|
+
|
65
|
+
api_client.delete_booking 'co-up', 'booking-1'
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cobot_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -59,6 +59,38 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rest-client
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: json
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
62
94
|
- !ruby/object:Gem::Dependency
|
63
95
|
name: rspec
|
64
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,11 +140,13 @@ files:
|
|
108
140
|
- app/views/cobot_client/_resize_script.html.erb
|
109
141
|
- cobot_client.gemspec
|
110
142
|
- lib/cobot_client.rb
|
143
|
+
- lib/cobot_client/api_client.rb
|
111
144
|
- lib/cobot_client/engine.rb
|
112
145
|
- lib/cobot_client/navigation_link.rb
|
113
146
|
- lib/cobot_client/navigation_link_service.rb
|
114
147
|
- lib/cobot_client/url_helper.rb
|
115
148
|
- lib/cobot_client/version.rb
|
149
|
+
- spec/cobot_client/api_client_spec.rb
|
116
150
|
- spec/cobot_client/navigation_link_service_spec.rb
|
117
151
|
- spec/cobot_client/url_helper_spec.rb
|
118
152
|
- spec/spec_helper.rb
|
@@ -141,6 +175,7 @@ signing_key:
|
|
141
175
|
specification_version: 3
|
142
176
|
summary: Client for the Cobot API plus helpers
|
143
177
|
test_files:
|
178
|
+
- spec/cobot_client/api_client_spec.rb
|
144
179
|
- spec/cobot_client/navigation_link_service_spec.rb
|
145
180
|
- spec/cobot_client/url_helper_spec.rb
|
146
181
|
- spec/spec_helper.rb
|