url_fetcher 1.1.5 → 1.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 32494b5b29e118d6dffacb4b123e90aa1da50795
4
- data.tar.gz: 19981639b3c1206540c1f584d3e34537e64d5170
3
+ metadata.gz: 8523decc234223ef23d0ad21e091b8e02b10697d
4
+ data.tar.gz: 54d317200ebbd7921eef0def888b0932a23a2f2f
5
5
  SHA512:
6
- metadata.gz: 15b7108d62ece1765797169e2aa776c7fbbe0656b9ef693a1579dc7b8979e29d3b4375e0d56b9b1407d4a3fa9cd55cc66d138a173a192be7e7f8501aa04bb02a
7
- data.tar.gz: 28a1b5adc3962cd66b1b5e4b39f6c96513f4ad7d01fc814777a1567023daab9ee8fdd16365041e7bb357a2e128a41347132e2e1fed7b33198a72af43becedd1b
6
+ metadata.gz: 82a6284bcd4a7096f8828b950431adb7940d2c9c2ad1b8e932ce16bf912ba4dac5fde62065c93ba4045028b97f8b8415f6fccb5de8fdebd0a6ebec56c26e5674
7
+ data.tar.gz: ad131782b83ac319e3819139c278f8f705c4c9a8f36705a1418aa494d54669521a2c64bde94dab23fa2990750504d3b4844d4e6714e55d2dbef494ad5c804e44
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.5
1
+ 1.1.6
data/lib/url_fetcher.rb CHANGED
@@ -1,8 +1,8 @@
1
- require "url_fetcher/errors"
2
1
  require "net/http"
3
2
  require "openssl"
4
- require "open-uri"
3
+ require "addressable/uri"
5
4
  require "tempfile"
5
+ require "url_fetcher/errors"
6
6
 
7
7
  # This class will fetch the contents of a URL and store them in a Tempfile. The
8
8
  # results are exposed as a stream so you don't need to read potentialy huge responses
@@ -22,6 +22,7 @@ class UrlFetcher
22
22
  # * :max_size (10 megabytes)- The maximum size in bytes that should be fetched.
23
23
  # * :open_timeout (10) - Time in seconds to wait for a connection to be established.
24
24
  # * :read_timeout (20) - Time in seconds to wait for reading the HTTP response.
25
+ # * :headers ("Accept" => "*")- Hash of headers to send with request.
25
26
  def initialize(url, options = {}, &redirect_hook)
26
27
  @url = url
27
28
  @redirect_hook = redirect_hook
@@ -94,6 +95,17 @@ class UrlFetcher
94
95
  Net::HTTP::Get.new(uri.request_uri)
95
96
  end
96
97
 
98
+ if options[:headers]
99
+ options[:headers].each do |name, value|
100
+ name = name.to_s
101
+ values = Array(value)
102
+ request[name] = values[0].to_s
103
+ values[1, values.length].each do |val|
104
+ request.add_field(name, val.to_s)
105
+ end
106
+ end
107
+ end
108
+
97
109
  response = http.request(request) do |resp|
98
110
  unless resp.is_a?(Net::HTTPSuccess) || resp.is_a?(Net::HTTPRedirection)
99
111
  resp.value # Raises an appropriate HTTP error
@@ -43,6 +43,12 @@ describe UrlFetcher do
43
43
  expect(url_fetcher.header("content-length")).to eql("5")
44
44
  expect(url_fetcher.body.read).to eql("Hello")
45
45
  end
46
+
47
+ it "should send custom headers" do
48
+ WebMock.stub_request(:get, "https://example.com/test").with(:headers => {"Accept" => ["image/jpeg", "image/gif"]}).to_return(:status => 200, :body => "Hello", :headers => {"Content-Length" => 5})
49
+ url_fetcher = UrlFetcher.new("https://example.com/test", :headers => {"Accept" => ["image/jpeg", "image/gif"]})
50
+ expect(url_fetcher).to be_success
51
+ end
46
52
 
47
53
  it "should honor redirects" do
48
54
  WebMock.stub_request(:get, "http://example.com/test1").to_return(:status => 301, :headers => {"Location" => "http://example.com/test2"})
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: url_fetcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - weheartit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-18 00:00:00.000000000 Z
11
+ date: 2016-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable