Merge branch 'master' into master

This commit is contained in:
Stephen Sykes 2017-02-22 08:13:37 -08:00 committed by GitHub
commit b8e0bd7afb
4 changed files with 19 additions and 12 deletions

View File

@ -1,6 +1,5 @@
language: ruby language: ruby
rvm: rvm:
- 1.9.2
- 1.9.3 - 1.9.3
- 2.0.0 - 2.0.0
- 2.1.8 - 2.1.8

View File

@ -20,7 +20,6 @@ Gem::Specification.new do |s|
s.require_paths = ["lib"] s.require_paths = ["lib"]
s.rubygems_version = %q{1.3.6} s.rubygems_version = %q{1.3.6}
s.summary = %q{FastImage - Image info fast} s.summary = %q{FastImage - Image info fast}
s.add_runtime_dependency 'addressable', '~> 2'
s.add_development_dependency 'fakeweb', '~> 1.3' s.add_development_dependency 'fakeweb', '~> 1.3'
# Note rake 11 drops support for ruby 1.9.2 # Note rake 11 drops support for ruby 1.9.2
s.add_development_dependency('rake', '~> 10.5') s.add_development_dependency('rake', '~> 10.5')

View File

@ -55,12 +55,18 @@
# #
require 'net/https' require 'net/https'
require 'addressable/uri'
require 'delegate' require 'delegate'
require 'pathname' require 'pathname'
require 'zlib' require 'zlib'
require 'base64' require 'base64'
require 'uri'
# see http://stackoverflow.com/questions/5208851/i/41048816#41048816
if RUBY_VERSION < "2.2"
module URI
DEFAULT_PARSER = Parser.new(:HOSTNAME => "(?:(?:[a-zA-Z\\d](?:[-\\_a-zA-Z\\d]*[a-zA-Z\\d])?)\\.)*(?:[a-zA-Z](?:[-\\_a-zA-Z\\d]*[a-zA-Z\\d])?)\\.?")
end
end
class FastImage class FastImage
attr_reader :size, :type, :content_length, :orientation attr_reader :size, :type, :content_length, :orientation
@ -190,8 +196,8 @@ class FastImage
fetch_using_base64(uri) fetch_using_base64(uri)
else else
begin begin
@parsed_uri = Addressable::URI.parse(uri) @parsed_uri = URI.parse(uri)
rescue Addressable::URI::InvalidURIError rescue URI::InvalidURIError
fetch_using_file_open fetch_using_file_open
else else
if @parsed_uri.scheme == "http" || @parsed_uri.scheme == "https" if @parsed_uri.scheme == "http" || @parsed_uri.scheme == "https"
@ -241,14 +247,14 @@ class FastImage
if res.is_a?(Net::HTTPRedirection) && @redirect_count < 4 if res.is_a?(Net::HTTPRedirection) && @redirect_count < 4
@redirect_count += 1 @redirect_count += 1
begin begin
newly_parsed_uri = Addressable::URI.parse(res['Location']) newly_parsed_uri = URI.parse(res['Location'])
# The new location may be relative - check for that # The new location may be relative - check for that
if newly_parsed_uri.scheme != "http" && newly_parsed_uri.scheme != "https" if newly_parsed_uri.scheme != "http" && newly_parsed_uri.scheme != "https"
@parsed_uri.path = res['Location'] @parsed_uri.path = res['Location']
else else
@parsed_uri = newly_parsed_uri @parsed_uri = newly_parsed_uri
end end
rescue Addressable::URI::InvalidURIError rescue URI::InvalidURIError
else else
fetch_using_http_from_parsed_uri fetch_using_http_from_parsed_uri
break break
@ -289,11 +295,11 @@ class FastImage
def proxy_uri def proxy_uri
begin begin
if @options[:proxy] if @options[:proxy]
proxy = Addressable::URI.parse(@options[:proxy]) proxy = URI.parse(@options[:proxy])
else else
proxy = ENV['http_proxy'] && ENV['http_proxy'] != "" ? Addressable::URI.parse(ENV['http_proxy']) : nil proxy = ENV['http_proxy'] && ENV['http_proxy'] != "" ? URI.parse(ENV['http_proxy']) : nil
end end
rescue Addressable::URI::InvalidURIError rescue URI::InvalidURIError
proxy = nil proxy = nil
end end
proxy proxy
@ -303,9 +309,9 @@ class FastImage
proxy = proxy_uri proxy = proxy_uri
if proxy if proxy
@http = Net::HTTP::Proxy(proxy.host, proxy.port).new(@parsed_uri.host, @parsed_uri.inferred_port) @http = Net::HTTP::Proxy(proxy.host, proxy.port).new(@parsed_uri.host, @parsed_uri.port)
else else
@http = Net::HTTP.new(@parsed_uri.host, @parsed_uri.inferred_port) @http = Net::HTTP.new(@parsed_uri.host, @parsed_uri.port)
end end
@http.use_ssl = (@parsed_uri.scheme == "https") @http.use_ssl = (@parsed_uri.scheme == "https")
@http.verify_mode = OpenSSL::SSL::VERIFY_NONE @http.verify_mode = OpenSSL::SSL::VERIFY_NONE

View File

@ -375,5 +375,8 @@ class FastImageTest < Test::Unit::TestCase
assert_raises(FastImage::ImageFetchFailure) do assert_raises(FastImage::ImageFetchFailure) do
FastImage.type("data:", :raise_on_failure => true) FastImage.type("data:", :raise_on_failure => true)
end end
def test_should_work_with_domains_with_underscores
assert_equal :gif, FastImage.type("http://foo_bar.inbro.net/images/p.gif")
end end
end end