omniauth-twitchtv 0.0.2 → 0.1.0

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 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