bcx 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +32 -7
  3. data/docs/docco.css +10 -4
  4. data/docs/{bcx.html → lib/bcx.html} +37 -22
  5. data/docs/{http.html → lib/bcx/client/http.html} +32 -22
  6. data/docs/{oauth.html → lib/bcx/client/oauth.html} +33 -23
  7. data/docs/{configuration.html → lib/bcx/configuration.html} +7 -7
  8. data/docs/lib/bcx/launchpad/oauth.html +137 -0
  9. data/docs/{access.html → lib/bcx/resources/access.html} +31 -21
  10. data/docs/lib/bcx/resources/authorization.html +140 -0
  11. data/docs/{person.html → lib/bcx/resources/person.html} +31 -21
  12. data/docs/{project.html → lib/bcx/resources/project.html} +32 -22
  13. data/docs/{todo.html → lib/bcx/resources/todo.html} +33 -23
  14. data/docs/{todolist.html → lib/bcx/resources/todolist.html} +34 -24
  15. data/docs/{response_error.html → lib/bcx/response_error.html} +14 -14
  16. data/docs/{version.html → lib/bcx/version.html} +5 -5
  17. data/docs/public/fonts/aller-bold.eot +0 -0
  18. data/docs/public/fonts/aller-bold.ttf +0 -0
  19. data/docs/public/fonts/aller-bold.woff +0 -0
  20. data/docs/public/fonts/aller-light.eot +0 -0
  21. data/docs/public/fonts/aller-light.ttf +0 -0
  22. data/docs/public/fonts/aller-light.woff +0 -0
  23. data/docs/public/fonts/novecento-bold.eot +0 -0
  24. data/docs/public/fonts/novecento-bold.ttf +0 -0
  25. data/docs/public/fonts/novecento-bold.woff +0 -0
  26. data/lib/bcx.rb +5 -0
  27. data/lib/bcx/client/oauth.rb +1 -1
  28. data/lib/bcx/launchpad/oauth.rb +22 -0
  29. data/lib/bcx/resources/authorization.rb +16 -0
  30. data/lib/bcx/version.rb +1 -1
  31. data/spec/bcx/authorization_spec.rb +13 -0
  32. data/spec/bcx/launchpad_spec.rb +16 -0
  33. data/spec/cassettes/Bcx_Resources_Authorization/GET_/authorization/first_account_should_have_the_correct_id.yml +52 -0
  34. metadata +34 -25
  35. data/docs/collection.html +0 -103
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/lib/bcx.rb CHANGED
@@ -15,6 +15,7 @@ module Bcx
15
15
  autoload :Project, 'bcx/resources/project'
16
16
  autoload :Person, 'bcx/resources/person'
17
17
  autoload :Access, 'bcx/resources/access'
18
+ autoload :Authorization, 'bcx/resources/authorization'
18
19
  end
19
20
 
20
21
  module Client
@@ -22,6 +23,10 @@ module Bcx
22
23
  autoload :OAuth, 'bcx/client/oauth'
23
24
  end
24
25
 
26
+ module Launchpad
27
+ autoload :OAuth, 'bcx/launchpad/oauth'
28
+ end
29
+
25
30
  class << self
26
31
  attr_accessor :configuration
27
32
  end
@@ -21,7 +21,7 @@ module Bcx
21
21
  resource :people, class_name: 'Bcx::Resources::Person'
22
22
 
23
23
  def initialize(options = {})
24
- @account = Bcx.configuration.account
24
+ @account = options[:account] || Bcx.configuration.account
25
25
  @api_version = Bcx.configuration.api_version
26
26
 
27
27
  options[:site] = "https://basecamp.com/#{@account}/api/#{@api_version}"
