maremma 3.1 → 3.1.1

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: 0fa8efffa613ac1806ff563a3fae7a430976baa9
4
- data.tar.gz: 71f604839289779969077528a757a0cc1aa8f175
3
+ metadata.gz: ab2e7075facc4988175f758e582800b7479f3554
4
+ data.tar.gz: 99b3bf7a5d806867588e8e3384a003c2233ded50
5
5
  SHA512:
6
- metadata.gz: a391693917452149062b1f5053cde47fa387bf552667a8dd352f43b3fe2d6f283f544d1fc734ec9f6c2bb127ed1a3ff162aa441e966ad7f5bf5416e13b973246
7
- data.tar.gz: 9bf52ef7911ef0994806ab8d483f6d7a670cc767d3d17e0af940929004305ef0831820a66b9969a3dc5e6982a0f81b523c5fd1b612cf951e0e7909d5b656da0e
6
+ metadata.gz: b98eb05622984eab0c819f0650341127f93b1b58b83ccadaf121af8535227a54b6924a364e8e36d52bd1dce726d5d4307c2481644c8ac06f9ad2f9dcc697665a
7
+ data.tar.gz: 130bdf89a39c65dec55c9c3b48fd5ed8b8f9f10ac8ca63662b9ae44e72d152aaca3e7a6a7f54ba95afea47cc5ae03f6c8caa5a4e5ed7c0a6bd1599962cbca3a2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## v.3.1.1 (January 2, 2017)
2
+
3
+ [maremma 3.1.1](https://github.com/datacite/maremma/releases/tag/v.3.1.1) was released on January 2, 2017:
4
+
5
+ * added option to disable redirects by setting `limit` to 0.
6
+ * return status code for errors
7
+
1
8
  ## v.3.1 (December 10, 2016)
2
9
 
3
10
  [maremma 3.1](https://github.com/datacite/maremma/releases/tag/v.3.1) was released on December 10, 2016:
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- maremma (3.1)
4
+ maremma (3.1.1)
5
5
  activesupport (~> 4.2, >= 4.2.5)
6
6
  builder (~> 3.2, >= 3.2.2)
7
7
  excon (~> 0.45.0)
@@ -1,3 +1,3 @@
1
1
  module Maremma
2
- VERSION = "3.1"
2
+ VERSION = "3.1.1"
3
3
  end
data/lib/maremma.rb CHANGED
@@ -34,7 +34,9 @@ module Maremma
34
34
  headers: response.headers,
35
35
  status: response.status)
36
36
  rescue *NETWORKABLE_EXCEPTIONS => error
37
- OpenStruct.new(body: rescue_faraday_error(error))
37
+ error_response = rescue_faraday_error(error)
38
+ OpenStruct.new(body: error_response,
39
+ status: error_response.fetch("errors", {}).first.fetch("status", 400))
38
40
  end
39
41
 
40
42
  def self.put(url, options={})
@@ -52,7 +54,9 @@ module Maremma
52
54
  headers: response.headers,
53
55
  status: response.status)
54
56
  rescue *NETWORKABLE_EXCEPTIONS => error
55
- OpenStruct.new(body: rescue_faraday_error(error))
57
+ error_response = rescue_faraday_error(error)
58
+ OpenStruct.new(body: error_response,
59
+ status: error_response.fetch("errors", {}).first.fetch("status", 400))
56
60
  end
57
61
 
58
62
  def self.delete(url, options={})
@@ -69,7 +73,9 @@ module Maremma
69
73
  headers: response.headers,
70
74
  status: response.status)
71
75
  rescue *NETWORKABLE_EXCEPTIONS => error
72
- OpenStruct.new(body: rescue_faraday_error(error))
76
+ error_response = rescue_faraday_error(error)
77
+ OpenStruct.new(body: error_response,
78
+ status: error_response.fetch("errors", {}).first.fetch("status", 400))
73
79
  end
74
80
 
75
81
  def self.get(url, options={})
@@ -91,7 +97,9 @@ module Maremma
91
97
  headers: response.headers,
92
98
  status: response.status)
93
99
  rescue *NETWORKABLE_EXCEPTIONS => error
94
- OpenStruct.new(body: rescue_faraday_error(error))
100
+ error_response = rescue_faraday_error(error)
101
+ OpenStruct.new(body: error_response,
102
+ status: error_response.fetch("errors", {}).first.fetch("status", 400))
95
103
  end
96
104
 
97
105
  def self.head(url, options={})
@@ -112,7 +120,9 @@ module Maremma
112
120
  OpenStruct.new(headers: response.headers,
113
121
  status: response.status)
114
122
  rescue *NETWORKABLE_EXCEPTIONS => error
115
- OpenStruct.new(body: rescue_faraday_error(error))
123
+ error_response = rescue_faraday_error(error)
124
+ OpenStruct.new(body: error_response,
125
+ status: error_response.fetch("errors", {}).first.fetch("status", 400))
116
126
  end
117
127
 
118
128
  def self.faraday_conn(options = {})
