basecamper 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use --create 1.9.3@basecamper
data/README.md CHANGED
@@ -35,6 +35,15 @@ Basecamper also enables one to authenticate with one's username and password:
35
35
  end
36
36
  ```
37
37
 
38
+ Authentication using OAuth is also supported:
39
+
40
+ ```ruby
41
+ Basecamper.configure do |config|
42
+ config.use_oauth = true
43
+ config.token = 'abc123'
44
+ end
45
+ ```
46
+
38
47
  Use SSL?
39
48
 
40
49
  ```ruby
@@ -87,3 +96,7 @@ Parent associations:
87
96
  message = Basecamper::Message.find(123)
88
97
  message.project
89
98
  ```
99
+
100
+ Credits
101
+ -------
102
+ * Carlos Ramirez III ([carlosramireziii](https://github.com/carlosramireziii))
data/basecamper.gemspec CHANGED
@@ -18,7 +18,6 @@ Gem::Specification.new do |s|
18
18
  }.each {|lib, version| s.add_runtime_dependency lib, version }
19
19
 
20
20
  {
21
- 'bundler' => '~> 1.0.0',
22
21
  'cucumber' => '~> 0.10.0',
23
22
  'rake' => '~> 0.8.7',
24
23
  'rspec' => '~> 2.5.0',
@@ -2,7 +2,7 @@ module Basecamper
2
2
  class Connection
3
3
  class << self
4
4
 
5
- attr_accessor :token, :use_ssl
5
+ attr_accessor :token, :use_ssl, :use_oauth
6
6
  attr_writer :user, :password, :domain
7
7
 
8
8
  def user
@@ -8,9 +8,8 @@ module Basecamper
8
8
  public
9
9
 
10
10
  def find(*args)
11
- self.site = Basecamper::Connection.domain
12
- self.user = Basecamper::Connection.user
13
- self.password = Basecamper::Connection.password
11
+ self.site = Basecamper::Connection.domain
12
+ self.set_authentication
14
13
 
15
14
  old_find(*args)
16
15
  end
@@ -58,6 +57,17 @@ module Basecamper
58
57
  '/'
59
58
  end
60
59
 
60
+ protected
61
+
62
+ def set_authentication
63
+ if Basecamper::Connection.use_oauth
64
+ self.headers['authorization'] = "Bearer '#{Basecamper::Connection.token}'"
65
+ else
66
+ self.user = Basecamper::Connection.user
67
+ self.password = Basecamper::Connection.password
68
+ end
69
+ end
70
+
61
71
  end
62
72
 
63
73
  end
@@ -1,3 +1,3 @@
1
1
  module Basecamper
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -39,6 +39,20 @@ module Basecamper
39
39
  end
40
40
  end
41
41
 
42
+ describe ".use_oauth=" do
43
+ it "sets @use_oauth to the passed value" do
44
+ subject.use_oauth = true
45
+ subject.instance_variable_get(:@use_oauth).should be_true
46
+ end
47
+ end
48
+
49
+ describe ".use_oauth" do
50
+ it "returns the value of @use_oauth" do
51
+ subject.instance_variable_set(:@use_oauth, true)
52
+ subject.use_oauth.should be_true
53
+ end
54
+ end
55
+
42
56
  describe ".user=" do
43
57
  it "sets @user to the passed value" do
44
58
  subject.user = user
@@ -63,6 +63,7 @@ module Basecamper
63
63
  Basecamper::Connection.stub(:domain).and_return(domain)
64
64
  Basecamper::Connection.stub(:user).and_return(user)
65
65
  Basecamper::Connection.stub(:password).and_return(password)
66
+ Basecamper::Connection.stub(:use_oauth).and_return(false)
66
67
 
67
68
  subject.stub(:old_find)
68
69
  end
@@ -72,16 +73,6 @@ module Basecamper
72
73
  subject.find
73
74
  end
74
75
 
75
- it "sets the user to Connection.user" do
76
- subject.should_receive(:user=).with(user)
77
- subject.find
78
- end
79
-
80
- it "sets the password to Connection.password" do
81
- subject.should_receive(:password=).with(password)
82
- subject.find
83
- end
84
-
85
76
  it "calls .old_find" do
86
77
  subject.should_receive(:old_find).with(:all, {})
87
78
  subject.find(:all, {})
@@ -114,5 +105,44 @@ module Basecamper
114
105
  subject.prefix_source.should == '/'
115
106
  end
116
107
  end
108
+
109
+ describe ".set_authorization" do
110
+ context "when using http basic" do
111
+
112
+ let(:user) { 'dummy' }
113
+ let(:password) { 'secret' }
114
+
115
+ before(:each) do
116
+ Basecamper::Connection.stub(:use_oauth).and_return(false)
117
+ Basecamper::Connection.stub(:user).and_return(user)
118
+ Basecamper::Connection.stub(:password).and_return(password)
119
+ end
120
+
121
+ it "sets the user to Connection.user" do
122
+ subject.should_receive(:user=).with(user)
123
+ subject.send(:set_authentication)
124
+ end
125
+
126
+ it "sets the password to Connection.password" do
127
+ subject.should_receive(:password=).with(password)
128
+ subject.send(:set_authentication)
129
+ end
130
+ end
131
+
132
+ context "when using oauth" do
133
+
134
+ let(:token) { '123456' }
135
+
136
+ before(:each) do
137
+ Basecamper::Connection.stub(:use_oauth).and_return(true)
138
+ Basecamper::Connection.stub(:token).and_return(token)
139
+ end
140
+
141
+ it "sets a custom header with the oauth credentials" do
142
+ subject.send(:set_authentication)
143
+ subject.headers['authorization'].should == "Bearer '#{token}'"
144
+ end
145
+ end
146
+ end
117
147
  end
118
148
  end
metadata CHANGED
@@ -1,114 +1,89 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: basecamper
3
- version: !ruby/object:Gem::Version
4
- hash: 27
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 2
10
- version: 0.0.2
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Ryan Closner
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-07-18 00:00:00 -04:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-07-01 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: activeresource
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 23
30
- segments:
31
- - 2
32
- - 3
33
- - 10
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
34
21
  version: 2.3.10
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: rake
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.3.10
30
+ - !ruby/object:Gem::Dependency
31
+ name: cucumber
32
+ requirement: !ruby/object:Gem::Requirement
41
33
  none: false
42
- requirements:
34
+ requirements:
43
35
  - - ~>
44
- - !ruby/object:Gem::Version
45
- hash: 49
46
- segments:
47
- - 0
48
- - 8
49
- - 7
50
- version: 0.8.7
36
+ - !ruby/object:Gem::Version
37
+ version: 0.10.0
51
38
  type: :development
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: rspec
55
39
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
57
41
  none: false
58
- requirements:
42
+ requirements:
59
43
  - - ~>
60
- - !ruby/object:Gem::Version
61
- hash: 27
62
- segments:
63
- - 2
64
- - 5
65
- - 0
66
- version: 2.5.0
44
+ - !ruby/object:Gem::Version
45
+ version: 0.10.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.8.7
67
54
  type: :development
68
- version_requirements: *id003
69
- - !ruby/object:Gem::Dependency
70
- name: bundler
71
55
  prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.8.7
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
73
65
  none: false
74
- requirements:
66
+ requirements:
75
67
  - - ~>
76
- - !ruby/object:Gem::Version
77
- hash: 23
78
- segments:
79
- - 1
80
- - 0
81
- - 0
82
- version: 1.0.0
68
+ - !ruby/object:Gem::Version
69
+ version: 2.5.0
83
70
  type: :development
84
- version_requirements: *id004
85
- - !ruby/object:Gem::Dependency
86
- name: cucumber
87
71
  prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
89
73
  none: false
90
- requirements:
74
+ requirements:
91
75
  - - ~>
92
- - !ruby/object:Gem::Version
93
- hash: 55
94
- segments:
95
- - 0
96
- - 10
97
- - 0
98
- version: 0.10.0
99
- type: :development
100
- version_requirements: *id005
76
+ - !ruby/object:Gem::Version
77
+ version: 2.5.0
101
78
  description: Basecamp API Wrapper
102
- email:
79
+ email:
103
80
  - ryan.closner@gmail.com
104
81
  executables: []
105
-
106
82
  extensions: []
107
-
108
83
  extra_rdoc_files: []
109
-
110
- files:
84
+ files:
111
85
  - .gitignore
86
+ - .rvmrc
112
87
  - Gemfile
113
88
  - README.md
114
89
  - Rakefile
@@ -145,55 +120,28 @@ files:
145
120
  - spec/basecamper_spec.rb
146
121
  - spec/fixtures/basecamp.yml.sample
147
122
  - spec/spec_helper.rb
148
- has_rdoc: true
149
123
  homepage: http://rubygems.org/gems/basecamper
150
124
  licenses: []
151
-
152
125
  post_install_message:
153
126
  rdoc_options: []
154
-
155
- require_paths:
127
+ require_paths:
156
128
  - lib
157
- required_ruby_version: !ruby/object:Gem::Requirement
129
+ required_ruby_version: !ruby/object:Gem::Requirement
158
130
  none: false
159
- requirements:
160
- - - ">="
161
- - !ruby/object:Gem::Version
162
- hash: 3
163
- segments:
164
- - 0
165
- version: "0"
166
- required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
136
  none: false
168
- requirements:
169
- - - ">="
170
- - !ruby/object:Gem::Version
171
- hash: 3
172
- segments:
173
- - 0
174
- version: "0"
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
175
141
  requirements: []
176
-
177
142
  rubyforge_project: basecamper
178
- rubygems_version: 1.6.2
143
+ rubygems_version: 1.8.21
179
144
  signing_key:
180
145
  specification_version: 3
181
146
  summary: Basecamp API Wrapper
182
- test_files:
183
- - features/support/env.rb
184
- - spec/basecamper/connection_spec.rb
185
- - spec/basecamper/resource_spec.rb
186
- - spec/basecamper/resources/attachment_spec.rb
187
- - spec/basecamper/resources/category_spec.rb
188
- - spec/basecamper/resources/comment_spec.rb
189
- - spec/basecamper/resources/company_spec.rb
190
- - spec/basecamper/resources/message_spec.rb
191
- - spec/basecamper/resources/milestone_spec.rb
192
- - spec/basecamper/resources/person_spec.rb
193
- - spec/basecamper/resources/project_spec.rb
194
- - spec/basecamper/resources/time_entry_spec.rb
195
- - spec/basecamper/resources/todo_item_spec.rb
196
- - spec/basecamper/resources/todo_list_spec.rb
197
- - spec/basecamper_spec.rb
198
- - spec/fixtures/basecamp.yml.sample
199
- - spec/spec_helper.rb
147
+ test_files: []