oa-basic 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -0,0 +1,3 @@
1
+ == 0.0.3
2
+
3
+ * First working release, Campfire and Basecamp support
data/README.rdoc CHANGED
@@ -0,0 +1,34 @@
1
+ = OmniAuth::Basic
2
+
3
+ OmniAuth stratgies for APIs that have HTTP Basic authentication (such as Campfire and Basecamp).
4
+
5
+ == Installation
6
+
7
+ To get just HTTP Basic functionality:
8
+
9
+ gem install oa-basic
10
+
11
+ For the full auth suite:
12
+
13
+ gem install omniauth
14
+
15
+ == Stand-Alone Example
16
+
17
+ Use the strategy as a middleware in your application:
18
+
19
+ require 'omniauth/basic'
20
+
21
+ use OmniAuth::Strategies::Campfire
22
+
23
+ Then simply direct users to '/auth/campfire' to prompt them for their Campfire credentials. You may also pre-set the credentials by POSTing to the URL with appropriate parameters (in the case of Campfire and Basecamp, the parameters are <tt>subdomain</tt>, <tt>user</tt>, and <tt>password</tt>).
24
+
25
+ == OmniAuth Builder
26
+
27
+ If you want to allow multiple providers, use the OmniAuth Builder:
28
+
29
+ require 'omniauth/basic'
30
+
31
+ use OmniAuth::Builder do
32
+ provider :campfire
33
+ provider :basecamp
34
+ end
@@ -1,5 +1,8 @@
1
1
  require 'omniauth/core'
2
- require 'omniauth/strategies/http_basic'
3
2
 
4
- require 'omniauth/strategies/campfire'
5
- require 'omniauth/strategies/basecamp'
3
+ module OmniAuth
4
+ module Strategies
5
+ autoload :HttpBasic, 'omniauth/strategies/http_basic'
6
+ # autoload :Gowalla, 'omniauth/strategies/gowalla'
7
+ end
8
+ end
@@ -2,6 +2,8 @@
2
2
  # so this won't actually work at all it
3
3
  # turns out.
4
4
 
5
+ # require 'omniauth/basic'
6
+ #
5
7
  # module OmniAuth
6
8
  # module Strategies
7
9
  # class Gowalla < OmniAuth::Strategies::HttpBasic #:nodoc:
@@ -14,4 +16,4 @@
14
16
  # end
15
17
  # end
16
18
  # end
17
- # end
19
+ # end
@@ -1,4 +1,5 @@
1
- require 'restclient'
1
+ require 'rest-client'
2
+ require 'omniauth/basic'
2
3
 
3
4
  module OmniAuth
4
5
  module Strategies
@@ -53,4 +54,3 @@ module OmniAuth
53
54
  end
54
55
  end
55
56
  end
56
-
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oa-basic
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 23
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 3
9
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
10
11
  platform: ruby
11
12
  authors:
12
13
  - Michael Bleigh
@@ -14,85 +15,167 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-01 00:00:00 -04:00
18
+ date: 2010-08-16 00:00:00 -05:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
- name: oa-core
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
24
  requirements:
25
25
  - - "="
26
26
  - !ruby/object:Gem::Version
27
+ hash: 23
27
28
  segments:
28
29
  - 0
29
30
  - 0
30
- - 3
31
- version: 0.0.3
31
+ - 4
32
+ version: 0.0.4
33
+ requirement: *id001
34
+ name: oa-core
35
+ prerelease: false
32
36
  type: :runtime
33
- version_requirements: *id001
34
37
  - !ruby/object:Gem::Dependency
35
- name: restclient
36
- prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
+ none: false
38
40
  requirements:
39
- - - ">="
41
+ - - ~>
40
42
  - !ruby/object:Gem::Version
43
+ hash: 15
41
44
  segments:
45
+ - 1
46
+ - 6
42
47
  - 0
43
- version: "0"
48
+ version: 1.6.0
49
+ requirement: *id002
50
+ name: rest-client
51
+ prerelease: false
44
52
  type: :runtime
45
- version_requirements: *id002
46
53
  - !ruby/object:Gem::Dependency
47
- name: rspec
54
+ version_requirements: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ hash: 27
60
+ segments:
61
+ - 0
62
+ - 0
63
+ - 2
64
+ version: 0.0.2
65
+ requirement: *id003
66
+ name: multi_json
48
67
  prerelease: false
