diff --git a/.travis.yml b/.travis.yml index 5da81db..d7f431d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,13 @@ +dist: trusty + rvm: - - 1.9.3 - - 2.0.0 - - 2.1 - - 2.2 - - jruby - - rbx-2 + - 2.1.10 + - 2.2.6 + - 2.3.3 + - 2.4.0 + - jruby-1.7.26 + - rbx-3 + +matrix: + allow_failures: + - rvm: rbx-3 diff --git a/Gemfile b/Gemfile index 3b0b968..a2eac59 100644 --- a/Gemfile +++ b/Gemfile @@ -5,6 +5,15 @@ gem 'rake' group :test do + if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.0.0") + # for jruby 1.7.x + gem "addressable", "2.4.0" + end + + if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.2.2") + gem "rack", "~> 1.6" + end + gem 'rspec', '~> 3.2' gem 'rack-test' gem 'simplecov' diff --git a/README.md b/README.md index 901c344..04a38ef 100644 --- a/README.md +++ b/README.md @@ -156,7 +156,9 @@ ## Supported Rubies -OmniAuth Twitter is tested under 1.9.3, 2.0.0, 2.1.x, 2.2.x, JRuby, and Rubinius. +OmniAuth Twitter is tested under 2.1.x, 2.2.x and JRuby. + +If you use its gem on ruby 1.9.x, 2.0.x, or Rubinius use version v1.2.1 . ## Contributing diff --git a/lib/omniauth/strategies/twitter.rb b/lib/omniauth/strategies/twitter.rb index 5f53380..26ada82 100644 --- a/lib/omniauth/strategies/twitter.rb +++ b/lib/omniauth/strategies/twitter.rb @@ -61,6 +61,26 @@ old_request_phase end + alias :old_callback_url :callback_url + + def callback_url + if request.params['callback_url'] + request.params['callback_url'] + else + old_callback_url + end + end + + def callback_path + params = session['omniauth.params'] + + if params.nil? || params['callback_url'].nil? + super + else + URI(params['callback_url']).path + end + end + private def image_url diff --git a/lib/omniauth-twitter/version.rb b/lib/omniauth-twitter/version.rb index c130b7e..8cf38d1 100644 --- a/lib/omniauth-twitter/version.rb +++ b/lib/omniauth-twitter/version.rb @@ -1,5 +1,5 @@ module OmniAuth module Twitter - VERSION = "1.2.1" + VERSION = "1.4.0" end end diff --git a/metadata.yml b/metadata.yml deleted file mode 100644 index 6f26e1e..0000000 --- a/metadata.yml +++ /dev/null @@ -1,101 +0,0 @@ ---- !ruby/object:Gem::Specification -name: omniauth-twitter -version: !ruby/object:Gem::Version - version: 1.2.1 -platform: ruby -authors: -- Arun Agrawal -autorequire: -bindir: bin -cert_chain: [] -date: 2015-07-29 00:00:00.000000000 Z -dependencies: -- !ruby/object:Gem::Dependency - name: json - requirement: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '1.3' - type: :runtime - prerelease: false - version_requirements: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '1.3' -- !ruby/object:Gem::Dependency - name: omniauth-oauth - requirement: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '1.1' - type: :runtime - prerelease: false - version_requirements: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '1.1' -- !ruby/object:Gem::Dependency - name: bundler - requirement: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '1.0' - type: :development - prerelease: false - version_requirements: !ruby/object:Gem::Requirement - requirements: - - - "~>" - - !ruby/object:Gem::Version - version: '1.0' -description: OmniAuth strategy for Twitter -email: -- arunagw@gmail.com -executables: [] -extensions: [] -extra_rdoc_files: [] -files: -- ".gitignore" -- ".rspec" -- ".travis.yml" -- CONTRIBUTING.md -- Gemfile -- README.md -- Rakefile -- lib/omniauth-twitter.rb -- lib/omniauth-twitter/version.rb -- lib/omniauth/strategies/twitter.rb -- omniauth-twitter.gemspec -- spec/omniauth/strategies/twitter_spec.rb -- spec/spec_helper.rb -homepage: https://github.com/arunagw/omniauth-twitter -licenses: -- MIT -metadata: {} -post_install_message: -rdoc_options: [] -require_paths: -- lib -required_ruby_version: !ruby/object:Gem::Requirement - requirements: - - - ">=" - - !ruby/object:Gem::Version - version: '0' -required_rubygems_version: !ruby/object:Gem::Requirement - requirements: - - - ">=" - - !ruby/object:Gem::Version - version: '0' -requirements: [] -rubyforge_project: -rubygems_version: 2.4.5 -signing_key: -specification_version: 4 -summary: OmniAuth strategy for Twitter -test_files: -- spec/omniauth/strategies/twitter_spec.rb -- spec/spec_helper.rb diff --git a/omniauth-twitter.gemspec b/omniauth-twitter.gemspec index 4a0440d..fcdb38b 100644 --- a/omniauth-twitter.gemspec +++ b/omniauth-twitter.gemspec @@ -16,8 +16,8 @@ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } s.require_paths = ["lib"] - - s.add_dependency 'json', '~> 1.3' + s.required_ruby_version = Gem::Requirement.new('>= 1.9.3') s.add_dependency 'omniauth-oauth', '~> 1.1' + s.add_dependency 'rack' s.add_development_dependency 'bundler', '~> 1.0' end diff --git a/spec/omniauth/strategies/twitter_spec.rb b/spec/omniauth/strategies/twitter_spec.rb index 3cb0e92..7b1f8f5 100644 --- a/spec/omniauth/strategies/twitter_spec.rb +++ b/spec/omniauth/strategies/twitter_spec.rb @@ -127,6 +127,48 @@ it "should switch authorize_path from authenticate to authorize" do expect { subject.request_phase }.to change { subject.options.client_options.authorize_path }.from('/oauth/authenticate').to('/oauth/authorize') + end + end + + context 'with a specified callback_url in the params' do + before do + params = { 'callback_url' => 'http://foo.dev/auth/twitter/foobar' } + allow(subject).to receive(:request) do + double('Request', :params => params) + end + allow(subject).to receive(:session) do + double('Session', :[] => { 'callback_url' => params['callback_url'] }) + end + allow(subject).to receive(:old_request_phase) { :whatever } + end + + it 'should use the callback_url' do + expect(subject.callback_url).to eq 'http://foo.dev/auth/twitter/foobar' + end + + it 'should return the correct callback_path' do + expect(subject.callback_path).to eq '/auth/twitter/foobar' + end + end + + context 'with no callback_url set' do + before do + allow(subject).to receive(:request) do + double('Request', :params => {}) + end + allow(subject).to receive(:session) do + double('Session', :[] => {}) + end + allow(subject).to receive(:old_request_phase) { :whatever } + allow(subject).to receive(:old_callback_url).and_return(:old_callback) + end + + it 'callback_url should return nil' do + expect(subject.callback_url).to eq :old_callback + end + + it 'should return the default callback_path value' do + expect(subject.callback_path).to eq '/auth/twitter/callback' end end