basecamper 0.0.2 → 0.0.3

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/.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: []