omniauth-twitchtv 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm --create 1.9.3@omniauth-twitchtv
1
+ rvm --create 1.9.3-turbo@omniauth-twitchtv
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module Twitchtv
3
- VERSION = "0.0.2"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -1,127 +1,20 @@
1
- require 'omniauth/strategies/oauth'
1
+ require 'omniauth-oauth2'
2
2
 
3
3
  module OmniAuth
4
4
  module Strategies
5
- class Twitchtv
6
- include OmniAuth::Strategy
7
-
8
- option :name, "twitchtv"
9
-
10
- args [:client_id]
11
-
12
- option :client_id, nil
5
+ class Twitchtv < OmniAuth::Strategies::OAuth2
13
6
  option :client_options, {
14
- :site => 'https://api.twitch.tv',
15
- :api_url => 'https://api.twitch.tv/kraken',
16
- :authorize_url => '/kraken/oauth2/authorize',
17
- :proxy => ENV['http_proxy'] ? URI(ENV['http_proxy']) : nil,
18
- :callback => nil
7
+ :site => 'https://api.twitch.tv',
8
+ :authorize_url => 'https://api.twitch.tv/kraken/oauth2/authorize',
9
+ :token_url => 'https://api.twitch.tv/kraken/oauth2/token'
19
10
  }
20
- option :authorize_params, {}
21
- option :authorize_options, [:scope, :response_type]
22
- option :response_type, 'token'
23
-
24
- attr_accessor :json
25
- attr_accessor :access_token
26
-
27
- def client
28
- ::OAuth2::Client.new(options.client_id, nil, deep_symbolize(options.client_options))
29
- end
30
-
31
- def callback_url
32
- options.client_options.callback || full_host + script_name + callback_path
33
- end
34
-
35
- def request_phase
36
- redirect client.auth_code.authorize_url({:redirect_uri => callback_url}.merge(authorize_params))
37
- end
38
-
39
- def authorize_params
40
- options.authorize_params.merge(options.authorize_options.inject({}){|h,k| h[k.to_sym] = options[k] if options[k]; h})
41
- end
42
-
43
- def callback_phase
44
- if request.params['error'] || request.params['error_reason']
45
- raise CallbackError.new(request.params['error'], request.params['error_description'] || request.params['error_reason'], request.params['error_uri'])
46
- end
47
-
48
- @json = {}
49
- self.access_token = request.params["access_token"]
50
- begin
51
- response = RestClient.get("#{options.client_options.api_url}/user", { 'Authorization' => "OAuth #{access_token}" })
52
- user = MultiJson.decode(response.to_s)
53
- # {
54
- # "name" => "xxx",
55
- # "created_at" => "2011-11-17T02:15:55Z",
56
- # "updated_at" => "2012-09-12T08:40:39Z",
57
- # "logo" => nil,
58
- # "_links" => {
59
- # "self" => "https://api.twitch.tv/kraken/users/xxx"
60
- # },
61
- # "staff" => false,
62
- # "_id" => 23456789,
63
- # "display_name" => "xxx",
64
- # "email" => "xxx@gmail.com"
65
- # }
66
- @json.merge!(user)
67
- super
68
- rescue CallbackError, ::RestClient::Exception => e
69
- fail!(:invalid_credentials, e)
70
- rescue ::MultiJson::DecodeError => e
71
- fail!(:invalid_response, e)
72
- rescue ::Timeout::Error, ::Errno::ETIMEDOUT => e
73
- fail!(:timeout, e)
74
- rescue ::SocketError => e
75
- fail!
76
- end
77
- end
78
11
 
79
- credentials do
80
- {'token' => access_token}
81
- end
82
-
83
- uid do
84
- @json['_id']
85
- end
86
-
87
- info do
88
- {
89
- :email => @json['email'],
90
- :nickname => @json['display_name']
91
- }
92
- end
93
-
94
- extra do
95
- { 'raw_info' => @json }
96
- end
97
-
98
- protected
99
-
100
- def deep_symbolize(hash)
101
- hash.inject({}) do |h, (k,v)|
102
- h[k.to_sym] = v.is_a?(Hash) ? deep_symbolize(v) : v
103
- h
104
- end
105
- end
106
-
107
- def build_access_token
108
- verifier = request.params['code']
109
- client.auth_code.get_token(verifier, {:redirect_uri => callback_url}.merge(token_params.to_hash(:symbolize_keys => true)))
110
- end
111
-
112
- # An error that is indicated in the OAuth 2.0 callback.
113
- # This could be a `redirect_uri_mismatch` or other
114
- class CallbackError < StandardError
115
- attr_accessor :error, :error_reason, :error_uri
116
-
117
- def initialize(error, error_reason=nil, error_uri=nil)
118
- self.error = error
119
- self.error_reason = error_reason
120
- self.error_uri = error_uri
121
- end
122
- end
123
12
 
13
+ option :authorize_params, {}
14
+ option :authorize_options, [:scope, :response_type]
15
+ option :response_type, 'code'
124
16
  end
125
17
  end
126
18
  end
127
19
  OmniAuth.config.add_camelization 'twitchtv', 'Twitchtv'
20
+
@@ -16,8 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ["lib"]
18
18
 
19
- s.add_runtime_dependency 'omniauth-oauth', '~> 1.0'
20
- s.add_runtime_dependency 'rest-client'
19
+ s.add_runtime_dependency 'omniauth-oauth2', '~> 1.1'
21
20
 