@@ -0,0 +1,22 @@
1
+ module Bcx
2
+ module Launchpad
3
+ class OAuth < Rapidash::Client
4
+ method :oauth
5
+
6
+ extension :json
7
+ encode_request_with :json
8
+
9
+ raise_errors
10
+
11
+ resource :authorization, class_name: "Bcx::Resources::Authorization"
12
+
13
+ def initialize(options = {})
14
+ options[:site] ||= "https://launchpad.37signals.com"
15
+ options[:uid] ||= options[:client_id]
16
+ options[:secret] ||= options[:client_secret]
17
+
18
+ super(options)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,16 @@
1
+ module Bcx
2
+ module Resources
3
+
4
+ # Bcx::Resources::Authorization
5
+ # Provides access to the authorization resource
6
+ #
7
+ # Fetch authorization
8
+ # GET /authorization.json
9
+ #
10
+ # launchpad.authorization!
11
+ #
12
+ class Authorization < Rapidash::Base
13
+ url :authorization
14
+ end
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module Bcx
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Bcx::Resources::Authorization, :vcr do
4
+ let(:launchpad) { Bcx::Launchpad::OAuth.new(client_id: '748cc9c949af86f2e3fb35564f7e209b1d2c27d2', client_secret: '7fba79ec3bf1eb9e278098031414e5a3a41ec842', access_token: 'BAhbByIBsHsiZXhwaXJlc19hdCI6IjIwMTMtMDktMTNUMTI6NDk6MzBaIiwidXNlcl9pZHMiOlsxNzE3NDMwNV0sImNsaWVudF9pZCI6Ijc0OGNjOWM5NDlhZjg2ZjJlM2ZiMzU1NjRmN2UyMDliMWQyYzI3ZDIiLCJ2ZXJzaW9uIjoxLCJhcGlfZGVhZGJvbHQiOiJmZmE1OTgzMzQ3YTY2MWExM2Y1YWE3YTM0ODVhYzk4YiJ9dToJVGltZQ2sYRzA05PlxQ==--e995b8e9cb3cc37b7f4f90d967bb23d889145384') }
5
+
6
+ describe "GET /authorization" do
7
+ let(:authorization) { launchpad.authorization! }
8
+
9
+ it "first account should have the correct id" do
10
+ expect(authorization.accounts.first.id).to eq 2274488
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Bcx::Launchpad do
4
+ context "oauth" do
5
+ let(:launchpad) { Bcx::Launchpad::OAuth.new(client_id: '748cc9c949af86f2e3fb35564f7e209b1d2c27d2', client_secret: '7fba79ec3bf1eb9e278098031414e5a3a41ec842', access_token: 'BAhbByIBsHsiZXhwaXJlc19hdCI6IjIwMTMtMDktMTNUMTI6NDk6MzBaIiwidXNlcl9pZHMiOlsxNzE3NDMwNV0sImNsaWVudF9pZCI6Ijc0OGNjOWM5NDlhZjg2ZjJlM2ZiMzU1NjRmN2UyMDliMWQyYzI3ZDIiLCJ2ZXJzaW9uIjoxLCJhcGlfZGVhZGJvbHQiOiJmZmE1OTgzMzQ3YTY2MWExM2Y1YWE3YTM0ODVhYzk4YiJ9dToJVGltZQ2sYRzA05PlxQ==--e995b8e9cb3cc37b7f4f90d967bb23d889145384') }
6
+
7
+ it "should assign credentials" do
8
+ expect(launchpad.uid).to eq '748cc9c949af86f2e3fb35564f7e209b1d2c27d2'
9
+ expect(launchpad.secret).to eq '7fba79ec3bf1eb9e278098031414e5a3a41ec842'
10
+ end
11
+
12
+ it "should provide an access token" do
13
+ expect(launchpad.access_token).not_to be_nil
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,52 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://launchpad.37signals.com/authorization.json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.8.8
12
+ content-type:
13
+ - application/json
14
+ Authorization:
15
+ - Bearer BAhbByIBsHsiZXhwaXJlc19hdCI6IjIwMTMtMDktMTNUMTI6NDk6MzBaIiwidXNlcl9pZHMiOlsxNzE3NDMwNV0sImNsaWVudF9pZCI6Ijc0OGNjOWM5NDlhZjg2ZjJlM2ZiMzU1NjRmN2UyMDliMWQyYzI3ZDIiLCJ2ZXJzaW9uIjoxLCJhcGlfZGVhZGJvbHQiOiJmZmE1OTgzMzQ3YTY2MWExM2Y1YWE3YTM0ODVhYzk4YiJ9dToJVGltZQ2sYRzA05PlxQ==--e995b8e9cb3cc37b7f4f90d967bb23d889145384
16
+ response:
17
+ status:
18
+ code: 200
19
+ message:
20
+ headers:
21
+ server:
22
+ - nginx
23
+ date:
24
+ - Fri, 30 Aug 2013 12:54:58 GMT
25
+ content-type:
26
+ - application/json; charset=utf-8
27
+ transfer-encoding:
28
+ - chunked
29
+ connection:
30
+ - close
31
+ status:
32
+ - 200 OK
33
+ etag:
34
+ - ! '"08fb7932a74cfd43967d40c6b26b68d4"'
35
+ x-frame-options:
36
+ - SAMEORIGIN
37
+ x-ua-compatible:
38
+ - IE=Edge,chrome=1
39
+ x-runtime:
40
+ - '0.007646'
41
+ x-request-id:
42
+ - 4553850ce04a7ecfe50aeb802b895220
43
+ cache-control:
44
+ - max-age=0, private, must-revalidate
45
+ strict-transport-security:
46
+ - max-age=31536000
47
+ body:
48
+ encoding: US-ASCII
49
+ string: ! '{"accounts":[{"name":"Paul Springett''s Basecamp","href":"https://basecamp.com/2274488/api/v1","id":2274488,"product":"bcx"}],"identity":{"id":6967737,"last_name":"Springett","email_address":"paul@springett.me","first_name":"Paul"},"expires_at":"2013-09-13T12:49:30Z"}'
50
+ http_version:
51
+ recorded_at: Fri, 30 Aug 2013 12:55:00 GMT
52
+ recorded_with: VCR 2.5.0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Springett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-25 00:00:00.000000000 Z
11
+ date: 2013-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rapidash
@@ -28,56 +28,56 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: simplecov
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: vcr
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ! '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ! '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: Fully-fledged Ruby API wrapper for Basecamp Next
@@ -95,15 +95,20 @@ files:
95
95
  - README.md
