handcrafted-a2ws 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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