leh-httparty 0.3.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.
Files changed (56) hide show
  1. data/History +108 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Manifest +55 -0
  4. data/README +35 -0
  5. data/Rakefile +47 -0
  6. data/bin/httparty +98 -0
  7. data/cucumber.yml +1 -0
  8. data/examples/aaws.rb +32 -0
  9. data/examples/basic.rb +11 -0
  10. data/examples/delicious.rb +37 -0
  11. data/examples/google.rb +16 -0
  12. data/examples/rubyurl.rb +14 -0
  13. data/examples/twitter.rb +31 -0
  14. data/examples/whoismyrep.rb +10 -0
  15. data/features/basic_authentication.feature +20 -0
  16. data/features/command_line.feature +7 -0
  17. data/features/deals_with_http_error_codes.feature +26 -0
  18. data/features/handles_multiple_formats.feature +34 -0
  19. data/features/steps/env.rb +15 -0
  20. data/features/steps/httparty_response_steps.rb +26 -0
  21. data/features/steps/httparty_steps.rb +15 -0
  22. data/features/steps/mongrel_helper.rb +55 -0
  23. data/features/steps/remote_service_steps.rb +47 -0
  24. data/features/supports_redirection.feature +22 -0
  25. data/httparty.gemspec +37 -0
  26. data/lib/core_extensions.rb +230 -0
  27. data/lib/httparty.rb +201 -0
  28. data/lib/httparty/cookie_hash.rb +9 -0
  29. data/lib/httparty/exceptions.rb +7 -0
  30. data/lib/httparty/module_inheritable_attributes.rb +25 -0
  31. data/lib/httparty/parsers.rb +4 -0
  32. data/lib/httparty/parsers/json.rb +74 -0
  33. data/lib/httparty/parsers/xml.rb +209 -0
  34. data/lib/httparty/request.rb +139 -0
  35. data/lib/httparty/response.rb +17 -0
  36. data/lib/httparty/version.rb +3 -0
  37. data/setup.rb +1585 -0
  38. data/spec/fixtures/delicious.xml +23 -0
  39. data/spec/fixtures/empty.xml +0 -0
  40. data/spec/fixtures/google.html +3 -0
  41. data/spec/fixtures/twitter.json +1 -0
  42. data/spec/fixtures/twitter.xml +403 -0
  43. data/spec/fixtures/undefined_method_add_node_for_nil.xml +2 -0
  44. data/spec/hash_spec.rb +49 -0
  45. data/spec/httparty/cookie_hash_spec.rb +38 -0
  46. data/spec/httparty/parsers/json_spec.rb +42 -0
  47. data/spec/httparty/parsers/xml_spec.rb +445 -0
  48. data/spec/httparty/request_spec.rb +196 -0
  49. data/spec/httparty/response_spec.rb +53 -0
  50. data/spec/httparty_spec.rb +259 -0
  51. data/spec/spec.opts +3 -0
  52. data/spec/spec_helper.rb +21 -0
  53. data/spec/string_spec.rb +27 -0
  54. data/website/css/common.css +47 -0
  55. data/website/index.html +74 -0
  56. metadata +133 -0