96
96
  - Rakefile
97
97
  - bcx.gemspec
98
- - docs/access.html
99
- - docs/bcx.html
100
- - docs/collection.html
101
- - docs/configuration.html
102
98
  - docs/docco.css
103
- - docs/http.html
104
- - docs/oauth.html
105
- - docs/person.html
106
- - docs/project.html
99
+ - docs/lib/bcx.html
100
+ - docs/lib/bcx/client/http.html
101
+ - docs/lib/bcx/client/oauth.html
102
+ - docs/lib/bcx/configuration.html
103
+ - docs/lib/bcx/launchpad/oauth.html
104
+ - docs/lib/bcx/resources/access.html
105
+ - docs/lib/bcx/resources/authorization.html
106
+ - docs/lib/bcx/resources/person.html
107
+ - docs/lib/bcx/resources/project.html
108
+ - docs/lib/bcx/resources/todo.html
109
+ - docs/lib/bcx/resources/todolist.html
110
+ - docs/lib/bcx/response_error.html
111
+ - docs/lib/bcx/version.html
107
112
  - docs/public/fonts/aller-bold.eot
108
113
  - docs/public/fonts/aller-bold.ttf
109
114
  - docs/public/fonts/aller-bold.woff
@@ -114,15 +119,13 @@ files:
114
119
  - docs/public/fonts/novecento-bold.ttf
115
120
  - docs/public/fonts/novecento-bold.woff
116
121
  - docs/public/stylesheets/normalize.css
117
- - docs/response_error.html
118
- - docs/todo.html
119
- - docs/todolist.html
120
- - docs/version.html
121
122
  - lib/bcx.rb
