vacuum 0.1.0 → 0.1.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.
- data/LICENSE +1 -1
- data/README.md +5 -5
- data/lib/vacuum.rb +4 -2
- data/lib/vacuum/response.rb +2 -2
- data/lib/vacuum/version.rb +1 -1
- metadata +15 -6
- data/lib/vacuum/hash_builder.rb +0 -45
- data/spec/vacuum/hash_builder_spec.rb +0 -38
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# Vacuum
|
2
2
|
|
3
|
-
[![travis] [
|
3
|
+
[![travis] [1]] [2]
|
4
4
|
|
5
|
-
![vacuum] [
|
5
|
+
![vacuum] [3]
|
6
6
|
|
7
7
|
Vacuum is a minimal Ruby wrapper to the [Amazon Product Advertising API] [4].
|
8
8
|
|
@@ -36,8 +36,8 @@ end
|
|
36
36
|
|
37
37
|
Read further [here] [5].
|
38
38
|
|
39
|
-
[1]: https://
|
40
|
-
[2]:
|
41
|
-
[3]: http://
|
39
|
+
[1]: https://secure.travis-ci.org/hakanensari/vacuum.png
|
40
|
+
[2]: http://travis-ci.org/hakanensari/vacuum
|
41
|
+
[3]: http://f.cl.ly/items/2k2X0e2u0G3k1c260D2u/vacuum.png
|
42
42
|
[4]: https://affiliate-program.amazon.co.uk/gp/advertising/api/detail/main.html
|
43
43
|
[5]: https://github.com/hakanensari/vacuum/blob/master/examples/
|
data/lib/vacuum.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'forwardable'
|
2
2
|
require 'net/http'
|
3
|
-
require 'nokogiri'
|
4
3
|
require 'openssl'
|
5
4
|
require 'time'
|
6
5
|
|
7
|
-
|
6
|
+
require 'knack'
|
7
|
+
require 'nokogiri'
|
8
|
+
|
9
|
+
%w{request response}.each do |f|
|
8
10
|
require "vacuum/#{f}"
|
9
11
|
end
|
10
12
|
|
data/lib/vacuum/response.rb
CHANGED
@@ -35,7 +35,7 @@ module Vacuum
|
|
35
35
|
#
|
36
36
|
def find(query)
|
37
37
|
xml.xpath("//xmlns:#{query}").map do |node|
|
38
|
-
hsh =
|
38
|
+
hsh = Knack.from_xml node
|
39
39
|
block_given? ? yield(hsh) : hsh
|
40
40
|
end
|
41
41
|
end
|
@@ -47,7 +47,7 @@ module Vacuum
|
|
47
47
|
|
48
48
|
# @return [Hash] A hash representation of the entire response.
|
49
49
|
def to_hash
|
50
|
-
|
50
|
+
Knack.from_xml xml
|
51
51
|
end
|
52
52
|
|
53
53
|
# @return [true, false] Whether the HTTP response is OK
|
data/lib/vacuum/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vacuum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,9 +11,20 @@ bindir: bin
|
|
11
11
|
cert_chain: []
|
12
12
|
date: 2012-03-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: knack
|
16
|
+
requirement: &70284811596620 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70284811596620
|
14
25
|
- !ruby/object:Gem::Dependency
|
15
26
|
name: nokogiri
|
16
|
-
requirement: &
|
27
|
+
requirement: &70284811596020 !ruby/object:Gem::Requirement
|
17
28
|
none: false
|
18
29
|
requirements:
|
19
30
|
- - ~>
|
@@ -21,7 +32,7 @@ dependencies:
|
|
21
32
|
version: '1.4'
|
22
33
|
type: :runtime
|
23
34
|
prerelease: false
|
24
|
-
version_requirements: *
|
35
|
+
version_requirements: *70284811596020
|
25
36
|
description: Vacuum is a Ruby wrapper to the Amazon Product Advertising API.
|
26
37
|
email:
|
27
38
|
- hakan.ensari@papercavalier.com
|
@@ -30,7 +41,6 @@ extensions: []
|
|
30
41
|
extra_rdoc_files: []
|
31
42
|
files:
|
32
43
|
- lib/vacuum/em.rb
|
33
|
-
- lib/vacuum/hash_builder.rb
|
34
44
|
- lib/vacuum/request.rb
|
35
45
|
- lib/vacuum/response.rb
|
36
46
|
- lib/vacuum/version.rb
|
@@ -39,7 +49,6 @@ files:
|
|
39
49
|
- README.md
|
40
50
|
- spec/fixtures/http_response
|
41
51
|
- spec/spec_helper.rb
|
42
|
-
- spec/vacuum/hash_builder_spec.rb
|
43
52
|
- spec/vacuum/request_spec.rb
|
44
53
|
- spec/vacuum/response_spec.rb
|
45
54
|
homepage: http://github.com/hakanensari/vacuum
|
@@ -69,6 +78,6 @@ summary: A Ruby wrapper to the Amazon Product Advertising API
|
|
69
78
|
test_files:
|
70
79
|
- spec/fixtures/http_response
|
71
80
|
- spec/spec_helper.rb
|
72
|
-
- spec/vacuum/hash_builder_spec.rb
|
73
81
|
- spec/vacuum/request_spec.rb
|
74
82
|
- spec/vacuum/response_spec.rb
|
83
|
+
has_rdoc:
|
data/lib/vacuum/hash_builder.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
module Vacuum
|
2
|
-
module HashBuilder
|
3
|
-
# Builds a hash from a Nokogiri XML document.
|
4
|
-
#
|
5
|
-
# @param [Nokogiri::XML::Document] xml An XML document
|
6
|
-
# @return [Hash]
|
7
|
-
def self.from_xml(xml)
|
8
|
-
case xml
|
9
|
-
when Nokogiri::XML::Document
|
10
|
-
from_xml(xml.root)
|
11
|
-
when Nokogiri::XML::Element
|
12
|
-
hsh = {}
|
13
|
-
|
14
|
-
xml.attributes.each_pair do |key, attribute|
|
15
|
-
hsh[key] = attribute.value
|
16
|
-
end
|
17
|
-
|
18
|
-
xml.children.each do |child|
|
19
|
-
result = from_xml(child)
|
20
|
-
|
21
|
-
if child.name == 'text'
|
22
|
-
if hsh.empty?
|
23
|
-
return result
|
24
|
-
else
|
25
|
-
hsh['__content__'] = result
|
26
|
-
end
|
27
|
-
elsif hsh[child.name]
|
28
|
-
case hsh[child.name]
|
29
|
-
when Array
|
30
|
-
hsh[child.name] << result
|
31
|
-
else
|
32
|
-
hsh[child.name] = [hsh[child.name]] << result
|
33
|
-
end
|
34
|
-
else
|
35
|
-
hsh[child.name] = result
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
hsh
|
40
|
-
else
|
41
|
-
xml.content.to_s
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Vacuum
|
4
|
-
describe HashBuilder do
|
5
|
-
let(:xml) do
|
6
|
-
xml = <<-XML.gsub!(/>\s+</, '><').strip!
|
7
|
-
<?xml version=\"1.0\" ?>
|
8
|
-
<ItemAttributes>
|
9
|
-
<Title>Anti-Oedipus</Title>
|
10
|
-
<Author>Gilles Deleuze</Author>
|
11
|
-
<Author>Felix Guattari</Author>
|
12
|
-
<Creator Role="Translator">Robert Hurley</Creator>
|
13
|
-
</ItemAttributes>
|
14
|
-
XML
|
15
|
-
Nokogiri::XML(xml)
|
16
|
-
end
|
17
|
-
|
18
|
-
describe '.from_xml' do
|
19
|
-
it 'returns a hash' do
|
20
|
-
HashBuilder.from_xml(xml).should be_an_instance_of Hash
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'handles only childs' do
|
24
|
-
HashBuilder.from_xml(xml)['Title'].should eql 'Anti-Oedipus'
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'handles arrays' do
|
28
|
-
HashBuilder.from_xml(xml)['Author'].should be_a Array
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'handles attributes' do
|
32
|
-
node = HashBuilder.from_xml(xml)['Creator']
|
33
|
-
node['Role'].should eql 'Translator'
|
34
|
-
node['__content__'].should eql 'Robert Hurley'
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|