fastimage 1.6.7 → 1.6.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.textile +2 -1
- data/lib/fastimage.rb +14 -9
- data/lib/fastimage/fbr.rb +0 -1
- data/test/test.rb +13 -6
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47e50479e458978b758e62aaeea44345c05a27ea
|
4
|
+
data.tar.gz: ee7b1918db731c9bee8c1f08bd0cc3515ec6c348
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 590b19d10a62e9c34cd7777f10999498e787acd5b09ce103578f9d777fdb73e670a78cebafc6ad61a80c1ac08947a5dbff96d4a8e1589982fa6abe065592f4a9
|
7
|
+
data.tar.gz: 41f069d44b395574c5c5c60b10bde728d5cae4d9d6e7fee195ebef5c541476efeb102830dea89a6b09c64ce87b349cd05758792166ee81b5a435d32890b831ef
|
data/README.textile
CHANGED
@@ -26,7 +26,7 @@ instance an IO object if that is passed instead of a URI.
|
|
26
26
|
|
27
27
|
FastImage will follow up to 4 HTTP redirects to get the image.
|
28
28
|
|
29
|
-
FastImage will obey the http_proxy setting in your environment to route requests via a proxy.
|
29
|
+
FastImage will obey the http_proxy setting in your environment to route requests via a proxy. You can also pass a :proxy argument if you want to specify the proxy address in the call.
|
30
30
|
|
31
31
|
You can add a timeout to the request which will limit the request time by passing :timeout => number_of_seconds.
|
32
32
|
|
@@ -142,4 +142,5 @@ Pull requests and suggestions are always welcome. Thanks to all the contributors
|
|
142
142
|
* @muffinista
|
143
143
|
* @marcandre
|
144
144
|
* @apanzerj
|
145
|
+
* @forresty
|
145
146
|
|
data/lib/fastimage.rb
CHANGED
@@ -63,9 +63,9 @@ class FastImage
|
|
63
63
|
class CannotParseImage < FastImageException # :nodoc:
|
64
64
|
end
|
65
65
|
|
66
|
-
DefaultTimeout = 2
|
66
|
+
DefaultTimeout = 2 unless const_defined?(:DefaultTimeout)
|
67
67
|
|
68
|
-
LocalFileChunkSize = 256
|
68
|
+
LocalFileChunkSize = 256 unless const_defined?(:LocalFileChunkSize)
|
69
69
|
|
70
70
|
# Returns an array containing the width and height of the image.
|
71
71
|
# It will return nil if the image could not be fetched, or if the image type was not recognised.
|
@@ -160,6 +160,7 @@ class FastImage
|
|
160
160
|
def initialize(uri, options={})
|
161
161
|
@property = options[:type_only] ? :type : :size
|
162
162
|
@timeout = options[:timeout] || DefaultTimeout
|
163
|
+
@proxy_url = options[:proxy]
|
163
164
|
@uri = uri
|
164
165
|
|
165
166
|
if uri.respond_to?(:read)
|
@@ -250,7 +251,7 @@ class FastImage
|
|
250
251
|
end
|
251
252
|
end
|
252
253
|
end
|
253
|
-
|
254
|
+
|
254
255
|
parse_packets FiberStream.new(read_fiber)
|
255
256
|
|
256
257
|
break # needed to actively quit out of the fetch
|
@@ -259,7 +260,11 @@ class FastImage
|
|
259
260
|
|
260
261
|
def proxy_uri
|
261
262
|
begin
|
262
|
-
|
263
|
+
if @proxy_url
|
264
|
+
proxy = Addressable::URI.parse(@proxy_url)
|
265
|
+
else
|
266
|
+
proxy = ENV['http_proxy'] && ENV['http_proxy'] != "" ? Addressable::URI.parse(ENV['http_proxy']) : nil
|
267
|
+
end
|
263
268
|
rescue Addressable::URI::InvalidURIError
|
264
269
|
proxy = nil
|
265
270
|
end
|
@@ -404,7 +409,7 @@ class FastImage
|
|
404
409
|
:webp
|
405
410
|
else
|
406
411
|
raise UnknownImageType
|
407
|
-
end
|
412
|
+
end
|
408
413
|
else
|
409
414
|
raise UnknownImageType
|
410
415
|
end
|
@@ -493,18 +498,18 @@ class FastImage
|
|
493
498
|
nil
|
494
499
|
end
|
495
500
|
end
|
496
|
-
|
501
|
+
|
497
502
|
def parse_size_vp8
|
498
503
|
w, h = @stream.read(10).unpack("@6vv")
|
499
504
|
[w & 0x3fff, h & 0x3fff]
|
500
505
|
end
|
501
|
-
|
506
|
+
|
502
507
|
def parse_size_vp8l
|
503
508
|
@stream.read(1) # 0x2f
|
504
509
|
b1, b2, b3, b4 = @stream.read(4).bytes.to_a
|
505
510
|
[1 + (((b2 & 0x3f) << 8) | b1), 1 + (((b4 & 0xF) << 10) | (b3 << 2) | ((b2 & 0xC0) >> 6))]
|
506
511
|
end
|
507
|
-
|
512
|
+
|
508
513
|
def parse_size_vp8x
|
509
514
|
flags = @stream.read(4).unpack("C")[0]
|
510
515
|
b1, b2, b3, b4, b5, b6 = @stream.read(6).unpack("CCCCCC")
|
@@ -514,7 +519,7 @@ class FastImage
|
|
514
519
|
# parse exif for orientation
|
515
520
|
# TODO: find or create test images for this
|
516
521
|
end
|
517
|
-
|
522
|
+
|
518
523
|
return [width, height]
|
519
524
|
end
|
520
525
|
|
data/lib/fastimage/fbr.rb
CHANGED
data/test/test.rb
CHANGED
@@ -60,9 +60,9 @@ BadFixtures.each do |fn|
|
|
60
60
|
end
|
61
61
|
|
62
62
|
GzipTestImg = "gzipped.jpg"
|
63
|
-
FakeWeb.register_uri(:get, "#{TestUrl}#{GzipTestImg}", :body => File.join(FixturePath, GzipTestImg), :content_encoding => "gzip")
|
63
|
+
FakeWeb.register_uri(:get, "#{TestUrl}#{GzipTestImg}", :body => File.join(FixturePath, GzipTestImg), :content_encoding => "gzip")
|
64
64
|
GzipTestImgTruncated = "truncated_gzipped.jpg"
|
65
|
-
FakeWeb.register_uri(:get, "#{TestUrl}#{GzipTestImgTruncated}", :body => File.join(FixturePath, GzipTestImgTruncated), :content_encoding => "gzip")
|
65
|
+
FakeWeb.register_uri(:get, "#{TestUrl}#{GzipTestImgTruncated}", :body => File.join(FixturePath, GzipTestImgTruncated), :content_encoding => "gzip")
|
66
66
|
GzipTestImgSize = [970, 450]
|
67
67
|
|
68
68
|
class FastImageTest < Test::Unit::TestCase
|
@@ -245,11 +245,18 @@ class FastImageTest < Test::Unit::TestCase
|
|
245
245
|
assert_equal actual_size, size
|
246
246
|
end
|
247
247
|
|
248
|
+
def test_should_fetch_via_proxy_option
|
249
|
+
file = "test.gif"
|
250
|
+
actual_size = GoodFixtures[file][1]
|
251
|
+
size = FastImage.size(TestUrl + file, :proxy => "http://my.proxy.host:8080")
|
252
|
+
assert_equal actual_size, size
|
253
|
+
end
|
254
|
+
|
248
255
|
def test_should_handle_https_image
|
249
256
|
size = FastImage.size(HTTPSImage)
|
250
257
|
assert_equal HTTPSImageInfo[1], size
|
251
258
|
end
|
252
|
-
|
259
|
+
|
253
260
|
require 'pathname'
|
254
261
|
def test_should_handle_pathname
|
255
262
|
# bad.jpg does not have the size info in the first 256 bytes
|
@@ -258,7 +265,7 @@ class FastImageTest < Test::Unit::TestCase
|
|
258
265
|
path = Pathname.new(File.join(FixturePath, "bad.jpg"))
|
259
266
|
assert_equal([500,500], FastImage.size(path))
|
260
267
|
end
|
261
|
-
|
268
|
+
|
262
269
|
def test_should_report_type_and_size_correctly_for_stringios
|
263
270
|
GoodFixtures.each do |fn, info|
|
264
271
|
string = File.read(File.join(FixturePath, fn))
|
@@ -267,7 +274,7 @@ class FastImageTest < Test::Unit::TestCase
|
|
267
274
|
assert_equal info[1], FastImage.size(stringio)
|
268
275
|
end
|
269
276
|
end
|
270
|
-
|
277
|
+
|
271
278
|
def test_gzipped_file
|
272
279
|
url = "http://example.nowhere/#{GzipTestImg}"
|
273
280
|
assert_equal([970, 450], FastImage.size(url))
|
@@ -279,7 +286,7 @@ class FastImageTest < Test::Unit::TestCase
|
|
279
286
|
FastImage.size(url, :raise_on_failure => true)
|
280
287
|
end
|
281
288
|
end
|
282
|
-
|
289
|
+
|
283
290
|
def test_cant_access_shell
|
284
291
|
url = "|echo>shell_test"
|
285
292
|
%x{rm -f shell_test}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastimage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Sykes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -72,6 +72,20 @@ dependencies:
|
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: test-unit
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
75
89
|
description: FastImage finds the size or type of an image given its uri by fetching
|
76
90
|
as little as needed.
|
77
91
|
email: sdsykes@gmail.com
|
@@ -130,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
144
|
version: '0'
|
131
145
|
requirements: []
|
132
146
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
147
|
+
rubygems_version: 2.4.5
|
134
148
|
signing_key:
|
135
149
|
specification_version: 4
|
136
150
|
summary: FastImage - Image info fast
|