122
123
  - lib/bcx/client/http.rb
123
124
  - lib/bcx/client/oauth.rb
124
125
  - lib/bcx/configuration.rb
126
+ - lib/bcx/launchpad/oauth.rb
125
127
  - lib/bcx/resources/access.rb
128
+ - lib/bcx/resources/authorization.rb
126
129
  - lib/bcx/resources/person.rb
127
130
  - lib/bcx/resources/project.rb
128
131
  - lib/bcx/resources/todo.rb
@@ -131,7 +134,9 @@ files:
131
134
  - lib/bcx/version.rb
132
135
  - lib/tasks/docs.rake
133
136
  - spec/bcx/access_spec.rb
137
+ - spec/bcx/authorization_spec.rb
134
138
  - spec/bcx/client_spec.rb
139
+ - spec/bcx/launchpad_spec.rb
135
140
  - spec/bcx/person_spec.rb
136
141
  - spec/bcx/project_spec.rb
137
142
  - spec/bcx/todo_spec.rb
@@ -141,6 +146,7 @@ files:
141
146
  - spec/cassettes/Bcx_Resources_Access/GET_/projects/2951531/accesses_json/first_access_should_have_the_correct_id.yml
142
147
  - spec/cassettes/Bcx_Resources_Access/GET_/projects/2951531/accesses_json/should_be_an_array.yml
143
148
  - spec/cassettes/Bcx_Resources_Access/POST_/projects/2951531/accesses_json/should_grant_access.yml
149
+ - spec/cassettes/Bcx_Resources_Authorization/GET_/authorization/first_account_should_have_the_correct_id.yml
144
150
  - spec/cassettes/Bcx_Resources_Person/DELETE_/people/4904728_json/should_delete_a_todolist.yml
145
151
  - spec/cassettes/Bcx_Resources_Person/GET_/people/4666033_json/should_have_the_correct_id.yml
146
152
  - spec/cassettes/Bcx_Resources_Person/GET_/people/4666033_json/should_return_a_hash.yml
@@ -191,24 +197,26 @@ require_paths:
191
197
  - lib
192
198
  required_ruby_version: !ruby/object:Gem::Requirement
193
199
  requirements:
194
- - - '>='
200
+ - - ! '>='
195
201
  - !ruby/object:Gem::Version
196
202
  version: '0'
197
203
  required_rubygems_version: !ruby/object:Gem::Requirement
198
204
  requirements:
199
- - - '>='
205
+ - - ! '>='
200
206
  - !ruby/object:Gem::Version
201
207
  version: '0'
202
208
  requirements: []
203
209
  rubyforge_project:
204
- rubygems_version: 2.0.2
210
+ rubygems_version: 2.0.5
205
211
  signing_key:
206
212
  specification_version: 4
207
213
  summary: Fully-fledged Ruby API wrapper for Basecamp Next. Uses the Rapidash gem under
208
214
  the hood.
209
215
  test_files:
210
216
  - spec/bcx/access_spec.rb
217
+ - spec/bcx/authorization_spec.rb
211
218
  - spec/bcx/client_spec.rb
219
+ - spec/bcx/launchpad_spec.rb
212
220
  - spec/bcx/person_spec.rb
213
221
  - spec/bcx/project_spec.rb
214
222
  - spec/bcx/todo_spec.rb
@@ -218,6 +226,7 @@ test_files:
218
226
  - spec/cassettes/Bcx_Resources_Access/GET_/projects/2951531/accesses_json/first_access_should_have_the_correct_id.yml
219
227
  - spec/cassettes/Bcx_Resources_Access/GET_/projects/2951531/accesses_json/should_be_an_array.yml
220
228
  - spec/cassettes/Bcx_Resources_Access/POST_/projects/2951531/accesses_json/should_grant_access.yml
