yyyc514-httparty 0.4.4.2
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/History +131 -0
- data/MIT-LICENSE +20 -0
- data/Manifest +47 -0
- data/README.rdoc +54 -0
- data/Rakefile +48 -0
- data/bin/httparty +98 -0
- data/cucumber.yml +1 -0
- data/examples/aaws.rb +32 -0
- data/examples/basic.rb +11 -0
- data/examples/delicious.rb +37 -0
- data/examples/google.rb +16 -0
- data/examples/rubyurl.rb +14 -0
- data/examples/twitter.rb +31 -0
- data/examples/whoismyrep.rb +10 -0
- data/features/basic_authentication.feature +20 -0
- data/features/command_line.feature +7 -0
- data/features/deals_with_http_error_codes.feature +26 -0
- data/features/handles_multiple_formats.feature +34 -0
- data/features/steps/env.rb +15 -0
- data/features/steps/httparty_response_steps.rb +26 -0
- data/features/steps/httparty_steps.rb +15 -0
- data/features/steps/mongrel_helper.rb +55 -0
- data/features/steps/remote_service_steps.rb +47 -0
- data/features/supports_redirection.feature +22 -0
- data/lib/httparty.rb +206 -0
- data/lib/httparty/class_inheritable_attributes.rb +25 -0
- data/lib/httparty/cookie_hash.rb +9 -0
- data/lib/httparty/core_extensions.rb +29 -0
- data/lib/httparty/exceptions.rb +7 -0
- data/lib/httparty/request.rb +141 -0
- data/lib/httparty/response.rb +18 -0
- data/lib/httparty/version.rb +3 -0
- data/spec/fixtures/delicious.xml +23 -0
- data/spec/fixtures/empty.xml +0 -0
- data/spec/fixtures/google.html +3 -0
- data/spec/fixtures/twitter.json +1 -0
- data/spec/fixtures/twitter.xml +403 -0
- data/spec/fixtures/undefined_method_add_node_for_nil.xml +2 -0
- data/spec/httparty/cookie_hash_spec.rb +38 -0
- data/spec/httparty/request_spec.rb +199 -0
- data/spec/httparty/response_spec.rb +62 -0
- data/spec/httparty_spec.rb +307 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_helper.rb +21 -0
- data/website/css/common.css +47 -0
- data/website/index.html +74 -0
- data/yyyc514-httparty.gemspec +40 -0
- metadata +134 -0
data/History
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
== 0.4.4 2009-07-19
|
2
|
+
* 2 minor update
|
3
|
+
* :query no longer sets form data. Use body and set content type to application/x-www-form-urlencoded if you need it. :query was wrong for that.
|
4
|
+
* Fixed a bug in the cookies class method that caused cookies to be forgotten after the first request.
|
5
|
+
* Also, some general cleanup of tests and such.
|
6
|
+
|
7
|
+
== 0.4.3 2009-04-23
|
8
|
+
* 1 minor update
|
9
|
+
* added message to the response object
|
10
|
+
|
11
|
+
== 0.4.2 2009-03-30
|
12
|
+
* 2 minor changes
|
13
|
+
* response code now returns an integer instead of a string (jqr)
|
14
|
+
* rubyforge project setup for crack so i'm now depending on that instead of jnunemaker-crack
|
15
|
+
|
16
|
+
== 0.4.1 2009-03-29
|
17
|
+
* 1 minor fix
|
18
|
+
* gem 'jnunemaker-crack' instead of gem 'crack'
|
19
|
+
|
20
|
+
== 0.4.0 2009-03-29
|
21
|
+
* 1 minor change
|
22
|
+
* Switched xml and json parsing to crack (same code as before just moved to gem for easier reuse in other projects)
|
23
|
+
|
24
|
+
== 0.3.1 2009-02-10
|
25
|
+
* 1 minor fix, 1 minor enhancement
|
26
|
+
* Fixed unescaping umlauts (siebertm)
|
27
|
+
* Added yaml response parsing (Miha Filej)
|
28
|
+
|
29
|
+
== 0.3.0 2009-01-31
|
30
|
+
* 1 major enhancement, 1 bug fix
|
31
|
+
* JSON gem no longer a requirement. It was conflicting with rails json stuff so I just stole ActiveSupport's json decoding and bundled it with HTTParty.
|
32
|
+
* Fixed bug where query strings were being duplicated on redirects
|
33
|
+
* Added a bunch of specs and moved some code around.
|
34
|
+
|
35
|
+
== 0.2.10 2009-01-29
|
36
|
+
* 1 minor enhancement
|
37
|
+
* Made encoding on query parameters treat everything except URI::PATTERN::UNRESERVED as UNSAFE to force encoding of '+' character (Julian Russell)
|
38
|
+
|
39
|
+
== 0.2.9 2009-01-29
|
40
|
+
* 3 minor enhancements
|
41
|
+
* Added a 'headers' accessor to the response with a hash of any HTTP headers. (Don Peterson)
|
42
|
+
* Add support for a ":cookies" option to be used at the class level, or as an option on any individual call. It should be passed a hash, which will be converted to the proper format and added to the request headers when the call is made. (Don Peterson)
|
43
|
+
* Refactored several specs and added a full suite of cucumber features (Don Peterson)
|
44
|
+
|
45
|
+
== 0.2.8 2009-01-28
|
46
|
+
* 1 major fix
|
47
|
+
* fixed major bug with response where it wouldn't iterate or really work at all with parsed responses
|
48
|
+
|
49
|
+
== 0.2.7 2009-01-28
|
50
|
+
* 2 minor fixes, 2 minor enhancements, 2 major enhancements
|
51
|
+
* fixed undefined method add_node for nil class error that occasionally happened (juliocesar)
|
52
|
+
* Handle nil or unexpected values better when typecasting. (Brian Landau)
|
53
|
+
* More robust handling of mime types (Alex Vollmer)
|
54
|
+
* Fixed support for specifying headers and added support for basic auth to CLI. (Alex Vollmer)
|
55
|
+
* Added first class response object that includes original body and status code (Alex Vollmer)
|
56
|
+
* Now parsing all response types as some non-200 responses provide important information, this means no more exception raising (Alex Vollmer)
|
57
|
+
|
58
|
+
== 0.2.6 2009-01-05
|
59
|
+
* 1 minor bug fix
|
60
|
+
* added explicit require of time as Time#parse failed outside of rails (willcodeforfoo)
|
61
|
+
|
62
|
+
== 0.2.5 2009-01-05
|
63
|
+
* 1 major enhancement
|
64
|
+
* Add command line interface to HTTParty (Alex Vollmer)
|
65
|
+
|
66
|
+
== 0.2.4 2008-12-23
|
67
|
+
* 1 bug fix
|
68
|
+
* Fixed that mimetype detection was failing if no mimetype was returned from service (skippy)
|
69
|
+
== 0.2.3 2008-12-23
|
70
|
+
* 1 bug fix
|
71
|
+
* Fixed typecasting class variable naming issue
|
72
|
+
|
73
|
+
== 0.2.2 2008-12-08
|
74
|
+
* 1 bug fix
|
75
|
+
* Added the missing core extension hash method to_xml_attributes
|
76
|
+
|
77
|
+
== 0.2.1 2008-12-08
|
78
|
+
* 1 bug fix
|
79
|
+
* Fixed that HTTParty was borking ActiveSupport and as such Rails (thanks to Rob Sanheim)
|
80
|
+
|
81
|
+
== 0.2.0 2008-12-07
|
82
|
+
* 1 major enhancement
|
83
|
+
* Removed ActiveSupport as a dependency. Now requires json gem for json deserialization and uses an included class to do the xml parsing.
|
84
|
+
|
85
|
+
== 0.1.8 2008-11-30
|
86
|
+
* 3 major enhancements
|
87
|
+
* Moved base_uri normalization into request class and out of httparty module, fixing
|
88
|
+
the problem where base_uri was not always being normalized.
|
89
|
+
* Stupid simple support for HTTParty.get/post/put/delete. (jqr)
|
90
|
+
* Switched gem management to Echoe from newgem.
|
91
|
+
|
92
|
+
== 0.1.7 2008-11-30
|
93
|
+
* 1 major enhancement
|
94
|
+
* fixed multiple class definitions overriding each others options
|
95
|
+
|
96
|
+
== 0.1.6 2008-11-26
|
97
|
+
* 1 major enhancement
|
98
|
+
* now passing :query to set_form_data if post request to avoid content length errors
|
99
|
+
|
100
|
+
== 0.1.5 2008-11-14
|
101
|
+
* 2 major enhancements
|
102
|
+
* Refactored send request method out into its own object.
|
103
|
+
* Added :html format if you just want to do that.
|
104
|
+
|
105
|
+
== 0.1.4 2008-11-08
|
106
|
+
* 3 major enhancements:
|
107
|
+
* Removed some cruft
|
108
|
+
* Added ability to follow redirects automatically and turn that off (Alex Vollmer)
|
109
|
+
|
110
|
+
== 0.1.3 2008-08-22
|
111
|
+
|
112
|
+
* 3 major enhancements:
|
113
|
+
* Added http_proxy key for setting proxy server and port (francxk@gmail.com)
|
114
|
+
* Now raises exception when http error occurs (francxk@gmail.com)
|
115
|
+
* Changed auto format detection from file extension to response content type (Jay Pignata)
|
116
|
+
|
117
|
+
== 0.1.2 2008-08-09
|
118
|
+
|
119
|
+
* 1 major enhancement:
|
120
|
+
* default_params were not being appended to query string if option[:query] was blank
|
121
|
+
|
122
|
+
== 0.1.1 2008-07-30
|
123
|
+
|
124
|
+
* 2 major enhancement:
|
125
|
+
* Added :basic_auth key for options when making a request
|
126
|
+
* :query and :body both now work with query string or hash
|
127
|
+
|
128
|
+
== 0.1.0 2008-07-27
|
129
|
+
|
130
|
+
* 1 major enhancement:
|
131
|
+
* Initial release
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2008 John Nunemaker
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Manifest
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
bin/httparty
|
2
|
+
cucumber.yml
|
3
|
+
examples/aaws.rb
|
4
|
+
examples/basic.rb
|
5
|
+
examples/delicious.rb
|
6
|
+
examples/google.rb
|
7
|
+
examples/rubyurl.rb
|
8
|
+
examples/twitter.rb
|
9
|
+
examples/whoismyrep.rb
|
10
|
+
features/basic_authentication.feature
|
11
|
+
features/command_line.feature
|
12
|
+
features/deals_with_http_error_codes.feature
|
13
|
+
features/handles_multiple_formats.feature
|
14
|
+
features/steps/env.rb
|
15
|
+
features/steps/httparty_response_steps.rb
|
16
|
+
features/steps/httparty_steps.rb
|
17
|
+
features/steps/mongrel_helper.rb
|
18
|
+
features/steps/remote_service_steps.rb
|
19
|
+
features/supports_redirection.feature
|
20
|
+
History
|
21
|
+
httparty.gemspec
|
22
|
+
lib/httparty/cookie_hash.rb
|
23
|
+
lib/httparty/core_extensions.rb
|
24
|
+
lib/httparty/exceptions.rb
|
25
|
+
lib/httparty/module_inheritable_attributes.rb
|
26
|
+
lib/httparty/request.rb
|
27
|
+
lib/httparty/response.rb
|
28
|
+
lib/httparty/version.rb
|
29
|
+
lib/httparty.rb
|
30
|
+
Manifest
|
31
|
+
MIT-LICENSE
|
32
|
+
Rakefile
|
33
|
+
README.rdoc
|
34
|
+
spec/fixtures/delicious.xml
|
35
|
+
spec/fixtures/empty.xml
|
36
|
+
spec/fixtures/google.html
|
37
|
+
spec/fixtures/twitter.json
|
38
|
+
spec/fixtures/twitter.xml
|
39
|
+
spec/fixtures/undefined_method_add_node_for_nil.xml
|
40
|
+
spec/httparty/cookie_hash_spec.rb
|
41
|
+
spec/httparty/request_spec.rb
|
42
|
+
spec/httparty/response_spec.rb
|
43
|
+
spec/httparty_spec.rb
|
44
|
+
spec/spec.opts
|
45
|
+
spec/spec_helper.rb
|
46
|
+
website/css/common.css
|
47
|
+
website/index.html
|
data/README.rdoc
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
= httparty
|
2
|
+
|
3
|
+
Makes http fun again!
|
4
|
+
|
5
|
+
== Note on Releases
|
6
|
+
|
7
|
+
Releases are tagged on github and also released as gems on github and rubyforge. Master is pushed to whenever I add a patch or a new feature. To build from master, you can clone the code, generate the updated gemspec, build the gem and install.
|
8
|
+
|
9
|
+
* rake build_gemspec
|
10
|
+
* gem build httparty.gemspec
|
11
|
+
* gem install the gem that was built
|
12
|
+
|
13
|
+
== Note on Patches/Pull Requests
|
14
|
+
|
15
|
+
* Fork the project.
|
16
|
+
* Make your feature addition or bug fix.
|
17
|
+
* Add tests for it. This is important so I don't break it in a future version unintentionally.
|
18
|
+
* Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself in another branch so I can ignore when I pull)
|
19
|
+
* Send me a pull request. Bonus points for topic branches.
|
20
|
+
|
21
|
+
== Features:
|
22
|
+
|
23
|
+
* Easy get, post requests
|
24
|
+
* Basic http authentication
|
25
|
+
* Default request query string parameters (ie: for api keys that are needed on each request)
|
26
|
+
* Automatic parsing of JSON and XML into ruby hashes based on response content-type
|
27
|
+
|
28
|
+
== Examples
|
29
|
+
|
30
|
+
See http://github.com/jnunemaker/httparty/tree/master/examples
|
31
|
+
|
32
|
+
== Command Line Interface
|
33
|
+
|
34
|
+
httparty also includes the executable <tt>httparty</tt> which can be
|
35
|
+
used to query web services and examine the resulting output. By default
|
36
|
+
it will output the response as a pretty-printed Ruby object (useful for
|
37
|
+
grokking the structure of output). This can also be overridden to output
|
38
|
+
formatted XML or JSON. Execute <tt>httparty --help</tt> for all the
|
39
|
+
options. Below is an example of how easy it is.
|
40
|
+
|
41
|
+
httparty "http://twitter.com/statuses/public_timeline.json"
|
42
|
+
|
43
|
+
== Requirements
|
44
|
+
|
45
|
+
* Crack http://github.com/jnunemaker/crack/ - For XML and JSON parsing.
|
46
|
+
* You like to party!
|
47
|
+
|
48
|
+
== Install
|
49
|
+
|
50
|
+
* sudo gem install httparty
|
51
|
+
|
52
|
+
== Docs
|
53
|
+
|
54
|
+
http://rdoc.info/projects/jnunemaker/httparty
|
data/Rakefile
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
ProjectName = 'httparty'
|
2
|
+
WebsitePath = "jnunemaker@rubyforge.org:/var/www/gforge-projects/#{ProjectName}"
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'rake'
|
6
|
+
require 'echoe'
|
7
|
+
require 'spec/rake/spectask'
|
8
|
+
require "lib/#{ProjectName}/version"
|
9
|
+
require 'cucumber/rake/task'
|
10
|
+
|
11
|
+
Echoe.new(ProjectName, HTTParty::Version) do |p|
|
12
|
+
p.description = "Makes http fun! Also, makes consuming restful web services dead easy."
|
13
|
+
p.install_message = "When you HTTParty, you must party hard!"
|
14
|
+
p.url = "http://#{ProjectName}.rubyforge.org"
|
15
|
+
p.author = "John Nunemaker"
|
16
|
+
p.email = "nunemaker@gmail.com"
|
17
|
+
p.extra_deps = [['crack', '>= 0.1.1']]
|
18
|
+
p.need_tar_gz = false
|
19
|
+
p.docs_host = WebsitePath
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'Upload website files to rubyforge'
|
23
|
+
task :website do
|
24
|
+
sh %{rsync -av website/ #{WebsitePath}}
|
25
|
+
Rake::Task['website_docs'].invoke
|
26
|
+
end
|
27
|
+
|
28
|
+
task :website_docs do
|
29
|
+
Rake::Task['redocs'].invoke
|
30
|
+
sh %{rsync -av doc/ #{WebsitePath}/docs}
|
31
|
+
end
|
32
|
+
|
33
|
+
desc 'Preps the gem for a new release'
|
34
|
+
task :prepare do
|
35
|
+
%w[manifest build_gemspec].each do |task|
|
36
|
+
Rake::Task[task].invoke
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
Rake::Task[:default].prerequisites.clear
|
41
|
+
task :default => :spec
|
42
|
+
Spec::Rake::SpecTask.new do |t|
|
43
|
+
t.spec_files = FileList["spec/**/*_spec.rb"]
|
44
|
+
end
|
45
|
+
|
46
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
47
|
+
t.cucumber_opts = "--format pretty"
|
48
|
+
end
|
data/bin/httparty
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "optparse"
|
4
|
+
require "pp"
|
5
|
+
|
6
|
+
$:.unshift(File.join(File.dirname(__FILE__), "/../lib"))
|
7
|
+
require "httparty"
|
8
|
+
|
9
|
+
opts = {
|
10
|
+
:action => :get,
|
11
|
+
:headers => {},
|
12
|
+
:verbose => false
|
13
|
+
}
|
14
|
+
|
15
|
+
def die(msg)
|
16
|
+
STDERR.puts(msg)
|
17
|
+
exit 1
|
18
|
+
end
|
19
|
+
|
20
|
+
OptionParser.new do |o|
|
21
|
+
o.banner = "USAGE: #{$0} [options] [url]"
|
22
|
+
|
23
|
+
o.on("-f",
|
24
|
+
"--format [FORMAT]",
|
25
|
+
"Output format to use instead of pretty-print ruby: " +
|
26
|
+
"plain, json or xml") do |f|
|
27
|
+
opts[:output_format] = f.downcase.to_sym
|
28
|
+
end
|
29
|
+
|
30
|
+
o.on("-a",
|
31
|
+
"--action [ACTION]",
|
32
|
+
"HTTP action: get (default), post, put or delete") do |a|
|
33
|
+
opts[:action] = a.downcase.to_sym
|
34
|
+
end
|
35
|
+
|
36
|
+
o.on("-d",
|
37
|
+
"--data [BODY]",
|
38
|
+
"Data to put in request body (prefix with '@' for file)") do |d|
|
39
|
+
if d =~ /^@/
|
40
|
+
opts[:data] = open(d).read
|
41
|
+
else
|
42
|
+
opts[:data] = d
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
o.on("-H", "--header [NAME=VALUE]", "Additional HTTP headers in NAME=VALUE form") do |h|
|
47
|
+
die "Invalid header specification, should be Name:Value" unless h =~ /.+:.+/
|
48
|
+
name, value = h.split(':')
|
49
|
+
opts[:headers][name.strip] = value.strip
|
50
|
+
end
|
51
|
+
|
52
|
+
o.on("-v", "--verbose", "If set, print verbose output") do |v|
|
53
|
+
opts[:verbose] = true
|
54
|
+
end
|
55
|
+
|
56
|
+
o.on("-u", "--user [CREDS]", "Use basic authentication. Value should be user:password") do |u|
|
57
|
+
die "Invalid credentials format. Must be user:password" unless u =~ /.+:.+/
|
58
|
+
user, password = u.split(':')
|
59
|
+
opts[:basic_auth] = { :username => user, :password => password }
|
60
|
+
end
|
61
|
+
|
62
|
+
o.on("-h", "--help", "Show help documentation") do |h|
|
63
|
+
puts o
|
64
|
+
exit
|
65
|
+
end
|
66
|
+
end.parse!
|
67
|
+
|
68
|
+
puts "Querying #{ARGV.first} with options: #{opts.inspect}" if opts[:verbose]
|
69
|
+
|
70
|
+
if ARGV.empty?
|
71
|
+
STDERR.puts "You need to provide a URL"
|
72
|
+
STDERR.puts "USAGE: #{$0} [options] [url]"
|
73
|
+
end
|
74
|
+
|
75
|
+
if opts[:output_format].nil?
|
76
|
+
response = HTTParty.send(opts[:action], ARGV.first, opts)
|
77
|
+
puts "Status: #{response.code}"
|
78
|
+
pp response
|
79
|
+
else
|
80
|
+
print_format = opts[:output_format]
|
81
|
+
response = HTTParty.send(opts[:action], ARGV.first, opts)
|
82
|
+
puts "Status: #{response.code}"
|
83
|
+
case opts[:output_format]
|
84
|
+
when :json
|
85
|
+
begin
|
86
|
+
require 'rubygems'
|
87
|
+
require 'json'
|
88
|
+
puts JSON.pretty_generate(response.delegate)
|
89
|
+
rescue LoadError
|
90
|
+
puts YAML.dump(response.delegate)
|
91
|
+
end
|
92
|
+
when :xml
|
93
|
+
REXML::Document.new(response.body).write(STDOUT, 2)
|
94
|
+
puts
|
95
|
+
else
|
96
|
+
puts response
|
97
|
+
end
|
98
|
+
end
|
data/cucumber.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
default: features
|
data/examples/aaws.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'activesupport'
|
3
|
+
|
4
|
+
dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
5
|
+
require File.join(dir, 'httparty')
|
6
|
+
require 'pp'
|
7
|
+
config = YAML::load(File.read(File.join(ENV['HOME'], '.aaws')))
|
8
|
+
|
9
|
+
module AAWS
|
10
|
+
class Book
|
11
|
+
include HTTParty
|
12
|
+
base_uri 'http://ecs.amazonaws.com'
|
13
|
+
default_params :Service => 'AWSECommerceService', :Operation => 'ItemSearch', :SearchIndex => 'Books'
|
14
|
+
|
15
|
+
def initialize(key)
|
16
|
+
self.class.default_params :AWSAccessKeyId => key
|
17
|
+
end
|
18
|
+
|
19
|
+
def search(options={})
|
20
|
+
raise ArgumentError, 'You must search for something' if options[:query].blank?
|
21
|
+
|
22
|
+
# amazon uses nasty camelized query params
|
23
|
+
options[:query] = options[:query].inject({}) { |h, q| h[q[0].to_s.camelize] = q[1]; h }
|
24
|
+
|
25
|
+
# make a request and return the items (NOTE: this doesn't handle errors at this point)
|
26
|
+
self.class.get('/onca/xml', options)['ItemSearchResponse']['Items']
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
aaws = AAWS::Book.new(config[:access_key])
|
32
|
+
pp aaws.search(:query => {:title => 'Ruby On Rails'})
|
data/examples/basic.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require File.join(dir, 'httparty')
|
3
|
+
require 'pp'
|
4
|
+
|
5
|
+
# You can also use post, put, delete in the same fashion
|
6
|
+
response = HTTParty.get('http://twitter.com/statuses/public_timeline.json')
|
7
|
+
puts response.body, response.code, response.message, response.headers.inspect
|
8
|
+
|
9
|
+
response.each do |item|
|
10
|
+
puts item['user']['screen_name']
|
11
|
+
end
|