22
21
  s.add_development_dependency 'rspec', '~> 2.7'
23
22
  s.add_development_dependency 'rake'
@@ -11,21 +11,12 @@ describe "OmniAuth::Strategies::Twitchtv" do
11
11
 
12
12
  context 'client options' do
13
13
  it 'has correct Twitchtv site' do
14
- subject.options.client_options.site.should eq('https://api.twitchtv.com')
14
+ subject.options.client_options.site.should eq('https://api.twitch.tv')
15
15
  end
16
16
 
17
17
  it 'has correct authorize url' do
18
- subject.options.client_options.authorize_url.should eq('https://api.twitchtv.com/kraken/oauth2/authorize')
18
+ subject.options.client_options.authorize_url.should eq('https://api.twitch.tv/kraken/oauth2/authorize')
19
19
  end
20
20
  end
21
21
 
22
- context '#uid' do
23
- before :each do
24
- subject.stub(:raw_info) { { 'id' => '123' } }
25
- end
26
-
27
- it 'returns the id from raw_info' do
28
- subject.uid.should eq('123')
29
- end
30
- end
31
22
  end
metadata CHANGED
@@ -1,106 +1,103 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: omniauth-twitchtv
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 2
9
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Claudio Poli
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2013-01-17 00:00:00 -08:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: omniauth-oauth
12
+ date: 2013-01-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: omniauth-oauth2
22
16
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
25
19
  - - ~>
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 1
29
- - 0
30
- version: "1.0"
31
- type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
34
- name: rest-client
35
- prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- segments:
41
- - 0
42
- version: "0"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.1'
22
+ none: false
43
23
  type: :runtime
44
- version_requirements: *id002
45
- - !ruby/object:Gem::Dependency
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ version: '1.1'
29
+ none: false
30
+ - !ruby/object:Gem::Dependency
46
31
  name: rspec
47
32
  prerelease: false
48
- requirement: &id003 !ruby/object:Gem::Requirement
49
- requirements:
33
+ requirement: !ruby/object:Gem::Requirement
34
+ requirements:
50
35
  - - ~>
51
- - !ruby/object:Gem::Version
52
- segments:
53
- - 2
54
- - 7
55
- version: "2.7"
36
+ - !ruby/object:Gem::Version
37
+ version: '2.7'
38
+ none: false
56
39
  type: :development
57
- version_requirements: *id003
58
- - !ruby/object:Gem::Dependency
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ version: '2.7'
45
+ none: false
46
+ - !ruby/object:Gem::Dependency
59
47
  name: rake
60
48
  prerelease: false
61
- requirement: &id004 !ruby/object:Gem::Requirement
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- segments:
66
- - 0
67
- version: "0"
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ none: false
68
55
  type: :development
69
- version_requirements: *id004
70
- - !ruby/object:Gem::Dependency
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ none: false
62
+ - !ruby/object:Gem::Dependency
71
63
  name: webmock
72
64
  prerelease: false
73
- requirement: &id005 !ruby/object:Gem::Requirement
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- segments:
78
- - 0
79
- version: "0"
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ none: false
80
71
  type: :development
81
- version_requirements: *id005
82
- - !ruby/object:Gem::Dependency
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ none: false
78
+ - !ruby/object:Gem::Dependency
83
79
  name: rack-test
84
80
  prerelease: false
85
- requirement: &id006 !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- segments:
90
- - 0
91
- version: "0"
81
+ requirement: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ none: false
92
87
  type: :development
93
- version_requirements: *id006
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ none: false
94
94
  description: Twitch.TV strategy for OmniAuth.
95
- email:
95
+ email:
96
96
  - claudio@audiobox.fm
97
97
  executables: []
98
-
99
98
  extensions: []
100
-
101
99
  extra_rdoc_files: []
102
-
103
- files:
100
+ files:
104
101
  - .gitignore
105
102
  - .rspec
106
103
  - .rvmrc
@@ -118,37 +115,31 @@ files:
118
115
  - spec/omniauth/.DS_Store
119
116
  - spec/omniauth/strategies/twitchtv_spec.rb
120
117
  - spec/spec_helper.rb
121
- has_rdoc: true
122
118
  homepage: https://github.com/masterkain/omniauth-twitchtv
123
119
  licenses: []
124
-
125
120
  post_install_message:
126
121
  rdoc_options: []
127
-
128
- require_paths:
122
+ require_paths:
129
123
  - lib
130
- required_ruby_version: !ruby/object:Gem::Requirement
131
- requirements:
132
- - - ">="
133
- - !ruby/object:Gem::Version
134
- segments:
135
- - 0
136
- version: "0"
137
- required_rubygems_version: !ruby/object:Gem::Requirement
138
- requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- segments:
142
- - 0
143
- version: "0"
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ none: false
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ none: false
144
136
  requirements: []
145
-
146
137
  rubyforge_project:
147
- rubygems_version: 1.3.6
138
+ rubygems_version: 1.8.24
148
139
  signing_key:
149
140
  specification_version: 3
150
141
  summary: Twitch.TV strategy for OmniAuth.
151
- test_files:
142
+ test_files:
152
143
  - spec/omniauth/.DS_Store
153
144
  - spec/omniauth/strategies/twitchtv_spec.rb
154
145
  - spec/spec_helper.rb