@@ -127,7 +137,7 @@ module Maremma
127
137
  c.headers['Content-type'] = options[:headers]['Content-type'] if options[:headers]['Content-type'].present?
128
138
  c.headers['Accept'] = options[:headers]['Accept']
129
139
  c.headers['User-Agent'] = options[:headers]['User-Agent']
130
- c.use FaradayMiddleware::FollowRedirects, limit: limit, cookie: :all
140
+ c.use FaradayMiddleware::FollowRedirects, limit: limit, cookie: :all if limit > 0
131
141
  c.request :multipart
132
142
  c.request :json if options[:headers]['Accept'] == 'application/json'
133
143
  c.use Faraday::Response::RaiseError
data/spec/maremma_spec.rb CHANGED
@@ -32,6 +32,14 @@ describe Maremma do
32
32
  expect(stub).to have_been_requested
33
33
  end
34
34
 
35
+ it "head html" do
36
+ stub = stub_request(:head, url).to_return(:body => data.to_s, :status => 200, :headers => { "Content-Type" => "text/html" })
37
+ response = subject.head(url, accept: 'html')
38
+ expect(response.body).to be_nil
39
+ expect(response.headers).to eq("Content-Type"=>"text/html")
40
+ expect(stub).to have_been_requested
41
+ end
42
+
35
43
  it "post xml" do
36
44
  stub = stub_request(:post, url).with(:body => post_data.to_xml).to_return(:body => data.to_xml, :status => 200, :headers => { "Content-Type" => "text/html" })
37
45
  subject.post(url, accept: 'xml', data: post_data.to_xml) { |response| expect(Hash.from_xml(response.body.to_s)["hash"]).to eq(data) }
@@ -142,6 +150,13 @@ describe Maremma do
142
150
  expect(stub).to have_been_requested
143
151
  end
144
152
 
153
+ it "head html" do
154
+ stub = stub_request(:head, url).to_return(:body => error.to_s, :status => [404], :headers => { "Content-Type" => "text/html" })
155
+ response = subject.head(url, accept: 'html')
156
+ expect(response.status).to eq(404)
157
+ expect(stub).to have_been_requested
158
+ end
159
+
145
160
  it "post xml" do
146
161
  stub = stub_request(:post, url).with(:body => post_data.to_xml).to_return(:body => error.to_xml, :status => [404], :headers => { "Content-Type" => "application/xml" })
147
162
  subject.post(url, accept: 'xml', data: post_data.to_xml) { |response| expect(Hash.from_xml(response.to_s)["hash"]).to eq(error) }
@@ -177,6 +192,13 @@ describe Maremma do
177
192
  expect(stub).to have_been_requested
178
193
  end
179
194
 
195
+ it "head html" do
196
+ stub = stub_request(:head, url).to_return(:status => [408])
197
+ response = subject.head(url, accept: 'html')
198
+ expect(response.status).to eq(408)
199
+ expect(stub).to have_been_requested
200
+ end
201
+
180
202
  it "post xml" do
181
203
  stub = stub_request(:post, url).with(:body => post_data.to_xml).to_return(:status => [408])
182
204
  subject.post(url, accept: 'xml', data: post_data.to_xml) { |response| expect(response.body).to be_nil }
@@ -190,15 +212,6 @@ describe Maremma do
190
212
  end
191
213
  end
192
214
 
193
- context "head" do
194
- it "head" do
195
- stub = stub_request(:head, url).to_return(:status => 200, :headers => { "Content-Type" => "application/json" })
196
- response = subject.head(url)
197
- expect(response.headers).to eq("Content-Type"=>"application/json")
198
- expect(stub).to have_been_requested
199
- end
200
- end
201
-
202
215
  context "delete" do
203
216
  it "delete" do
204
217
  stub = stub_request(:delete, url).to_return(:status => 204, :headers => { "Content-Type" => "text/html" })
@@ -344,6 +357,18 @@ describe Maremma do
344
357
  response = subject.get(url, limit: 1)
345
358
  expect(response.body).to eq("errors"=>[{"status"=>400, "title"=>"too many redirects; last one to: http://www.example.org/redirect/x"}])
346
359
  end
360
+
361
+ it "redirect limit 0" do
362
+ stub_request(:get, url).to_return(status: 301, headers: { location: redirect_url })
363
+ response = subject.get(url, limit: 0)
364
+ expect(response.headers["Location"]).to eq("http://www.example.org/redirect")
365
+ end
366
+
367
+ it "redirect limit 0 head" do
368
+ stub_request(:head, url).to_return(status: 301, headers: { location: redirect_url })
369
+ response = subject.head(url, limit: 0)
370
+ expect(response.headers["Location"]).to eq("http://www.example.org/redirect")
371
+ end
347
372
  end
348
373
 
349
374
  context "content negotiation" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maremma
3
3
  version: !ruby/object:Gem::Version
4
- version: '3.1'
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-10 00:00:00.000000000 Z
11
+ date: 2017-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday