mirror of
https://github.com/sdsykes/fastimage.git
synced 2025-10-09 00:02:49 -04:00
Merge branch 'master' into master
This commit is contained in:
commit
b8e0bd7afb
@ -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
|
||||||
|
@ -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')
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user