directlink 0.0.4.7 → 0.0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.bashrc +3 -2
- data/bin/directlink +1 -1
- data/directlink.gemspec +2 -2
- data/lib/directlink.rb +53 -28
- data/test.rb +12 -12
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b436120b4acd62ba55de62824aff4c9e04490104
|
4
|
+
data.tar.gz: 6db0db31513073100210447ba2f9cef30db54d96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f20abac6d10467eca10023a2e43df7d421e1c9ebd5666fac0d42413737817858cc5a3fca70ae1833bdf64a6266c225d36bddc3a09c97c00a551dfc49a2d98d1
|
7
|
+
data.tar.gz: b1f9d918c60bd79e16cb944cd55b6196eac4ab1bd0ef9faab3905ce781ebd93870e743fe9fd88abcba96b2b562a29006d3f8522f8def6d5f70bde9fa3edc6ead
|
data/.bashrc
CHANGED
@@ -1,3 +1,4 @@
|
|
1
1
|
source api_tokens_for_travis.sh
|
2
|
-
echo 'to test: ruby test.rb'
|
3
|
-
echo 'to test:
|
2
|
+
echo 'to test: ruby -I../nethttputils/lib -I./lib test.rb'
|
3
|
+
echo 'to test: ruby -I../nethttputils/lib -I./lib ./bin/directlink --debug ...'
|
4
|
+
echo 'or: bundle exec ./bin/directlink --debug ...'
|
data/bin/directlink
CHANGED
@@ -43,7 +43,7 @@ if github
|
|
43
43
|
else
|
44
44
|
require "directlink"
|
45
45
|
end
|
46
|
-
NetHTTPUtils.logger.level = debug ? Logger::INFO : Logger::FATAL
|
46
|
+
NetHTTPUtils.logger.level = debug ? Logger::INFO : Logger::FATAL unless ENV.include? "LOGLEVEL_NetHTTPUtils"
|
47
47
|
# TODO --timeout=
|
48
48
|
DirectLink.silent = !debug
|
49
49
|
abort "usage: directlink [--debug] [--json] [--github] <link1> <link2> <link3> ...\n#{
|
data/directlink.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "directlink"
|
3
|
-
spec.version = "0.0.4.
|
3
|
+
spec.version = "0.0.4.8"
|
4
4
|
spec.summary = "converts any kind of image hyperlink to direct link, type of image and its resolution"
|
5
5
|
|
6
6
|
spec.author = "Victor Maslov aka Nakilon"
|
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
|
12
12
|
spec.add_dependency "fastimage", "~>2.1.3"
|
13
13
|
spec.add_dependency "nokogiri"
|
14
|
-
spec.add_dependency "reddit_bot", "~>1.
|
14
|
+
spec.add_dependency "reddit_bot", "~>1.7.0"
|
15
15
|
spec.add_dependency "kramdown"
|
16
16
|
spec.add_dependency "addressable"
|
17
17
|
spec.add_development_dependency "minitest"
|
data/lib/directlink.rb
CHANGED
@@ -69,7 +69,8 @@ module DirectLink
|
|
69
69
|
/\Ahttps:\/\/lh3\.googleusercontent\.com\/-[a-zA-Z0-9]{11}\/W[a-zA-Z0-9]{9}I\/AAAAAAAA[a-zA-Z_]{3}\/[a-zA-Z0-9]{32}gCJoC\/s0\/[^\/]+\z/,
|
70
70
|
/\Ahttps:\/\/lh3\.googleusercontent\.com\/-[a-zA-Z0-9]{11}\/[a-zA-Z0-9]{10}I\/AAAAAAA[a-zA-Z0-9]{4}\/[a-zA-Z0-9_-]{32}wCJoC\/s0\/[^\/]+\z/,
|
71
71
|
/\Ahttps:\/\/lh3\.googleusercontent\.com\/-[a-zA-Z0-9]{11}\/[a-zA-Z0-9]{10}I\/AAAAAAA[A-Z]{4}\/[a-zA-Z0-9-]{32}gCJoC\/s0\/[^\/]+\z/,
|
72
|
-
/\Ahttps:\/\/lh3\.googleusercontent\.com\/-[a-zA-Z0-9-]{11}\/[a-zA-Z0-9-]{10}I\/AAAAAAA[a-zA-Z]{4}\/[a-zA-Z0-9_-]{32}ACJoC\/s0\/[^\/]+\z
|
72
|
+
/\Ahttps:\/\/lh3\.googleusercontent\.com\/-[a-zA-Z0-9-]{11}\/[a-zA-Z0-9-]{10}I\/AAAAAAA[a-zA-Z]{4}\/[a-zA-Z0-9_-]{32}ACJoC\/s0\/[^\/]+\z/,
|
73
|
+
/\Ahttps:\/\/lh3\.googleusercontent\.com\/-[a-zA-Z0-9]{11}\/[a-zA-Z0-9-]{10}I\/AAAAAAA[a-zA-Z-]{4}\/[a-zA-Z0-9_]{32}gCJoC\/s0\/[^\/]+\z/
|
73
74
|
src
|
74
75
|
# Google Plus userpic
|
75
76
|
when /\A(https:\/\/lh3\.googleusercontent\.com\/-[a-zA-Z0-9-]{11}\/AAAAAAAAAAI\/AAAAAAAA[a-zA-Z0-9]{3}\/[a-zA-Z0-9_-]{11}\/)s\d\d-p(?:-k)?-rw-no(\/photo\.jpg)\z/
|
@@ -107,7 +108,7 @@ module DirectLink
|
|
107
108
|
t *= 2
|
108
109
|
retry
|
109
110
|
end
|
110
|
-
raise ErrorAssert.new "unexpected http error for #{url}"
|
111
|
+
raise ErrorAssert.new "unexpected http error #{e.code} for #{url}"
|
111
112
|
end
|
112
113
|
end
|
113
114
|
case link
|
@@ -129,11 +130,12 @@ module DirectLink
|
|
129
130
|
# one day single-video item should hit this but somehow it didn't yet
|
130
131
|
raise ErrorAssert.new "unknown data format #{data.inspect} for #{link}"
|
131
132
|
end
|
132
|
-
when /\Ahttps?:\/\/(?:(?:i|m|www)\.)?imgur\.com\/([a-zA-Z0-9]{7})(?:\.(?:gifv|jpg|png))?\z/,
|
133
|
+
when /\Ahttps?:\/\/(?:(?:i|m|www)\.)?imgur\.com\/([a-zA-Z0-9]{7,8})(?:\.(?:gifv|jpg|png))?\z/,
|
133
134
|
/\Ahttps?:\/\/(?:(?:i|m|www)\.)?imgur\.com\/([a-zA-Z0-9]{5})\.mp4\z/,
|
134
135
|
/\Ahttps?:\/\/imgur\.com\/([a-zA-Z0-9]{5}(?:[a-zA-Z0-9]{2})?)\z/,
|
135
136
|
/\Ahttps?:\/\/imgur\.com\/([a-zA-Z0-9]{7})(?:\?\S+)?\z/,
|
136
|
-
/\Ahttps?:\/\/imgur\.com\/r\/[0-9_a-z]+\/([a-zA-Z0-9]{7})\z
|
137
|
+
/\Ahttps?:\/\/imgur\.com\/r\/[0-9_a-z]+\/([a-zA-Z0-9]{7})\z/,
|
138
|
+
/\Ahttps?:\/\/api\.imgur\.com\/3\/image\/([a-zA-Z0-9]{7})\/0\.json\z/
|
137
139
|
json = request_data["https://api.imgur.com/3/image/#{$1}/0.json"]
|
138
140
|
[ JSON.load(json)["data"] ]
|
139
141
|
else
|
@@ -150,8 +152,21 @@ module DirectLink
|
|
150
152
|
|
151
153
|
def self._500px link
|
152
154
|
raise ErrorBadLink.new link unless %r{\Ahttps://500px\.com/photo/(?<id>[^/]+)/[^/]+\z} =~ link
|
153
|
-
|
154
|
-
|
155
|
+
require "nokogiri"
|
156
|
+
resp = NetHTTPUtils.request_data link
|
157
|
+
f = lambda do |form|
|
158
|
+
JSON.load(
|
159
|
+
NetHTTPUtils.request_data "https://api.500px.com/v1/photos",
|
160
|
+
form: form,
|
161
|
+
header: {
|
162
|
+
"Cookie" => resp.instance_variable_get(:@last_response).to_hash.fetch("set-cookie").join(?\s),
|
163
|
+
"X-CSRF-Token" => Nokogiri::HTML(resp).at_css("[name=csrf-token]")[:content]
|
164
|
+
}
|
165
|
+
).fetch("photos").values.first
|
166
|
+
end
|
167
|
+
w, h = f[{"ids" => id }].values_at("width", "height")
|
168
|
+
# we need the above request to find the real resolution otherwise the "url" in the next request will be wrong
|
169
|
+
u, f = f[{"ids" => id, "image_size[]" => w}].fetch("images").first.values_at("url", "format")
|
155
170
|
[w, h, u, f]
|
156
171
|
end
|
157
172
|
|
@@ -247,6 +262,7 @@ end
|
|
247
262
|
require "fastimage"
|
248
263
|
|
249
264
|
def DirectLink link, max_redirect_resolving_retry_delay = nil, giveup = false
|
265
|
+
ArgumentError.new("link should be a <String>, not <#{link.class}>") unless link.is_a? String
|
250
266
|
begin
|
251
267
|
URI link
|
252
268
|
rescue URI::InvalidURIError
|
@@ -273,17 +289,25 @@ def DirectLink link, max_redirect_resolving_retry_delay = nil, giveup = false
|
|
273
289
|
# > NetHTTPUtils.logger.level = Logger::DEBUG
|
274
290
|
# > NetHTTPUtils.request_data "http://www.aeronautica.difesa.it/organizzazione/REPARTI/divolo/PublishingImages/6%C2%B0%20Stormo/2013-decollo%20al%20tramonto%20REX%201280.jpg",
|
275
291
|
# max_read_retry_delay: 5, timeout: 5
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
292
|
+
|
293
|
+
begin
|
294
|
+
head = NetHTTPUtils.request_data link, :head, header: {
|
295
|
+
"User-Agent" => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"
|
296
|
+
}, **(max_redirect_resolving_retry_delay ? {timeout: max_redirect_resolving_retry_delay, max_start_http_retry_delay: max_redirect_resolving_retry_delay, max_read_retry_delay: max_redirect_resolving_retry_delay} : {})
|
297
|
+
rescue Net::ReadTimeout
|
298
|
+
rescue NetHTTPUtils::Error => e
|
299
|
+
raise unless e.code == 401
|
300
|
+
else
|
301
|
+
link = case head.instance_variable_get(:@last_response).code
|
302
|
+
when "200" ; link
|
303
|
+
when "302"
|
304
|
+
URI( head.instance_variable_get(:@last_response).to_hash.fetch("location").tap do |a|
|
305
|
+
raise DirectLink::ErrorAssert.new "unexpected size of locations after redirect" unless a.size == 1
|
306
|
+
end.first )
|
307
|
+
else ; raise NetHTTPUtils::Error.new "", (head.instance_variable_get(:@last_response).code || fail).to_i
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
287
311
|
# why do we resolve redirects before trying the known adapters?
|
288
312
|
# because they can be hidden behind URL shorteners
|
289
313
|
# also it can resolve NetHTTPUtils::Error(404) before trying the adapter
|
@@ -297,10 +321,7 @@ def DirectLink link, max_redirect_resolving_retry_delay = nil, giveup = false
|
|
297
321
|
# `DirectLink.imgur` return value is always an Array
|
298
322
|
return imgur.size == 1 ? imgur.first : imgur
|
299
323
|
rescue DirectLink::ErrorMissingEnvVar
|
300
|
-
end if %w{
|
301
|
-
%w{ i imgur com } == URI(link).host.split(?.).last(3) ||
|
302
|
-
%w{ m imgur com } == URI(link).host.split(?.).last(3) ||
|
303
|
-
%w{ www imgur com } == URI(link).host.split(?.).last(3)
|
324
|
+
end if %w{ imgur com } == URI(link).host.split(?.).last(2)
|
304
325
|
|
305
326
|
if %w{ 500px com } == URI(link).host.split(?.).last(2)
|
306
327
|
w, h, u, t = DirectLink._500px(link)
|
@@ -331,7 +352,7 @@ def DirectLink link, max_redirect_resolving_retry_delay = nil, giveup = false
|
|
331
352
|
f = ->_{ _.type == :a ? _.attr["href"] : _.children.flat_map(&f) }
|
332
353
|
require "kramdown"
|
333
354
|
return f[Kramdown::Document.new(u).root].map do |sublink|
|
334
|
-
DirectLink URI.join(link, sublink), max_redirect_resolving_retry_delay, giveup
|
355
|
+
DirectLink URI.join(link, sublink).to_s, max_redirect_resolving_retry_delay, giveup
|
335
356
|
end
|
336
357
|
end
|
337
358
|
return struct.new *u.values_at(*%w{ fallback_url width height }), "video" if u.is_a? Hash
|
@@ -340,21 +361,25 @@ def DirectLink link, max_redirect_resolving_retry_delay = nil, giveup = false
|
|
340
361
|
end if %w{ reddit com } == URI(link).host.split(?.).last(2) ||
|
341
362
|
%w{ redd it } == URI(link).host.split(?.)
|
342
363
|
|
343
|
-
|
344
364
|
begin
|
345
|
-
f = FastImage.new(link, raise_on_failure: true, http_header: {"User-Agent" => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"})
|
365
|
+
f = FastImage.new(link, raise_on_failure: true, timeout: 5, http_header: {"User-Agent" => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"})
|
346
366
|
rescue FastImage::UnknownImageType
|
347
367
|
raise if giveup
|
348
368
|
require "nokogiri"
|
349
|
-
|
369
|
+
head = NetHTTPUtils.request_data link, :head, header: {"User-Agent" => "Mozilla"}
|
370
|
+
case head.instance_variable_get(:@last_response).content_type
|
371
|
+
when "text/html" ; nil
|
372
|
+
else ; raise
|
373
|
+
end
|
374
|
+
html = Nokogiri::HTML NetHTTPUtils.request_data link, header: {"User-Agent" => "Mozilla"}
|
350
375
|
h = {} # TODO: maybe move it outside because of possible img[:src] recursion?...
|
351
376
|
l = lambda do |node, s = []|
|
352
377
|
node.element_children.flat_map do |child|
|
353
378
|
next l[child, s + [child.node_name]] unless "img" == child.node_name
|
354
379
|
begin
|
355
|
-
[[s, (h[child[:src]] = h[child[:src]] || DirectLink(URI.join(link, child[:src]), nil, true))]] # ... or wait, do we giveup?
|
380
|
+
[[s, (h[child[:src]] = h[child[:src]] || DirectLink(URI.join(link, child[:src]).to_s, nil, true))]] # ... or wait, do we giveup?
|
356
381
|
rescue => e
|
357
|
-
DirectLink.logger.error e
|
382
|
+
DirectLink.logger.error "#{e} (from no giveup)"
|
358
383
|
[]
|
359
384
|
end
|
360
385
|
end
|
@@ -367,6 +392,6 @@ def DirectLink link, max_redirect_resolving_retry_delay = nil, giveup = false
|
|
367
392
|
else
|
368
393
|
# TODO: maybe move this to right before `rescue` line
|
369
394
|
w, h = f.size
|
370
|
-
struct.new
|
395
|
+
struct.new f.instance_variable_get(:@parsed_uri).to_s, w, h, f.type
|
371
396
|
end
|
372
397
|
end
|
data/test.rb
CHANGED
@@ -132,6 +132,7 @@ describe DirectLink do
|
|
132
132
|
https://lh3.googleusercontent.com/-VXUjuSl-dZY/WvK340_E9uI/AAAAAAAAVlg/HqKf1LgUcPUJNrLxHebCMuHhpDRq36_bQCJoC/s0/gplus248254159.jpg
|
133
133
|
https://lh3.googleusercontent.com/-NlZRwcX_Lj8/WvQTijeAfJI/AAAAAAABNyo/jgoDgbZdTvsnLOGmmYlXMr2jL66ieZV4QCJoC/s0/67u8iii.png
|
134
134
|
https://lh3.googleusercontent.com/-8baBz80pf8Y/Wu8KG5lyGhI/AAAAAAACSyU/s3hasZzObK0VlntA1EBj-WBrTRagzRnLQCJoC/s0/%25D0%2592%25D0%25B5%25D1%2581%25D0%25B5%25D0%25BD%25D0%25BD%25D0%25B8%25D0%25B5%2B%25D0%25BA%25D1%2580%25D0%25B0%25D1%2581%25D0%25B0%25D0%25B2%25D1%2586%25D1%258B.JPG
|
135
|
+
https://lh3.googleusercontent.com/-BBjhu17YIgg/W-gnZNaZeMI/AAAAAAABA-k/UMlSbNuE0DsSEPV8u3yf_6i2S5H9vFoBgCJoC/s0/gplus320347186.png
|
135
136
|
}.each_with_index do |link, i|
|
136
137
|
it "already high res image ##{i + 1}" do
|
137
138
|
assert DirectLink.google link
|
@@ -226,11 +227,10 @@ describe DirectLink do
|
|
226
227
|
end
|
227
228
|
end
|
228
229
|
it "does not throw 400 after a successfull retry" do
|
229
|
-
f =
|
230
|
+
f = 0
|
230
231
|
m = NetHTTPUtils.method :request_data
|
231
232
|
NetHTTPUtils.stub :request_data, lambda{ |*args|
|
232
|
-
f
|
233
|
-
raise NetHTTPUtils::Error.new "", 400 if f
|
233
|
+
raise NetHTTPUtils::Error.new "", 400 if 1 == f += 1
|
234
234
|
m.call *args
|
235
235
|
} do
|
236
236
|
assert_equal [["https://i.imgur.com/BLCesav.jpg", 1000, 1500, "image/jpeg"]],
|
@@ -432,7 +432,7 @@ describe DirectLink do
|
|
432
432
|
it "Reddit correctly parses out id when no token provided" do
|
433
433
|
t = ENV.delete "REDDIT_SECRETS"
|
434
434
|
FastImage.stub :new, lambda{ |link, *|
|
435
|
-
assert_equal "https://v.redd.it/2tyovczka8m11/DASH_4_8_M", link
|
435
|
+
assert_equal "https://v.redd.it/2tyovczka8m11/DASH_4_8_M?source=fallback", link
|
436
436
|
throw :_
|
437
437
|
} do
|
438
438
|
begin
|
@@ -535,7 +535,7 @@ describe DirectLink do
|
|
535
535
|
].each do |exception|
|
536
536
|
it "raises #{exception} from the redirect resolving stage" do
|
537
537
|
assert_raises exception do
|
538
|
-
NetHTTPUtils.stub :
|
538
|
+
NetHTTPUtils.stub :request_data, ->*{ raise exception.new } do
|
539
539
|
DirectLink "http://example.com/404"
|
540
540
|
end
|
541
541
|
end
|
@@ -543,7 +543,7 @@ describe DirectLink do
|
|
543
543
|
end
|
544
544
|
it "raises Net::OpenTimeout -- server side issues can happen (not related to User Agent)" do
|
545
545
|
assert_raises Net::OpenTimeout do
|
546
|
-
NetHTTPUtils.stub :
|
546
|
+
NetHTTPUtils.stub :request_data, ->*{ raise Net::OpenTimeout.new } do
|
547
547
|
DirectLink "http://example.com/404"
|
548
548
|
end
|
549
549
|
end
|
@@ -569,7 +569,7 @@ describe DirectLink do
|
|
569
569
|
|
570
570
|
describe "other domains tests" do
|
571
571
|
[
|
572
|
-
["http://www.aeronautica.difesa.it/organizzazione/REPARTI/divolo/PublishingImages/6%C2%B0%20Stormo/2013-decollo%20al%20tramonto%20REX%201280.jpg", ["http://www.aeronautica.difesa.it/organizzazione/REPARTI/divolo/PublishingImages/6%C2%B0%20Stormo/2013-decollo%20al%20tramonto%20REX%201280.jpg", 1280, 853, :jpeg]],
|
572
|
+
["http://www.aeronautica.difesa.it/organizzazione/REPARTI/divolo/PublishingImages/6%C2%B0%20Stormo/2013-decollo%20al%20tramonto%20REX%201280.jpg", ["http://www.aeronautica.difesa.it/organizzazione/REPARTI/divolo/PublishingImages/6%C2%B0%20Stormo/2013-decollo%20al%20tramonto%20REX%201280.jpg", 1280, 853, :jpeg], nil, 1],
|
573
573
|
["http://minus.com/lkP3hgRJd9npi", SocketError, /nodename nor servname provided, or not known|No address associated with hostname/, 0],
|
574
574
|
["http://www.cutehalloweencostumeideas.org/wp-content/uploads/2017/10/Niagara-Falls_04.jpg", SocketError, /nodename nor servname provided, or not known|Name or service not known/, 0],
|
575
575
|
].each_with_index do |(input, expectation, message_string_or_regex, max_redirect_resolving_retry_delay), i|
|
@@ -602,7 +602,7 @@ describe DirectLink do
|
|
602
602
|
["http://redd.it/997he7", DirectLink::ErrorBadLink, true],
|
603
603
|
["http://redd.it/997he7", 1], # currently only links are parsed
|
604
604
|
].each_with_index do |(input, expectation, giveup), i|
|
605
|
-
it "##{i + 1} (#{URI(input).host})" do # to match with minitest `-n` run flag
|
605
|
+
it "##{i + 1} (#{URI(input).host}) (giveup=#{!!giveup})" do # to match with minitest `-n` run flag
|
606
606
|
ti = ENV.delete "IMGUR_CLIENT_ID"
|
607
607
|
tr = ENV.delete "REDDIT_SECRETS"
|
608
608
|
begin
|
@@ -677,7 +677,7 @@ describe DirectLink do
|
|
677
677
|
# TODO: a test that it appends the `exception.cause`
|
678
678
|
].each_with_index do |(expected_exit_code, link, expected_output, unset), i| # TODO: unset is not used anymore or I have to go sleep?
|
679
679
|
it "##{i + 1}" do
|
680
|
-
string, status = Open3.capture2e "export #{File.read("api_tokens_for_travis.sh").gsub(/\n?export/, ?\s).strip}#{unset} && RUBYOPT='-rbundler/setup' ./bin/directlink #{link}"
|
680
|
+
string, status = Open3.capture2e "export #{File.read("api_tokens_for_travis.sh").gsub(/\n?export/, ?\s).strip}#{unset} && RUBYOPT='-rbundler/setup #{$-I.map{ |i| "-I #{i}" }.join " "}' ./bin/directlink #{link}"
|
681
681
|
assert_equal [expected_exit_code, "#{expected_output}\n"], [status.exitstatus, string], "for #{link}"
|
682
682
|
end
|
683
683
|
end
|
@@ -688,7 +688,7 @@ describe DirectLink do
|
|
688
688
|
[
|
689
689
|
["<= #{valid_imgur_image_url1}
|
690
690
|
=> https://i.imgur.com/QpOBvRY.png
|
691
|
-
|
691
|
+
png 460x460
|
692
692
|
<= #{valid_imgur_image_url2}
|
693
693
|
=> https://i.imgur.com/QpOBvRY.png
|
694
694
|
image/png 460x460
|
@@ -700,7 +700,7 @@ describe DirectLink do
|
|
700
700
|
"url": "https://i.imgur.com/QpOBvRY.png",
|
701
701
|
"width": 460,
|
702
702
|
"height": 460,
|
703
|
-
"type": "
|
703
|
+
"type": "png"
|
704
704
|
},
|
705
705
|
[
|
706
706
|
{
|
@@ -727,7 +727,7 @@ describe DirectLink do
|
|
727
727
|
|
728
728
|
it "reddit_bot gem logger does not flood STDOUT" do
|
729
729
|
string, status = Open3.capture2e "RUBYOPT='-rbundler/setup' ./bin/directlink http://redd.it/997he7"
|
730
|
-
assert_equal "<= http://redd.it/997he7\n=> https://i.imgur.com/QpOBvRY.png\n
|
730
|
+
assert_equal "<= http://redd.it/997he7\n=> https://i.imgur.com/QpOBvRY.png\n png 460x460\n", string
|
731
731
|
end
|
732
732
|
|
733
733
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: directlink
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.4.
|
4
|
+
version: 0.0.4.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Maslov aka Nakilon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fastimage
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.7.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.7.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: kramdown
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|