handcrafted-a2ws 0.0.1 → 0.0.3

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.
Files changed (5) hide show
  1. data/Rakefile +1 -1
  2. data/VERSION.yml +1 -1
  3. data/a2ws.gemspec +56 -0
  4. data/lib/a2ws.rb +30 -8
  5. metadata +3 -2
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ begin
12
12
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
13
13
  gem.add_dependency('httparty', '>= 0.4.3')
14
14
  gem.add_dependency('mbleigh-mash', '>= 0.0.6')
15
- gem.add_dependency('activesupport', '>= 2.3.2')
15
+ gem.add_dependency('activesupport', '>= 2.2.2')
16
16
  end
17
17
 
18
18
  rescue LoadError
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  major: 0
2
2
  minor: 0
3
- patch: 1
3
+ patch: 3
4
4
 
data/a2ws.gemspec ADDED
@@ -0,0 +1,56 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{a2ws}
5
+ s.version = "0.0.3"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Andy Shen"]
9
+ s.date = %q{2009-05-30}
10
+ s.email = %q{andy@shenie.info}
11
+ s.extra_rdoc_files = [
12
+ "LICENSE",
13
+ "README.rdoc"
14
+ ]
15
+ s.files = [
16
+ ".document",
17
+ ".gitignore",
18
+ "LICENSE",
19
+ "README.rdoc",
20
+ "Rakefile",
21
+ "VERSION.yml",
22
+ "a2ws.gemspec",
23
+ "lib/a2ws.rb",
24
+ "spec/a2ws_spec.rb",
25
+ "spec/spec_helper.rb"
26
+ ]
27
+ s.has_rdoc = true
28
+ s.homepage = %q{http://github.com/handcrafted/a2ws}
29
+ s.rdoc_options = ["--charset=UTF-8"]
30
+ s.require_paths = ["lib"]
31
+ s.rubygems_version = %q{1.3.2}
32
+ s.summary = %q{Wrapper for Amazon Associates Web Service (A2WS).}
33
+ s.test_files = [
34
+ "spec/a2ws_spec.rb",
35
+ "spec/spec_helper.rb"
36
+ ]
37
+
38
+ if s.respond_to? :specification_version then
39
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
40
+ s.specification_version = 3
41
+
42
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
43
+ s.add_runtime_dependency(%q<httparty>, [">= 0.4.3"])
44
+ s.add_runtime_dependency(%q<mbleigh-mash>, [">= 0.0.6"])
45
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.2.2"])
46
+ else
47
+ s.add_dependency(%q<httparty>, [">= 0.4.3"])
48
+ s.add_dependency(%q<mbleigh-mash>, [">= 0.0.6"])
49
+ s.add_dependency(%q<activesupport>, [">= 2.2.2"])
50
+ end
51
+ else
52
+ s.add_dependency(%q<httparty>, [">= 0.4.3"])
53
+ s.add_dependency(%q<mbleigh-mash>, [">= 0.0.6"])
54
+ s.add_dependency(%q<activesupport>, [">= 2.2.2"])
55
+ end
56
+ end
data/lib/a2ws.rb CHANGED
@@ -12,24 +12,46 @@ module A2WS
12
12
  end
13
13
 
14
14
  class ItemSearch < Base
15
+ attr_accessor :items
16
+
15
17
  default_params :Operation => 'ItemSearch'
16
18
 
17
- def initialize(api_key, search_index)
19
+ def initialize(api_key, search_index = :All)
18
20
  self.class.default_params :SearchIndex => search_index, :AWSAccessKeyId => api_key
19
21
  end
20
22
 
21
- def find(options = {})
22
- result = self.class.get('/onca/xml', options)
23
+ def find(keywords, options = {})
24
+ options.merge!({:Keywords => keywords})
25
+ puts options.inspect
26
+ result = self.class.get('/onca/xml', :query => options)
23
27
 
24
- items = result["ItemSearchResponse"]["Items"]
25
- if items['Request']['IsValid'] == 'True'
26
- items['Item'].collect do |i|
27
- i['ItemAttributes'].inject({}) {|h, j| h[j.first.titlecase.downcase.gsub(' ', '_')] = j.last ; h}.to_mash
28
+ @items = result["ItemSearchResponse"]["Items"]
29
+ if @items['Request']['IsValid'] == 'True'
30
+ @items['Item'].collect do |i|
31
+ Mash.new downcase_keys(i)
28
32
  end
29
33
  else
30
- raise items['Request']['Errors']['Error']['Message']
34
+ raise @items['Request']['Errors']['Error']['Message']
31
35
  end
32
36
  end
37
+
38
+ protected
39
+
40
+ def downcase_keys(hash)
41
+ new_hash = {}
42
+ hash.keys.each do |key|
43
+ value = hash.delete(key)
44
+ new_hash[downcase_key(key)] = value
45
+ new_hash[downcase_key(key)] = downcase_keys(value) if value.is_a?(Hash)
46
+ new_hash[downcase_key(key)] = value.each{|p| downcase_keys(p) if p.is_a?(Hash)} if value.is_a?(Array)
47
+ end
48
+ new_hash
49
+ end
50
+
51
+ def downcase_key(key)
52
+ key.titlecase.downcase.gsub(' ', '_')
53
+ end
54
+
33
55
  end
34
56
 
35
57
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: handcrafted-a2ws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Shen
@@ -40,7 +40,7 @@ dependencies:
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: 2.3.2
43
+ version: 2.2.2
44
44
  version:
45
45
  description:
46
46
  email: andy@shenie.info
@@ -58,6 +58,7 @@ files:
58
58
  - README.rdoc
59
59
  - Rakefile
60
60
  - VERSION.yml
61
+ - a2ws.gemspec
61
62
  - lib/a2ws.rb
62
63
  - spec/a2ws_spec.rb
63
64
  - spec/spec_helper.rb