49
- requirement: &id003 !ruby/object:Gem::Requirement
68
+ type: :runtime
69
+ - !ruby/object:Gem::Dependency
70
+ version_requirements: &id004 !ruby/object:Gem::Requirement
71
+ none: false
50
72
  requirements:
51
- - - ">="
73
+ - - ~>
52
74
  - !ruby/object:Gem::Version
75
+ hash: 3
53
76
  segments:
54
77
  - 1
78
+ - 4
55
79
  - 2
56
- - 9
57
- version: 1.2.9
58
- type: :development
59
- version_requirements: *id003
60
- - !ruby/object:Gem::Dependency
61
- name: webmock
80
+ version: 1.4.2
81
+ requirement: *id004
82
+ name: nokogiri
62
83
  prerelease: false
63
- requirement: &id004 !ruby/object:Gem::Requirement
84
+ type: :runtime
85
+ - !ruby/object:Gem::Dependency
86
+ version_requirements: &id005 !ruby/object:Gem::Requirement
87
+ none: false
64
88
  requirements:
65
89
  - - ">="
66
90
  - !ruby/object:Gem::Version
91
+ hash: 3
67
92
  segments:
68
93
  - 0
69
94
  version: "0"
95
+ requirement: *id005
96
+ name: rake
97
+ prerelease: false
70
98
  type: :development
71
- version_requirements: *id004
72
99
  - !ruby/object:Gem::Dependency
73
- name: rack-test
100
+ version_requirements: &id006 !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ~>
104
+ - !ruby/object:Gem::Version
105
+ hash: 15
106
+ segments:
107
+ - 0
108
+ - 0
109
+ - 8
110
+ version: 0.0.8
111
+ requirement: *id006
112
+ name: mg
74
113
  prerelease: false
75
- requirement: &id005 !ruby/object:Gem::Requirement
114
+ type: :development
115
+ - !ruby/object:Gem::Dependency
116
+ version_requirements: &id007 !ruby/object:Gem::Requirement
117
+ none: false
76
118
  requirements:
77
- - - ">="
119
+ - - ~>
78
120
  - !ruby/object:Gem::Version
121
+ hash: 27
79
122
  segments:
123
+ - 1
124
+ - 3
80
125
  - 0
81
- version: "0"
126
+ version: 1.3.0
127
+ requirement: *id007
128
+ name: rspec
129
+ prerelease: false
82
130
  type: :development
83
- version_requirements: *id005
84
131
  - !ruby/object:Gem::Dependency
85
- name: mg
132
+ version_requirements: &id008 !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ~>
136
+ - !ruby/object:Gem::Version
137
+ hash: 19
138
+ segments:
139
+ - 1
140
+ - 3
141
+ - 4
142
+ version: 1.3.4
143
+ requirement: *id008
144
+ name: webmock
86
145
  prerelease: false
87
- requirement: &id006 !ruby/object:Gem::Requirement
146
+ type: :development
147
+ - !ruby/object:Gem::Dependency
148
+ version_requirements: &id009 !ruby/object:Gem::Requirement
149
+ none: false
88
150
  requirements:
89
- - - ">="
151
+ - - ~>
90
152
  - !ruby/object:Gem::Version
153
+ hash: 3
91
154
  segments:
92
155
  - 0
93
- version: "0"
156
+ - 5
157
+ - 4
158
+ version: 0.5.4
159
+ requirement: *id009
160
+ name: rack-test
161
+ prerelease: false
162
+ type: :development
163
+ - !ruby/object:Gem::Dependency
164
+ version_requirements: &id010 !ruby/object:Gem::Requirement
165
+ none: false
166
+ requirements:
167
+ - - ~>
168
+ - !ruby/object:Gem::Version
169
+ hash: 1
170
+ segments:
171
+ - 1
172
+ - 4
173
+ - 3
174
+ version: 1.4.3
175
+ requirement: *id010
176
+ name: json
177
+ prerelease: false
94
178
  type: :development
95
- version_requirements: *id006
96
179
  description: HTTP Basic strategies for OmniAuth.
97
180
  email: michael@intridea.com
98
181
  executables: []
@@ -103,8 +186,6 @@ extra_rdoc_files: []
103
186
 
104
187
  files:
105
188
  - lib/omniauth/basic.rb
106
- - lib/omniauth/strategies/basecamp.rb
107
- - lib/omniauth/strategies/campfire.rb
108
189
  - lib/omniauth/strategies/gowalla.rb
