No commit activity in last 3 years
No release in over 3 years
OpenURI patch to allow redirections between HTTP and HTTPS
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
 Dependencies

Development

~> 1.3.0
~> 10.3.2
~> 3.1.0
 Project Readme

OpenUriRedirections Build Status Dependency Status Code Climate

This gem applies a patch to OpenURI to optionally allow redirections from HTTP to HTTPS, or from HTTPS to HTTP.

UPDATE 2019: HTTP to HTTPS is supported by native open-uri by default from Ruby 2.4.

This is based on this patch and this gem, and modified to allow redirections in both directions.

Here is the problem it tries to solve:

$ irb
1.9.2p320 :001 > require 'open-uri'
=> true
1.9.2p320 :002 > open('http://github.com')
RuntimeError: redirection forbidden: http://github.com -> https://github.com/

And here is how you can use this patch to follow the redirections:

$ irb
1.9.2p320 :001 > require 'open-uri'
=> true
> require 'open_uri_redirections'
=> true
1.9.2p320 :002 > open('http://github.com', :allow_redirections => :safe)
=> #<File:/var/folders/...>

The patch contained in this gem adds the :allow_redirections option to OpenURI#open:

  • :allow_redirections => :safe will allow HTTP => HTTPS redirections.
  • :allow_redirections => :all will allow HTTP => HTTPS redirections and HTTPS => HTTP redirections.

Understand what you're doing

Before using this gem, read this:

Original gist URL:

https://gist.github.com/1271420

Relevant issue:

https://bugs.ruby-lang.org/issues/3719

Source here:

https://github.com/ruby/ruby/blob/trunk/lib/open-uri.rb

Thread-safe implementation adapted from this gem:

https://github.com/obfusk/open_uri_w_redirect_to_https

Use it at your own risk!

Installation

Add this line to your application's Gemfile:

gem 'open_uri_redirections'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install open_uri_redirections

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request