229
+ - spec/cassettes/Bcx_Resources_Authorization/GET_/authorization/first_account_should_have_the_correct_id.yml
221
230
  - spec/cassettes/Bcx_Resources_Person/DELETE_/people/4904728_json/should_delete_a_todolist.yml
222
231
  - spec/cassettes/Bcx_Resources_Person/GET_/people/4666033_json/should_have_the_correct_id.yml
223
232
  - spec/cassettes/Bcx_Resources_Person/GET_/people/4666033_json/should_return_a_hash.yml
@@ -1,103 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <title>collection.rb</title>
6
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
7
- <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
8
- <link rel="stylesheet" media="all" href="docco.css" />
9
- </head>
10
- <body>
11
- <div id="container">
12
- <div id="background"></div>
13
-
14
- <ul id="jump_to">
15
- <li>
16
- <a class="large" href="javascript:void(0);">Jump To &hellip;</a>
17
- <a class="small" href="javascript:void(0);">+</a>
18
- <div id="jump_wrapper">
19
- <div id="jump_page">
20
-
21
-
22
- <a class="source" href="configuration.html">
23
- configuration.rb
24
- </a>
25
-
26
-
27
- <a class="source" href="response_error.html">
28
- response_error.rb
29
- </a>
30
-
31
-
32
- <a class="source" href="version.html">
33
- version.rb
34
- </a>
35
-
36
-
37
- <a class="source" href="collection.html">
38
- collection.rb
39
- </a>
40
-
41
- </div>
42
- </li>
43
- </ul>
44
-
45
- <ul class="sections">
46
-
47
- <li id="title">
48
- <div class="annotation">
49
- <h1>collection.rb</h1>
50
- </div>
51
- </li>
52
-
53
-
54
-
55
- <li id="section-1">
56
- <div class="annotation">
57
-
58
- <div class="pilwrap ">
59
- <a class="pilcrow" href="#section-1">&#182;</a>
60
- </div>
61
-
62
- </div>
63
-
64
- <div class="content"><div class='highlight'><pre><span class="class"><span class="keyword">module</span> <span class="title">Rapidash</span></span>
65
- <span class="class"><span class="keyword">module</span> <span class="title">Collection</span></span>
66
-
67
- <span class="function"><span class="keyword">def</span> <span class="title"><span class="keyword">self</span></span>.<span class="title">included</span><span class="params">(base)</span></span>
68
- base.extend <span class="constant">ClassMethods</span>
69
- <span class="keyword">end</span>
70
-
71
- <span class="class"><span class="keyword">module</span> <span class="title">ClassMethods</span></span>
72
- <span class="function"><span class="keyword">def</span> <span class="title">collection</span><span class="params">(name, attrs = {})</span></span>
73
- path = attrs[<span class="symbol">:path</span>] || name.to_s
74
- path.gsub!(<span class="regexp">/^\//</span>, <span class="string">''</span>)
75
-
76
- method = attrs[<span class="symbol">:method</span>] || <span class="symbol">:get</span>
77
-
78
- define_method(<span class="string">"<span class="subst">#{name}</span>!"</span>) <span class="keyword">do</span>
79
- original_url = <span class="variable">@url</span>
80
-
81
- <span class="variable">@url</span> += <span class="string">"/<span class="subst">#{path}</span>"</span>
82
- <span class="variable">@options</span>[<span class="symbol">:method</span>] = method
83
- result = call!
84
-
85
- <span class="variable">@url</span> = original_url
86
-
87
- result
88
- <span class="keyword">end</span>
89
- <span class="keyword">end</span>
90
- <span class="keyword">end</span>
91
- <span class="keyword">end</span>
92
- <span class="keyword">end</span>
93
-
94
- <span class="class"><span class="keyword">class</span> <span class="title">Rapidash::Base</span></span>
95
- <span class="keyword">include</span> <span class="constant">Rapidash::Collection</span>
96
- <span class="keyword">end</span></pre></div></div>
97
-
98
- </li>
99
-
100
- </ul>
101
- </div>
102
- </body>
103
- </html>