109
190
  - lib/omniauth/strategies/http_basic.rb
110
191
  - README.rdoc
@@ -120,23 +201,27 @@ rdoc_options: []
120
201
  require_paths:
121
202
  - lib
122
203
  required_ruby_version: !ruby/object:Gem::Requirement
204
+ none: false
123
205
  requirements:
124
206
  - - ">="
125
207
  - !ruby/object:Gem::Version
208
+ hash: 3
126
209
  segments:
127
210
  - 0
128
211
  version: "0"
129
212
  required_rubygems_version: !ruby/object:Gem::Requirement
213
+ none: false
130
214
  requirements:
131
215
  - - ">="
132
216
  - !ruby/object:Gem::Version
217
+ hash: 3
133
218
  segments:
134
219
  - 0
135
220
  version: "0"
136
221
  requirements: []
137
222
 
138
223
  rubyforge_project:
139
- rubygems_version: 1.3.6
224
+ rubygems_version: 1.3.7
140
225
  signing_key:
141
226
  specification_version: 3
142
227
  summary: HTTP Basic strategies for OmniAuth.
@@ -1,53 +0,0 @@
1
- module OmniAuth
2
- module Strategies
3
- class Basecamp < HttpBasic
4
- def initialize(app)
5
- require 'json'
6
- super(app, :basecamp, nil)
7
- end
8
-
9
- def endpoint
10
- "http://#{request.params['user']}:#{request.params['password']}@#{request.params['subdomain']}.basecamphq.com/me.xml"
11
- end
12
-
13
- def perform_authentication(endpoint)
14
- super(endpoint) rescue super(endpoint.sub('http','https'))
15
- end
16
-
17
- def auth_hash
18
- doc = Nokogiri::XML.parse(@response.body)
19
- OmniAuth::Utils.deep_merge(super, {
20
- 'uid' => doc.xpath('person/id').text,
21
- 'user_info' => user_info(doc),
22
- 'credentials' => {
23
- 'token' => doc.xpath('person/token').text
24
- }
25
- })
26
- end
27
-
28
- def user_info(doc)
29
- hash = {
30
- 'nickname' => request.params['user'],
31
- 'first_name' => doc.xpath('person/first-name').text,
32
- 'last_name' => doc.xpath('person/last-name').text,
33
- 'email' => doc.xpath('person/email-address').text,
34
- 'image' => doc.xpath('person/avatar-url').text
35
- }
36
-
37
- hash['name'] = [hash['first_name'], hash['last_name']].join(' ').strip
38
-
39
- hash.delete('image') if hash['image'].include?('missing/avatar.png')
40
-
41
- hash
42
- end
43
-
44
- def get_credentials
45
- OmniAuth::Form.build('Basecamp Authentication') do
46
- text_field 'Subdomain', 'subdomain'
47
- text_field 'Username', 'user'
48
- password_field 'Password', 'password'
49
- end.to_response
50
- end
51
- end
52
- end
53
- end
@@ -1,45 +0,0 @@
1
- module OmniAuth
2
- module Strategies
3
- class Campfire < HttpBasic
4
- def initialize(app)
5
- require 'json'
6
- super(app, :campfire, nil)
7
- end
8
-
9
- def endpoint
10
- "http://#{request.params['user']}:#{request.params['password']}@#{request.params['subdomain']}.campfirenow.com/users/me.json"
11
- end
12
-
13
- def perform_authentication(endpoint)
14
- super(endpoint) rescue super(endpoint.sub('http','https'))
15
- end
16
-
17
- def auth_hash
18
- user_hash = JSON.parse(@response.body)['user']
19
- OmniAuth::Utils.deep_merge(super, {
20
- 'uid' => user_hash['id'],
21
- 'user_info' => user_info(user_hash),
22
- 'credentials' => {
23
- 'token' => user_hash['api_auth_token']
24
- }
25
- })
26
- end
27
-
28
- def user_info(hash)
29
- {
30
- 'nickname' => request.params['user'],
31
- 'name' => hash['name'],
32
- 'email' => hash['email_address']
33
- }
34
- end
35
-
36
- def get_credentials
37
- OmniAuth::Form.build('Campfire Authentication') do
38
- text_field 'Subdomain', 'subdomain'
39
- text_field 'Username', 'user'
40
- password_field 'Password', 'password'
41
- end.to_response
42
- end
43
- end
44
- end
45
- end