dnclabs-httparty 0.6.1.2010090201
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/.gitignore +7 -0
- data/History +216 -0
- data/MIT-LICENSE +20 -0
- data/Manifest +47 -0
- data/README.rdoc +54 -0
- data/Rakefile +89 -0
- data/VERSION +1 -0
- data/bin/httparty +108 -0
- data/cucumber.yml +1 -0
- data/examples/aaws.rb +32 -0
- data/examples/basic.rb +11 -0
- data/examples/custom_parsers.rb +67 -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/digest_authentication.feature +20 -0
- data/features/handles_compressed_responses.feature +19 -0
- data/features/handles_multiple_formats.feature +34 -0
- data/features/steps/env.rb +23 -0
- data/features/steps/httparty_response_steps.rb +26 -0
- data/features/steps/httparty_steps.rb +27 -0
- data/features/steps/mongrel_helper.rb +94 -0
- data/features/steps/remote_service_steps.rb +69 -0
- data/features/supports_redirection.feature +22 -0
- data/features/supports_timeout_option.feature +13 -0
- data/httparty.gemspec +146 -0
- data/lib/httparty.rb +365 -0
- data/lib/httparty/cookie_hash.rb +22 -0
- data/lib/httparty/core_extensions.rb +31 -0
- data/lib/httparty/exceptions.rb +26 -0
- data/lib/httparty/module_inheritable_attributes.rb +34 -0
- data/lib/httparty/net_digest_auth.rb +35 -0
- data/lib/httparty/parser.rb +141 -0
- data/lib/httparty/request.rb +231 -0
- data/lib/httparty/response.rb +79 -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/ssl/generate.sh +29 -0
- data/spec/fixtures/ssl/generated/1fe462c2.0 +15 -0
- data/spec/fixtures/ssl/generated/bogushost.crt +13 -0
- data/spec/fixtures/ssl/generated/ca.crt +15 -0
- data/spec/fixtures/ssl/generated/ca.key +15 -0
- data/spec/fixtures/ssl/generated/selfsigned.crt +14 -0
- data/spec/fixtures/ssl/generated/server.crt +13 -0
- data/spec/fixtures/ssl/generated/server.key +15 -0
- data/spec/fixtures/ssl/openssl-exts.cnf +9 -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 +71 -0
- data/spec/httparty/parser_spec.rb +155 -0
- data/spec/httparty/request_spec.rb +430 -0
- data/spec/httparty/response_spec.rb +188 -0
- data/spec/httparty/ssl_spec.rb +54 -0
- data/spec/httparty_spec.rb +570 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_helper.rb +20 -0
- data/spec/support/ssl_test_helper.rb +25 -0
- data/spec/support/ssl_test_server.rb +69 -0
- data/spec/support/stub_response.rb +30 -0
- data/website/css/common.css +47 -0
- data/website/index.html +73 -0
- metadata +245 -0
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'lib', 'httparty')
|
2
|
+
require 'spec/autorun'
|
3
|
+
require 'fakeweb'
|
4
|
+
|
5
|
+
def file_fixture(filename)
|
6
|
+
open(File.join(File.dirname(__FILE__), 'fixtures', "#{filename.to_s}")).read
|
7
|
+
end
|
8
|
+
|
9
|
+
Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
|
10
|
+
|
11
|
+
Spec::Runner.configure do |config|
|
12
|
+
config.include HTTParty::StubResponse
|
13
|
+
config.include HTTParty::SSLTestHelper
|
14
|
+
config.before(:suite) do
|
15
|
+
FakeWeb.allow_net_connect = false
|
16
|
+
end
|
17
|
+
config.after(:suite) do
|
18
|
+
FakeWeb.allow_net_connect = true
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module HTTParty
|
2
|
+
module SSLTestHelper
|
3
|
+
def ssl_verify_test(mode, ca_basename, server_cert_filename)
|
4
|
+
test_server = nil
|
5
|
+
begin
|
6
|
+
# Start an HTTPS server
|
7
|
+
test_server = SSLTestServer.new(
|
8
|
+
:rsa_key => File.read(File.expand_path("../../fixtures/ssl/generated/server.key", __FILE__)),
|
9
|
+
:cert => File.read(File.expand_path("../../fixtures/ssl/generated/#{server_cert_filename}", __FILE__)))
|
10
|
+
test_server.start
|
11
|
+
|
12
|
+
# Build a request
|
13
|
+
if mode
|
14
|
+
ca_path = File.expand_path("../../fixtures/ssl/generated/#{ca_basename}", __FILE__)
|
15
|
+
raise ArgumentError.new("#{ca_path} does not exist") unless File.exist?(ca_path)
|
16
|
+
return HTTParty.get("https://localhost:#{test_server.port}/", :format => :json, :timeout=>30, mode => ca_path)
|
17
|
+
else
|
18
|
+
return HTTParty.get("https://localhost:#{test_server.port}/", :format => :json, :timeout=>30)
|
19
|
+
end
|
20
|
+
ensure
|
21
|
+
test_server.stop if test_server
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'openssl'
|
2
|
+
require 'socket'
|
3
|
+
require 'thread'
|
4
|
+
|
5
|
+
# NOTE: This code is garbage. It probably has deadlocks, it might leak
|
6
|
+
# threads, and otherwise cause problems in a real system. It's really only
|
7
|
+
# intended for testing HTTParty.
|
8
|
+
class SSLTestServer
|
9
|
+
attr_accessor :ctx # SSLContext object
|
10
|
+
attr_reader :port
|
11
|
+
|
12
|
+
def initialize(options={})
|
13
|
+
@ctx = OpenSSL::SSL::SSLContext.new
|
14
|
+
@ctx.cert = OpenSSL::X509::Certificate.new(options[:cert])
|
15
|
+
@ctx.key = OpenSSL::PKey::RSA.new(options[:rsa_key])
|
16
|
+
@ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE # Don't verify client certificate
|
17
|
+
@port = options[:port] || 0
|
18
|
+
@thread = nil
|
19
|
+
@stopping_mutex = Mutex.new
|
20
|
+
@stopping = false
|
21
|
+
end
|
22
|
+
|
23
|
+
def start
|
24
|
+
@raw_server = TCPServer.new(@port)
|
25
|
+
if @port == 0
|
26
|
+
@port = Socket::getnameinfo(@raw_server.getsockname, Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV)[1].to_i
|
27
|
+
end
|
28
|
+
@ssl_server = OpenSSL::SSL::SSLServer.new(@raw_server, @ctx)
|
29
|
+
@stopping_mutex.synchronize{
|
30
|
+
return if @stopping
|
31
|
+
@thread = Thread.new{ thread_main }
|
32
|
+
}
|
33
|
+
nil
|
34
|
+
end
|
35
|
+
|
36
|
+
def stop
|
37
|
+
@stopping_mutex.synchronize{
|
38
|
+
return if @stopping
|
39
|
+
@stopping = true
|
40
|
+
}
|
41
|
+
@thread.join
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def thread_main
|
47
|
+
until @stopping_mutex.synchronize{ @stopping }
|
48
|
+
(rr,ww,ee) = select([@ssl_server.to_io], nil, nil, 0.1)
|
49
|
+
next unless rr && rr.include?(@ssl_server.to_io)
|
50
|
+
socket = @ssl_server.accept
|
51
|
+
Thread.new{
|
52
|
+
header = []
|
53
|
+
until (line = socket.readline).rstrip.empty?
|
54
|
+
header << line
|
55
|
+
end
|
56
|
+
|
57
|
+
socket.write <<'EOF'.gsub(/\r\n/n, "\n").gsub(/\n/n, "\r\n")
|
58
|
+
HTTP/1.1 200 OK
|
59
|
+
Connection: close
|
60
|
+
Content-Type: application/json; charset=UTF-8
|
61
|
+
|
62
|
+
{"success":true}
|
63
|
+
EOF
|
64
|
+
socket.close
|
65
|
+
}
|
66
|
+
end
|
67
|
+
@ssl_server.close
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module HTTParty
|
2
|
+
module StubResponse
|
3
|
+
def stub_http_response_with(filename)
|
4
|
+
format = filename.split('.').last.intern
|
5
|
+
data = file_fixture(filename)
|
6
|
+
|
7
|
+
response = Net::HTTPOK.new("1.1", 200, "Content for you")
|
8
|
+
response.stub!(:body).and_return(data)
|
9
|
+
|
10
|
+
http_request = HTTParty::Request.new(Net::HTTP::Get, 'http://localhost', :format => format)
|
11
|
+
http_request.stub!(:perform_actual_request).and_return(response)
|
12
|
+
|
13
|
+
HTTParty::Request.should_receive(:new).and_return(http_request)
|
14
|
+
end
|
15
|
+
|
16
|
+
def stub_response(body, code = 200)
|
17
|
+
unless defined?(@http) && @http
|
18
|
+
@http = Net::HTTP.new('localhost', 80)
|
19
|
+
@request.stub!(:http).and_return(@http)
|
20
|
+
@request.stub!(:uri).and_return(URI.parse("http://foo.com/foobar"))
|
21
|
+
end
|
22
|
+
|
23
|
+
response = Net::HTTPResponse::CODE_TO_OBJ[code.to_s].new("1.1", code, body)
|
24
|
+
response.stub!(:body).and_return(body)
|
25
|
+
|
26
|
+
@http.stub!(:request).and_return(response)
|
27
|
+
response
|
28
|
+
end
|
29
|
+
end
|
30
|
+
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
|
+
}
|
data/website/index.html
ADDED
@@ -0,0 +1,73 @@
|
|
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://rubyforge.org/projects/httparty/">Rubyforge</a></li>
|
19
|
+
</ul>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div id="content">
|
23
|
+
<h2>Install</h2>
|
24
|
+
<pre><code>$ sudo gem install httparty</code></pre>
|
25
|
+
|
26
|
+
<h2>Some Quick Examples</h2>
|
27
|
+
|
28
|
+
<p>The following is a simple example of wrapping Twitter's API for posting updates.</p>
|
29
|
+
|
30
|
+
<pre><code>class Twitter
|
31
|
+
include HTTParty
|
32
|
+
base_uri 'twitter.com'
|
33
|
+
basic_auth 'username', 'password'
|
34
|
+
end
|
35
|
+
|
36
|
+
Twitter.post('/statuses/update.json', :query => {:status => "It's an HTTParty and everyone is invited!"})</code></pre>
|
37
|
+
|
38
|
+
<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>
|
39
|
+
|
40
|
+
<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>
|
41
|
+
|
42
|
+
<pre><code>class Twitter
|
43
|
+
include HTTParty
|
44
|
+
base_uri 'twitter.com'
|
45
|
+
|
46
|
+
def initialize(u, p)
|
47
|
+
@auth = {:username => u, :password => p}
|
48
|
+
end
|
49
|
+
|
50
|
+
def post(text)
|
51
|
+
options = { :query => {:status => text}, :basic_auth => @auth }
|
52
|
+
self.class.post('/statuses/update.json', options)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
Twitter.new('username', 'password').post("It's an HTTParty and everyone is invited!")</code></pre>
|
57
|
+
|
58
|
+
<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>
|
59
|
+
|
60
|
+
<h2>Support</h2>
|
61
|
+
<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://github.com/jnunemaker/httparty">Github</a>.</p>
|
62
|
+
|
63
|
+
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<div id="footer">
|
67
|
+
<p>Created by <a href="http://addictedtonew.com/about/">John Nunemaker</a> |
|
68
|
+
<a href="http://orderedlist.com/">Hire Me at Ordered List</a></p>
|
69
|
+
</div>
|
70
|
+
</div>
|
71
|
+
|
72
|
+
</body>
|
73
|
+
</html>
|
metadata
ADDED
@@ -0,0 +1,245 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dnclabs-httparty
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 4020180425
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 6
|
9
|
+
- 1
|
10
|
+
- 2010090201
|
11
|
+
version: 0.6.1.2010090201
|
12
|
+
platform: ruby
|
13
|
+
authors:
|
14
|
+
- John Nunemaker
|
15
|
+
- Sandro Turriate
|
16
|
+
- Wes Morgan
|
17
|
+
- Adrian Cushman
|
18
|
+
autorequire:
|
19
|
+
bindir: bin
|
20
|
+
cert_chain: []
|
21
|
+
|
22
|
+
date: 2010-09-02 00:00:00 -04:00
|
23
|
+
default_executable: httparty
|
24
|
+
dependencies:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: crack
|
27
|
+
prerelease: false
|
28
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - "="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
hash: 11
|
34
|
+
segments:
|
35
|
+
- 0
|
36
|
+
- 1
|
37
|
+
- 8
|
38
|
+
version: 0.1.8
|
39
|
+
type: :runtime
|
40
|
+
version_requirements: *id001
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activesupport
|
43
|
+
prerelease: false
|
44
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ~>
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
hash: 5
|
50
|
+
segments:
|
51
|
+
- 2
|
52
|
+
- 3
|
53
|
+
version: "2.3"
|
54
|
+
type: :development
|
55
|
+
version_requirements: *id002
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: cucumber
|
58
|
+
prerelease: false
|
59
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ~>
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
hash: 5
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
- 7
|
68
|
+
version: "0.7"
|
69
|
+
type: :development
|
70
|
+
version_requirements: *id003
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: fakeweb
|
73
|
+
prerelease: false
|
74
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ~>
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
hash: 11
|
80
|
+
segments:
|
81
|
+
- 1
|
82
|
+
- 2
|
83
|
+
version: "1.2"
|
84
|
+
type: :development
|
85
|
+
version_requirements: *id004
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: mongrel
|
88
|
+
prerelease: false
|
89
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ~>
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
hash: 13
|
95
|
+
segments:
|
96
|
+
- 1
|
97
|
+
- 1
|
98
|
+
version: "1.1"
|
99
|
+
type: :development
|
100
|
+
version_requirements: *id005
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: rspec
|
103
|
+
prerelease: false
|
104
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
hash: 9
|
110
|
+
segments:
|
111
|
+
- 1
|
112
|
+
- 3
|
113
|
+
version: "1.3"
|
114
|
+
type: :development
|
115
|
+
version_requirements: *id006
|
116
|
+
description: Makes http fun! Also, makes consuming restful web services dead easy. This is the DNC Labs fork.
|
117
|
+
email: innovationlab@dnc.org
|
118
|
+
executables:
|
119
|
+
- httparty
|
120
|
+
extensions: []
|
121
|
+
|
122
|
+
extra_rdoc_files:
|
123
|
+
- README.rdoc
|
124
|
+
files:
|
125
|
+
- .gitignore
|
126
|
+
- History
|
127
|
+
- MIT-LICENSE
|
128
|
+
- Manifest
|
129
|
+
- README.rdoc
|
130
|
+
- Rakefile
|
131
|
+
- VERSION
|
132
|
+
- bin/httparty
|
133
|
+
- cucumber.yml
|
134
|
+
- examples/aaws.rb
|
135
|
+
- examples/basic.rb
|
136
|
+
- examples/custom_parsers.rb
|
137
|
+
- examples/delicious.rb
|
138
|
+
- examples/google.rb
|
139
|
+
- examples/rubyurl.rb
|
140
|
+
- examples/twitter.rb
|
141
|
+
- examples/whoismyrep.rb
|
142
|
+
- features/basic_authentication.feature
|
143
|
+
- features/command_line.feature
|
144
|
+
- features/deals_with_http_error_codes.feature
|
145
|
+
- features/digest_authentication.feature
|
146
|
+
- features/handles_compressed_responses.feature
|
147
|
+
- features/handles_multiple_formats.feature
|
148
|
+
- features/steps/env.rb
|
149
|
+
- features/steps/httparty_response_steps.rb
|
150
|
+
- features/steps/httparty_steps.rb
|
151
|
+
- features/steps/mongrel_helper.rb
|
152
|
+
- features/steps/remote_service_steps.rb
|
153
|
+
- features/supports_redirection.feature
|
154
|
+
- features/supports_timeout_option.feature
|
155
|
+
- httparty.gemspec
|
156
|
+
- lib/httparty.rb
|
157
|
+
- lib/httparty/cookie_hash.rb
|
158
|
+
- lib/httparty/core_extensions.rb
|
159
|
+
- lib/httparty/exceptions.rb
|
160
|
+
- lib/httparty/module_inheritable_attributes.rb
|
161
|
+
- lib/httparty/net_digest_auth.rb
|
162
|
+
- lib/httparty/parser.rb
|
163
|
+
- lib/httparty/request.rb
|
164
|
+
- lib/httparty/response.rb
|
165
|
+
- spec/fixtures/delicious.xml
|
166
|
+
- spec/fixtures/empty.xml
|
167
|
+
- spec/fixtures/google.html
|
168
|
+
- spec/fixtures/ssl/generate.sh
|
169
|
+
- spec/fixtures/ssl/generated/1fe462c2.0
|
170
|
+
- spec/fixtures/ssl/generated/bogushost.crt
|
171
|
+
- spec/fixtures/ssl/generated/ca.crt
|
172
|
+
- spec/fixtures/ssl/generated/ca.key
|
173
|
+
- spec/fixtures/ssl/generated/selfsigned.crt
|
174
|
+
- spec/fixtures/ssl/generated/server.crt
|
175
|
+
- spec/fixtures/ssl/generated/server.key
|
176
|
+
- spec/fixtures/ssl/openssl-exts.cnf
|
177
|
+
- spec/fixtures/twitter.json
|
178
|
+
- spec/fixtures/twitter.xml
|
179
|
+
- spec/fixtures/undefined_method_add_node_for_nil.xml
|
180
|
+
- spec/httparty/cookie_hash_spec.rb
|
181
|
+
- spec/httparty/parser_spec.rb
|
182
|
+
- spec/httparty/request_spec.rb
|
183
|
+
- spec/httparty/response_spec.rb
|
184
|
+
- spec/httparty/ssl_spec.rb
|
185
|
+
- spec/httparty_spec.rb
|
186
|
+
- spec/spec.opts
|
187
|
+
- spec/spec_helper.rb
|
188
|
+
- spec/support/ssl_test_helper.rb
|
189
|
+
- spec/support/ssl_test_server.rb
|
190
|
+
- spec/support/stub_response.rb
|
191
|
+
- website/css/common.css
|
192
|
+
- website/index.html
|
193
|
+
has_rdoc: true
|
194
|
+
homepage: http://github.com/dnclabs/httparty/
|
195
|
+
licenses: []
|
196
|
+
|
197
|
+
post_install_message: When you HTTParty, you must party hard!
|
198
|
+
rdoc_options:
|
199
|
+
- --charset=UTF-8
|
200
|
+
require_paths:
|
201
|
+
- lib
|
202
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
203
|
+
none: false
|
204
|
+
requirements:
|
205
|
+
- - ">="
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
hash: 3
|
208
|
+
segments:
|
209
|
+
- 0
|
210
|
+
version: "0"
|
211
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
212
|
+
none: false
|
213
|
+
requirements:
|
214
|
+
- - ">="
|
215
|
+
- !ruby/object:Gem::Version
|
216
|
+
hash: 3
|
217
|
+
segments:
|
218
|
+
- 0
|
219
|
+
version: "0"
|
220
|
+
requirements: []
|
221
|
+
|
222
|
+
rubyforge_project:
|
223
|
+
rubygems_version: 1.3.7
|
224
|
+
signing_key:
|
225
|
+
specification_version: 3
|
226
|
+
summary: Makes http fun! Also, makes consuming restful web services dead easy.
|
227
|
+
test_files:
|
228
|
+
- spec/httparty/cookie_hash_spec.rb
|
229
|
+
- spec/httparty/parser_spec.rb
|
230
|
+
- spec/httparty/request_spec.rb
|
231
|
+
- spec/httparty/response_spec.rb
|
232
|
+
- spec/httparty/ssl_spec.rb
|
233
|
+
- spec/httparty_spec.rb
|
234
|
+
- spec/spec_helper.rb
|
235
|
+
- spec/support/ssl_test_helper.rb
|
236
|
+
- spec/support/ssl_test_server.rb
|
237
|
+
- spec/support/stub_response.rb
|
238
|
+
- examples/aaws.rb
|
239
|
+
- examples/basic.rb
|
240
|
+
- examples/custom_parsers.rb
|
241
|
+
- examples/delicious.rb
|
242
|
+
- examples/google.rb
|
243
|
+
- examples/rubyurl.rb
|
244
|
+
- examples/twitter.rb
|
245
|
+
- examples/whoismyrep.rb
|