soundcloud-auth 0.1.1 → 0.1.2
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/.gitignore +1 -0
- data/README.markdown +15 -19
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/app/models/soundcloud_auth/generic_user.rb +5 -1
- data/lib/soundcloud_auth.rb +1 -9
- data/rails/init.rb +3 -2
- data/soundcloud-auth.gemspec +7 -5
- metadata +19 -6
- data/lib/soundcloud_auth/dispatcher/oauth.rb +0 -56
- data/pkg/soundcloud-auth-0.1.0.gem +0 -0
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
pkg/**/*
|
data/README.markdown
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
|
1
|
+
SoundCloudAuth
|
2
2
|
===========
|
3
3
|
|
4
|
-
|
4
|
+
SoundCloudAuth aims to provide a complete authentication and API access solution for creating SoundCloud applications in Rails. It provides a generator and all of the necessary components to use Soundcloud as the sole authentication provider for an application using OAuth.
|
5
5
|
|
6
6
|
### Major Props
|
7
7
|
|
8
|
-
|
8
|
+
SoundCloudAuth is largely influenced and in a lot of ways identical to [Michael Bleigh's](http://github.com/mbleigh) amazing [TwitterAuth](http://github.com/mbleigh/twitter-auth) plugin. I've used TwitterAuth so many times on my Twitter app development that I found it sorely missed when I tried to tackle the SoundCloud platform. All props and donations should be forwarded to Michael.
|
9
9
|
|
10
10
|
Installation
|
11
11
|
============
|
12
12
|
|
13
|
-
You can include
|
13
|
+
You can include SoundCloudAuth as a gem in your project like so:
|
14
14
|
|
15
15
|
config.gem `soundcloud-auth`, :lib => `soundcloud_auth`
|
16
16
|
|
@@ -18,23 +18,23 @@ Or you can install it as a traditional Rails plugin:
|
|
18
18
|
|
19
19
|
script/plugin install git://github.com/leemartin/soundcloud-auth.git
|
20
20
|
|
21
|
-
Note that because
|
21
|
+
Note that because SoundCloudAuth utilizes Rails Engines functionality introduced in Rails 2.3, it will not work with earlier versions of Rails.
|
22
22
|
|
23
23
|
Usage
|
24
24
|
=====
|
25
25
|
|
26
|
-
To utilize
|
26
|
+
To utilize SoundCloudAuth in your application you will need to run the generator:
|
27
27
|
|
28
28
|
script/generate soundcloud_auth
|
29
29
|
|
30
|
-
This will generate a migration as well as set up the stubs needed to use the Rails Engines controllers and models set up by
|
30
|
+
This will generate a migration as well as set up the stubs needed to use the Rails Engines controllers and models set up by SoundCloudAuth. It will also create a User class that inherits from SoundcloudUser, abstracting away all of the SoundCloud authentication functionality and leaving you a blank slate to work with for your application.
|
31
31
|
|
32
32
|
Finally, it will create a configuration file in `config/soundcloud_auth.yml` in which you should input your OAuth consumer key and secret as well as a custom callback for development (the 'oauth_callback' option is where SoundCloud will send the browser after authentication is complete).
|
33
33
|
|
34
34
|
Usage Basics
|
35
35
|
------------
|
36
36
|
|
37
|
-
|
37
|
+
SoundCloudAuth borrows heavily from [Restful Authentication](http://github.com/technoweenie/restful-authentication) for its API because it's simple and well-known. Here are some of the familiar methods that are available:
|
38
38
|
|
39
39
|
* `login_required`: a before filter that can be added to a controller to require that a user logs in before he/she can view the page.
|
40
40
|
* `current_user`: returns the logged in user if one exists, otherwise returns `nil`.
|
@@ -46,24 +46,20 @@ SoundcloudAuth borrows heavily from [Restful Authentication](http://github.com/t
|
|
46
46
|
Accessing the SoundCloud API
|
47
47
|
-------------------------
|
48
48
|
|
49
|
-
The `User` class will have a `soundcloud` method that
|
49
|
+
The `User` class will have a `soundcloud` method that interfaces with the [SoundCloud Ruby API Wrapper](http://wiki.github.com/soundcloud/ruby-api-wrapper/) allowing you to easily access the [SoundCloud API](http://wiki.github.com/soundcloud/api/). Check out the [Wiki](http://wiki.github.com/soundcloud/ruby-api-wrapper/getting-started) for more info.
|
50
50
|
|
51
|
-
user.soundcloud.
|
52
|
-
# => {'username' => 'leemartin', 'full_name' => 'Lee Martin' ... }
|
51
|
+
user.soundcloud.User.find_me
|
53
52
|
|
54
|
-
|
55
|
-
# => {'username' => 'leemartin', 'website' => 'http://lee.ma/rtin'}
|
53
|
+
user.soundcloud.Track.find(:all)
|
56
54
|
|
57
|
-
|
58
|
-
|
59
|
-
Customizing SoundcloudAuth
|
55
|
+
Customizing SoundCloudAuth
|
60
56
|
-----------------------
|
61
57
|
|
62
|
-
There are a number of hooks to extend the functionality of
|
58
|
+
There are a number of hooks to extend the functionality of SoundCloudAuth. Here is a brief description of each of them.
|
63
59
|
|
64
60
|
### Controller Methods
|
65
61
|
|
66
|
-
|
62
|
+
SoundCloudAuth provides some default controller methods that may be overridden in your `ApplicationController` to behave differently.
|
67
63
|
|
68
64
|
* `authentication_failed(message)`: called when SoundCloud authorization has failed during the process. By default, simply redirects to the site root and sets the `flash[:error]`.
|
69
65
|
* `authentication_succeeded(message=default)`: called when SoundCloud authorization has completed successfully. By default, simply redirects to the site root and sets the `flash[:notice]`.
|
@@ -72,4 +68,4 @@ SoundcloudAuth provides some default controller methods that may be overridden i
|
|
72
68
|
Copyright
|
73
69
|
---------
|
74
70
|
|
75
|
-
**
|
71
|
+
**SoundCloudAuth** is Copyright (c) 2010 [Lee Martin](http://lee.ma/rtin), released under the MIT License.
|
data/Rakefile
CHANGED
@@ -11,6 +11,7 @@ begin
|
|
11
11
|
gemspec.homepage = "http://github.com/leemartin/soundcloud-auth"
|
12
12
|
gemspec.authors = ["Lee Martin"]
|
13
13
|
gemspec.add_dependency('oauth', '>= 0.3.1')
|
14
|
+
gemspec.add_dependency('soundcloud-ruby-api-wrapper')
|
14
15
|
end
|
15
16
|
Jeweler::GemcutterTasks.new
|
16
17
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
@@ -89,13 +89,17 @@ module SoundcloudAuth
|
|
89
89
|
user.save
|
90
90
|
user
|
91
91
|
end
|
92
|
+
|
93
|
+
def token
|
94
|
+
OAuth::AccessToken.new(SoundcloudAuth.consumer, access_token, access_secret)
|
95
|
+
end
|
92
96
|
|
93
97
|
def utilize_default_validations
|
94
98
|
true
|
95
99
|
end
|
96
100
|
|
97
101
|
def soundcloud
|
98
|
-
|
102
|
+
Soundcloud.register({:access_token => token})
|
99
103
|
end
|
100
104
|
|
101
105
|
def remember_me
|
data/lib/soundcloud_auth.rb
CHANGED
@@ -45,12 +45,4 @@ module SoundcloudAuth
|
|
45
45
|
|
46
46
|
end
|
47
47
|
|
48
|
-
require 'soundcloud_auth/controller_extensions'
|
49
|
-
require 'soundcloud_auth/dispatcher/oauth'
|
50
|
-
|
51
|
-
module SoundcloudAuth
|
52
|
-
module Dispatcher
|
53
|
-
class Error < StandardError; end
|
54
|
-
class Unauthorized < Error; end
|
55
|
-
end
|
56
|
-
end
|
48
|
+
require 'soundcloud_auth/controller_extensions'
|
data/rails/init.rb
CHANGED
data/soundcloud-auth.gemspec
CHANGED
@@ -5,18 +5,19 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{soundcloud-auth}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Lee Martin"]
|
12
|
-
s.date = %q{2010-06-
|
12
|
+
s.date = %q{2010-06-27}
|
13
13
|
s.description = %q{SoundcloudAuth is a Rails plugin gem that provides Single Sign-On capabilities for Rails applications via SoundCloud.}
|
14
14
|
s.email = %q{lee@soundcloud.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"README.markdown"
|
17
17
|
]
|
18
18
|
s.files = [
|
19
|
-
"
|
19
|
+
".gitignore",
|
20
|
+
"README.markdown",
|
20
21
|
"Rakefile",
|
21
22
|
"VERSION",
|
22
23
|
"app/controllers/sessions_controller.rb",
|
@@ -30,8 +31,6 @@ Gem::Specification.new do |s|
|
|
30
31
|
"init.rb",
|
31
32
|
"lib/soundcloud_auth.rb",
|
32
33
|
"lib/soundcloud_auth/controller_extensions.rb",
|
33
|
-
"lib/soundcloud_auth/dispatcher/oauth.rb",
|
34
|
-
"pkg/soundcloud-auth-0.1.0.gem",
|
35
34
|
"rails/init.rb",
|
36
35
|
"soundcloud-auth.gemspec"
|
37
36
|
]
|
@@ -47,10 +46,13 @@ Gem::Specification.new do |s|
|
|
47
46
|
|
48
47
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
48
|
s.add_runtime_dependency(%q<oauth>, [">= 0.3.1"])
|
49
|
+
s.add_runtime_dependency(%q<soundcloud-ruby-api-wrapper>, [">= 0"])
|
50
50
|
else
|
51
51
|
s.add_dependency(%q<oauth>, [">= 0.3.1"])
|
52
|
+
s.add_dependency(%q<soundcloud-ruby-api-wrapper>, [">= 0"])
|
52
53
|
end
|
53
54
|
else
|
54
55
|
s.add_dependency(%q<oauth>, [">= 0.3.1"])
|
56
|
+
s.add_dependency(%q<soundcloud-ruby-api-wrapper>, [">= 0"])
|
55
57
|
end
|
56
58
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soundcloud-auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Lee Martin
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-06-
|
18
|
+
date: 2010-06-27 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -34,6 +34,20 @@ dependencies:
|
|
34
34
|
version: 0.3.1
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: soundcloud-ruby-api-wrapper
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 3
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
version: "0"
|
49
|
+
type: :runtime
|
50
|
+
version_requirements: *id002
|
37
51
|
description: SoundcloudAuth is a Rails plugin gem that provides Single Sign-On capabilities for Rails applications via SoundCloud.
|
38
52
|
email: lee@soundcloud.com
|
39
53
|
executables: []
|
@@ -43,6 +57,7 @@ extensions: []
|
|
43
57
|
extra_rdoc_files:
|
44
58
|
- README.markdown
|
45
59
|
files:
|
60
|
+
- .gitignore
|
46
61
|
- README.markdown
|
47
62
|
- Rakefile
|
48
63
|
- VERSION
|
@@ -57,8 +72,6 @@ files:
|
|
57
72
|
- init.rb
|
58
73
|
- lib/soundcloud_auth.rb
|
59
74
|
- lib/soundcloud_auth/controller_extensions.rb
|
60
|
-
- lib/soundcloud_auth/dispatcher/oauth.rb
|
61
|
-
- pkg/soundcloud-auth-0.1.0.gem
|
62
75
|
- rails/init.rb
|
63
76
|
- soundcloud-auth.gemspec
|
64
77
|
has_rdoc: true
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'oauth'
|
2
|
-
|
3
|
-
module SoundcloudAuth
|
4
|
-
module Dispatcher
|
5
|
-
class Oauth < OAuth::AccessToken
|
6
|
-
|
7
|
-
attr_accessor :user
|
8
|
-
|
9
|
-
def append_extension_to(path)
|
10
|
-
path, query_string = *(path.split("?"))
|
11
|
-
path << '.json' unless path.match(/\.(:?xml|json)\z/i)
|
12
|
-
"#{path}#{"?#{query_string}" if query_string}"
|
13
|
-
end
|
14
|
-
|
15
|
-
def handle_response(response)
|
16
|
-
case response
|
17
|
-
when Net::HTTPOK
|
18
|
-
begin
|
19
|
-
JSON.parse(response.body)
|
20
|
-
rescue JSON::ParserError
|
21
|
-
response.body
|
22
|
-
end
|
23
|
-
when Net::HTTPUnauthorized
|
24
|
-
raise SoundcloudAuth::Dispatcher::Unauthorized, 'The credentials provided did not authorize the user.'
|
25
|
-
else
|
26
|
-
message = begin
|
27
|
-
JSON.parse(response.body)['error']
|
28
|
-
rescue JSON::ParserError
|
29
|
-
if match = response.body.match(/<error>(.*)<\/error>/)
|
30
|
-
match[1]
|
31
|
-
else
|
32
|
-
'An error occurred processing your SoundCloud request.'
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
raise SoundcloudAuth::Dispatcher::Error, message
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def initialize(user)
|
41
|
-
self.user = user
|
42
|
-
super(SoundcloudAuth.consumer, user.access_token, user.access_secret)
|
43
|
-
end
|
44
|
-
|
45
|
-
def request(http_method, path, *arguments)
|
46
|
-
path = SoundcloudAuth.path_prefix + path
|
47
|
-
path = append_extension_to(path)
|
48
|
-
|
49
|
-
response = super
|
50
|
-
|
51
|
-
handle_response(response)
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
Binary file
|