maremma 3.5 → 3.5.1
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/Gemfile.lock +2 -2
- data/lib/maremma.rb +12 -12
- data/lib/maremma/version.rb +1 -1
- data/lib/maremma/xml_converter.rb +12 -0
- data/spec/maremma_spec.rb +6 -1
- metadata +3 -3
- data/lib/maremma/hash.rb +0 -63
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ba82a8adc41f610974a1e5f0fee1616d04e4d465
|
|
4
|
+
data.tar.gz: 4eaf91d77ceebe086c1bdeab2f068d9e143a5c68
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ba82e06bd569ae40504b93c0d4327c0f53d76d06bb198d4100209e3501101de59dfa957b66ec61009b5350b1817eaa43f7c4ceb32824bade269e5bed8738736f
|
|
7
|
+
data.tar.gz: 234196702252c07ae88ba1bcd57d41b130751c8230a06056429d18171ccbe239903c8ea4db22c9dd88cb7a75ea79f1f0667bf564979426493b32e291359f2c3e
|
data/Gemfile.lock
CHANGED
data/lib/maremma.rb
CHANGED
|
@@ -7,20 +7,20 @@ require 'faraday/encoding'
|
|
|
7
7
|
require 'excon'
|
|
8
8
|
require 'uri'
|
|
9
9
|
require 'addressable/uri'
|
|
10
|
-
require 'maremma/
|
|
11
|
-
|
|
12
|
-
DEFAULT_TIMEOUT = 60
|
|
13
|
-
NETWORKABLE_EXCEPTIONS = [Faraday::ClientError,
|
|
14
|
-
Faraday::TimeoutError,
|
|
15
|
-
Faraday::SSLError,
|
|
16
|
-
Faraday::ConnectionFailed,
|
|
17
|
-
URI::InvalidURIError,
|
|
18
|
-
Encoding::UndefinedConversionError,
|
|
19
|
-
ArgumentError,
|
|
20
|
-
NoMethodError,
|
|
21
|
-
TypeError]
|
|
10
|
+
require 'maremma/xml_converter'
|
|
22
11
|
|
|
23
12
|
module Maremma
|
|
13
|
+
DEFAULT_TIMEOUT = 60
|
|
14
|
+
NETWORKABLE_EXCEPTIONS = [Faraday::ClientError,
|
|
15
|
+
Faraday::TimeoutError,
|
|
16
|
+
Faraday::SSLError,
|
|
17
|
+
Faraday::ConnectionFailed,
|
|
18
|
+
URI::InvalidURIError,
|
|
19
|
+
Encoding::UndefinedConversionError,
|
|
20
|
+
ArgumentError,
|
|
21
|
+
NoMethodError,
|
|
22
|
+
TypeError]
|
|
23
|
+
|
|
24
24
|
def self.post(url, options={})
|
|
25
25
|
is_valid_url?(url)
|
|
26
26
|
|
data/lib/maremma/version.rb
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# modified from http://stackoverflow.com/a/29431089
|
|
2
|
+
# preserve attributes in xml
|
|
3
|
+
|
|
4
|
+
module ActiveSupport
|
|
5
|
+
class XMLConverter
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
def become_content?(value)
|
|
9
|
+
value['type'] == 'file' || (value['__content__'] && (value.keys.size == 1 && value['__content__'].present?))
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
data/spec/maremma_spec.rb
CHANGED
|
@@ -461,7 +461,12 @@ describe Maremma do
|
|
|
461
461
|
|
|
462
462
|
it 'from_xml with attribute' do
|
|
463
463
|
string = '<word type="small">abc</word>'
|
|
464
|
-
expect(subject.parse_success_response(string)).to eq("data"=>{"word"=>{"type"=>"small", "
|
|
464
|
+
expect(subject.parse_success_response(string)).to eq("data"=>{"word"=>{"type"=>"small", "__content__"=>"abc"}})
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
it 'from_xml with mixed attribute' do
|
|
468
|
+
string = '<word type="small">abc<footnote>1</footnote></word>'
|
|
469
|
+
expect(subject.parse_success_response(string)).to eq("data"=>{"word"=>{"type"=>"small", "footnote"=>"1", "__content__"=>"abc"}})
|
|
465
470
|
end
|
|
466
471
|
|
|
467
472
|
it 'from_string' 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:
|
|
4
|
+
version: 3.5.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: 2017-02-
|
|
11
|
+
date: 2017-02-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -303,8 +303,8 @@ files:
|
|
|
303
303
|
- README.md
|
|
304
304
|
- Rakefile
|
|
305
305
|
- lib/maremma.rb
|
|
306
|
-
- lib/maremma/hash.rb
|
|
307
306
|
- lib/maremma/version.rb
|
|
307
|
+
- lib/maremma/xml_converter.rb
|
|
308
308
|
- maremma.gemspec
|
|
309
309
|
- spec/fixtures/vcr_cassettes/Maremma/content_negotiation/redirects_to_URL.yml
|
|
310
310
|
- spec/fixtures/vcr_cassettes/Maremma/content_negotiation/returns_content_as_APA-formatted_citation.yml
|
data/lib/maremma/hash.rb
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# modified from http://stackoverflow.com/questions/1230741/convert-a-nokogiri-document-to-a-ruby-hash/1231297#123129
|
|
2
|
-
# https://gist.github.com/huy/819999
|
|
3
|
-
|
|
4
|
-
require 'nokogiri'
|
|
5
|
-
|
|
6
|
-
ActiveSupport::XmlMini.backend = 'Nokogiri'
|
|
7
|
-
|
|
8
|
-
class Hash
|
|
9
|
-
class << self
|
|
10
|
-
def from_xml(xml_io)
|
|
11
|
-
begin
|
|
12
|
-
result = Nokogiri::XML(xml_io)
|
|
13
|
-
return { result.root.name => xml_node_to_hash(result.root)}
|
|
14
|
-
rescue Exception => e
|
|
15
|
-
# raise your custom exception here
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def xml_node_to_hash(node)
|
|
20
|
-
# If we are at the root of the document, start the hash
|
|
21
|
-
if node.element?
|
|
22
|
-
result_hash = {}
|
|
23
|
-
if node.attributes != {}
|
|
24
|
-
attributes = {}
|
|
25
|
-
node.attributes.keys.each do |key|
|
|
26
|
-
attributes[node.attributes[key].name] = node.attributes[key].value
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
if node.children.size > 0
|
|
30
|
-
node.children.each do |child|
|
|
31
|
-
result = xml_node_to_hash(child)
|
|
32
|
-
|
|
33
|
-
if child.name == "text"
|
|
34
|
-
unless child.next_sibling || child.previous_sibling
|
|
35
|
-
return result unless attributes
|
|
36
|
-
result_hash[child.name] = result
|
|
37
|
-
end
|
|
38
|
-
elsif result_hash[child.name]
|
|
39
|
-
|
|
40
|
-
if result_hash[child.name].is_a?(Object::Array)
|
|
41
|
-
result_hash[child.name] << result
|
|
42
|
-
else
|
|
43
|
-
result_hash[child.name] = [result_hash[child.name]] << result
|
|
44
|
-
end
|
|
45
|
-
else
|
|
46
|
-
result_hash[child.name] = result
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
if attributes
|
|
50
|
-
#add code to remove non-data attributes e.g. xml schema, namespace here
|
|
51
|
-
#if there is a collision then node content supersets attributes
|
|
52
|
-
result_hash = attributes.merge(result_hash)
|
|
53
|
-
end
|
|
54
|
-
return result_hash
|
|
55
|
-
else
|
|
56
|
-
return attributes
|
|
57
|
-
end
|
|
58
|
-
else
|
|
59
|
-
return node.content.to_s
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|