@@ -0,0 +1,3 @@
1
+ --format
2
+ progress
3
+ --colour
@@ -0,0 +1,21 @@
1
+ require 'rubygems'
2
+ gem 'rspec'
3
+ require 'spec'
4
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'httparty')
5
+
6
+ def file_fixture(filename)
7
+ open(File.join(File.dirname(__FILE__), 'fixtures', "#{filename.to_s}")).read
8
+ end
9
+
10
+ def stub_http_response_with(filename)
11
+ format = filename.split('.').last.intern
12
+ data = file_fixture(filename)
13
+
14
+ response = Net::HTTPOK.new("1.1", 200, "Content for you")
15
+ response.stub!(:body).and_return(data)
16
+
17
+ http_request = HTTParty::Request.new(Net::HTTP::Get, 'http://localhost', :format => format)
18
+ http_request.stub!(:perform_actual_request).and_return(response)
19
+
20
+ HTTParty::Request.should_receive(:new).and_return(http_request)
21
+ end
@@ -0,0 +1,27 @@
1
+ describe String, "#snake_case" do
2
+ it "lowercases one word CamelCase" do
3
+ "Merb".snake_case.should == "merb"
4
+ end
5
+
6
+ it "makes one underscore snake_case two word CamelCase" do
7
+ "MerbCore".snake_case.should == "merb_core"
8
+ end
9
+
10
+ it "handles CamelCase with more than 2 words" do
11
+ "SoYouWantContributeToMerbCore".snake_case.should == "so_you_want_contribute_to_merb_core"
12
+ end
13
+
14
+ it "handles CamelCase with more than 2 capital letter in a row" do
15
+ "CNN".snake_case.should == "cnn"
16
+ "CNNNews".snake_case.should == "cnn_news"
17
+ "HeadlineCNNNews".snake_case.should == "headline_cnn_news"
18
+ end
19
+
20
+ it "does NOT change one word lowercase" do
21
+ "merb".snake_case.should == "merb"
22
+ end
23
+
24
+ it "leaves snake_case as is" do
25
+ "merb_core".snake_case.should == "merb_core"
26
+ end
27
+ end
@@ -0,0 +1,47 @@
1
+ @media screen, projection {
2
+ /*
3
+ Copyright (c) 2007, Yahoo! Inc. All rights reserved.
4
+ Code licensed under the BSD License:
5
+ http://developer.yahoo.net/yui/license.txt
6
+ version: 2.2.0
7
+ */
8
+ body {font:13px arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}pre, code {font:115% monospace;*font-size:100%;}body * {line-height:1.22em;}
9
+ body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}/*ol,ul {list-style:none;}*/caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;}
10
+ /* end of yahoo reset and fonts */
11
+
12
+ body {color:#333; background:#4b1a1a; line-height:1.3;}
13
+ p {margin:0 0 20px;}
14
+ a {color:#4b1a1a;}
15
+ a:hover {text-decoration:none;}
16
+ strong {font-weight:bold;}
17
+ em {font-style:italics;}
18
+ h1,h2,h3,h4,h5,h6 {font-weight:bold;}
19
+ h1 {font-size:197%; margin:30px 0; color:#4b1a1a;}
20
+ h2 {font-size:174%; margin:20px 0; color:#b8111a;}
21
+ h3 {font-size:152%; margin:10px 0;}
22
+ h4 {font-size:129%; margin:10px 0;}
23
+ pre {background:#eee; margin:0 0 20px; padding:20px; border:1px solid #ccc; font-size:100%; overflow:auto;}
24
+ code {font-size:100%; margin:0; padding:0;}
25
+ ul, ol {margin:10px 0 10px 25px;}
26
+ ol li {margin:0 0 10px;}
27
+
28
+
29
+
30
+
31
+
32
+ div#wrapper {background:#fff; width:560px; margin:0 auto; padding:20px; border:10px solid #bc8c46; border-width:0 10px;}
33
+ div#header {position:relative; border-bottom:1px dotted; margin:0 0 10px; padding:0 0 10px;}
34
+ div#header p {margin:0; padding:0;}
35
+ div#header h1 {margin:0; padding:0;}
36
+ ul#nav {position:absolute; top:0; right:0; list-style:none; margin:0; padding:0;}
37
+ ul#nav li {display:inline; padding:0 0 0 5px;}
38
+ ul#nav li a {}
39
+ div#content {}
40
+ div#footer {margin:40px 0 0; border-top:1px dotted; padding:10px 0 0;}
41
+
42
+
43
+
44
+
45
+
46
+
47
+ }
@@ -0,0 +1,74 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
+ <title>HTTParty by John Nunemaker</title>
6
+ <link rel="stylesheet" href="css/common.css" type="text/css" />
7
+ </head>
8
+ <body>
9
+
10
+ <div id="wrapper">
11
+ <div id="header">
12
+ <h1>HTTParty</h1>
13
+ <p>Tonight we're gonna HTTParty like it's 1999!</p>
14
+
15
+ <ul id="nav">
16
+ <li><a href="rdoc/">Docs</a></li>
17
+ <li><a href="http://github.com/jnunemaker/httparty">Github</a></li>
18
+ <li><a href="http://jnunemaker.lighthouseapp.com/projects/14842-httparty/tickets">Lighthouse</a></li>
19
+ <li><a href="http://rubyforge.org/projects/httparty/">Rubyforge</a></li>
20
+ </ul>
21
+ </div>
22
+
23
+ <div id="content">
24
+ <h2>Install</h2>
25
+ <pre><code>$ sudo gem install httparty</code></pre>
26
+
27
+ <h2>Some Quick Examples</h2>
28
+
29
+ <p>The following is a simple example of wrapping Twitter's API for posting updates.</p>
30
+
31
+ <pre><code>class Twitter
32
+ include HTTParty
33
+ base_uri 'twitter.com'
34
+ basic_auth 'username', 'password'
35
+ end
36
+
37
+ Twitter.post('/statuses/update.json', :query => {:status => "It's an HTTParty and everyone is invited!"})</code></pre>
38
+
39
+ <p>That is really it! The object returned is a ruby hash that is decoded from Twitter's json response. JSON parsing is used because of the .json extension in the path of the request. You can also explicitly set a format (see the examples). </p>
40
+
41
+ <p>That works and all but what if you don't want to embed your username and password in the class? Below is an example to fix that:</p>
42
+
43
+ <pre><code>class Twitter
44
+ include HTTParty
45
+ base_uri 'twitter.com'
46
+
47
+ def initialize(u, p)
48
+ @auth = {:username => u, :password => p}
49
+ end
50
+
51
+ def post(text)
52
+ options = { :query => {:status => text}, :basic_auth => @auth }
53
+ self.class.post('/statuses/update.json', options)
54
+ end
55
+ end
56
+
57
+ Twitter.new('username', 'password').post("It's an HTTParty and everyone is invited!")</code></pre>
58
+
59
+ <p><strong>More Examples:</strong> There are <a href="http://github.com/jnunemaker/httparty/tree/master/examples/">several examples in the gem itself</a>.</p>
60
+
61
+ <h2>Support</h2>
62
+ <p>Conversations welcome in the <a href="http://groups.google.com/group/httparty-gem">google group</a> and bugs/features over at <a href="http://jnunemaker.lighthouseapp.com/projects/14842-httparty/overview">Lightouse</a>.</p>
63
+
64
+
65
+ </div>
66
+
67
+ <div id="footer">
68
+ <p>Created by <a href="http://addictedtonew.com/about/">John Nunemaker</a> |
69
+ <a href="http://orderedlist.com/">Hire Me at Ordered List</a></p>
70
+ </div>
71
+ </div>
72
+
73
+ </body>
74
+ </html>
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: leh-httparty
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.1.1
5
+ platform: ruby
6
+ authors:
7
+ - John Nunemaker
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-10 00:00:00 -08:00
13
+ default_executable: httparty
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: echoe
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ description: Makes http fun! Also, makes consuming restful web services dead easy.
26
+ email: nunemaker@gmail.com
27
+ executables:
28
+ - httparty
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - bin/httparty
33
+ - lib/core_extensions.rb
34
+ - lib/httparty/cookie_hash.rb
35
+ - lib/httparty/exceptions.rb
36
+ - lib/httparty/module_inheritable_attributes.rb
37
+ - lib/httparty/parsers/json.rb
38
+ - lib/httparty/parsers/xml.rb
39
+ - lib/httparty/parsers.rb
40
+ - lib/httparty/request.rb
41
+ - lib/httparty/response.rb
42
+ - lib/httparty/version.rb
43
+ - lib/httparty.rb
44
+ - README
45
+ files:
46
+ - bin/httparty
47
+ - cucumber.yml
48
+ - examples/aaws.rb
49
+ - examples/basic.rb
50
+ - examples/delicious.rb
51
+ - examples/google.rb
52
+ - examples/rubyurl.rb
53
+ - examples/twitter.rb
54
+ - examples/whoismyrep.rb
55
+ - features/basic_authentication.feature
56
+ - features/command_line.feature
57
+ - features/deals_with_http_error_codes.feature
58
+ - features/handles_multiple_formats.feature
59
+ - features/steps/env.rb
60
+ - features/steps/httparty_response_steps.rb
61
+ - features/steps/httparty_steps.rb
62
+ - features/steps/mongrel_helper.rb
63
+ - features/steps/remote_service_steps.rb
64
+ - features/supports_redirection.feature
65
+ - History
66
+ - httparty.gemspec
67
+ - lib/core_extensions.rb
68
+ - lib/httparty/cookie_hash.rb
69
+ - lib/httparty/exceptions.rb
70
+ - lib/httparty/module_inheritable_attributes.rb
71
+ - lib/httparty/parsers/json.rb
72
+ - lib/httparty/parsers/xml.rb
73
+ - lib/httparty/parsers.rb
74
+ - lib/httparty/request.rb
75
+ - lib/httparty/response.rb
76
+ - lib/httparty/version.rb
77
+ - lib/httparty.rb
78
+ - Manifest
79
+ - MIT-LICENSE
80
+ - Rakefile
81
+ - README
82
+ - setup.rb
83
+ - spec/fixtures/delicious.xml
84
+ - spec/fixtures/empty.xml
85
+ - spec/fixtures/google.html
86
+ - spec/fixtures/twitter.json
87
+ - spec/fixtures/twitter.xml
88
+ - spec/fixtures/undefined_method_add_node_for_nil.xml
89
+ - spec/hash_spec.rb
90
+ - spec/httparty/cookie_hash_spec.rb
91
+ - spec/httparty/parsers/json_spec.rb
92
+ - spec/httparty/parsers/xml_spec.rb
93
+ - spec/httparty/request_spec.rb
94
+ - spec/httparty/response_spec.rb
95
+ - spec/httparty_spec.rb
96
+ - spec/spec.opts
97
+ - spec/spec_helper.rb
98
+ - spec/string_spec.rb
99
+ - website/css/common.css
100
+ - website/index.html
101
+ has_rdoc: true
102
+ homepage: http://httparty.rubyforge.org
103
+ post_install_message: When you HTTParty, you must party hard!
104
+ rdoc_options:
105
+ - --line-numbers
106
+ - --inline-source
107
+ - --title
108
+ - Httparty
109
+ - --main
110
+ - README
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: "0"
118
+ version:
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: "1.2"
124
+ version:
125
+ requirements: []
126
+
127
+ rubyforge_project: httparty
128
+ rubygems_version: 1.2.0
129
+ signing_key:
130
+ specification_version: 2
131
+ summary: Makes http fun! Also, makes consuming restful web services dead easy.
132
+ test_files: []
133
+