httpserious 0.13.5.lstoll1

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 (100) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rubocop.yml +92 -0
  4. data/.rubocop_todo.yml +124 -0
  5. data/.simplecov +1 -0
  6. data/.travis.yml +7 -0
  7. data/CONTRIBUTING.md +23 -0
  8. data/Gemfile +19 -0
  9. data/Guardfile +16 -0
  10. data/History +370 -0
  11. data/MIT-LICENSE +20 -0
  12. data/README.md +78 -0
  13. data/Rakefile +10 -0
  14. data/bin/httparty +116 -0
  15. data/cucumber.yml +1 -0
  16. data/examples/README.md +67 -0
  17. data/examples/aaws.rb +32 -0
  18. data/examples/basic.rb +28 -0
  19. data/examples/crack.rb +19 -0
  20. data/examples/custom_parsers.rb +64 -0
  21. data/examples/delicious.rb +37 -0
  22. data/examples/google.rb +16 -0
  23. data/examples/headers_and_user_agents.rb +6 -0
  24. data/examples/logging.rb +36 -0
  25. data/examples/nokogiri_html_parser.rb +19 -0
  26. data/examples/rescue_json.rb +17 -0
  27. data/examples/rubyurl.rb +14 -0
  28. data/examples/stackexchange.rb +24 -0
  29. data/examples/tripit_sign_in.rb +33 -0
  30. data/examples/twitter.rb +31 -0
  31. data/examples/whoismyrep.rb +10 -0
  32. data/features/basic_authentication.feature +20 -0
  33. data/features/command_line.feature +90 -0
  34. data/features/deals_with_http_error_codes.feature +26 -0
  35. data/features/digest_authentication.feature +20 -0
  36. data/features/handles_compressed_responses.feature +27 -0
  37. data/features/handles_multiple_formats.feature +57 -0
  38. data/features/steps/env.rb +27 -0
  39. data/features/steps/httparty_response_steps.rb +52 -0
  40. data/features/steps/httparty_steps.rb +43 -0
  41. data/features/steps/mongrel_helper.rb +94 -0
  42. data/features/steps/remote_service_steps.rb +86 -0
  43. data/features/supports_read_timeout_option.feature +13 -0
  44. data/features/supports_redirection.feature +22 -0
  45. data/features/supports_timeout_option.feature +13 -0
  46. data/httparty.gemspec +28 -0
  47. data/httpserious.gemspec +25 -0
  48. data/lib/httparty.rb +612 -0
  49. data/lib/httparty/connection_adapter.rb +190 -0
  50. data/lib/httparty/cookie_hash.rb +21 -0
  51. data/lib/httparty/exceptions.rb +29 -0
  52. data/lib/httparty/hash_conversions.rb +49 -0
  53. data/lib/httparty/logger/apache_formatter.rb +22 -0
  54. data/lib/httparty/logger/curl_formatter.rb +48 -0
  55. data/lib/httparty/logger/logger.rb +26 -0
  56. data/lib/httparty/module_inheritable_attributes.rb +56 -0
  57. data/lib/httparty/net_digest_auth.rb +117 -0
  58. data/lib/httparty/parser.rb +141 -0
  59. data/lib/httparty/request.rb +361 -0
  60. data/lib/httparty/response.rb +77 -0
  61. data/lib/httparty/response/headers.rb +31 -0
  62. data/lib/httparty/version.rb +3 -0
  63. data/lib/httpserious.rb +1 -0
  64. data/script/release +42 -0
  65. data/spec/fixtures/delicious.xml +23 -0
  66. data/spec/fixtures/empty.xml +0 -0
  67. data/spec/fixtures/google.html +3 -0
  68. data/spec/fixtures/ssl/generate.sh +29 -0
  69. data/spec/fixtures/ssl/generated/1fe462c2.0 +16 -0
  70. data/spec/fixtures/ssl/generated/bogushost.crt +13 -0
  71. data/spec/fixtures/ssl/generated/ca.crt +16 -0
  72. data/spec/fixtures/ssl/generated/ca.key +15 -0
  73. data/spec/fixtures/ssl/generated/selfsigned.crt +14 -0
  74. data/spec/fixtures/ssl/generated/server.crt +13 -0
  75. data/spec/fixtures/ssl/generated/server.key +15 -0
  76. data/spec/fixtures/ssl/openssl-exts.cnf +9 -0
  77. data/spec/fixtures/twitter.csv +2 -0
  78. data/spec/fixtures/twitter.json +1 -0
  79. data/spec/fixtures/twitter.xml +403 -0
  80. data/spec/fixtures/undefined_method_add_node_for_nil.xml +2 -0
  81. data/spec/httparty/connection_adapter_spec.rb +468 -0
  82. data/spec/httparty/cookie_hash_spec.rb +83 -0
  83. data/spec/httparty/exception_spec.rb +38 -0
  84. data/spec/httparty/hash_conversions_spec.rb +41 -0
  85. data/spec/httparty/logger/apache_formatter_spec.rb +41 -0
  86. data/spec/httparty/logger/curl_formatter_spec.rb +18 -0
  87. data/spec/httparty/logger/logger_spec.rb +38 -0
  88. data/spec/httparty/net_digest_auth_spec.rb +191 -0
  89. data/spec/httparty/parser_spec.rb +167 -0
  90. data/spec/httparty/request_spec.rb +872 -0
  91. data/spec/httparty/response_spec.rb +241 -0
  92. data/spec/httparty/ssl_spec.rb +74 -0
  93. data/spec/httparty_spec.rb +823 -0
  94. data/spec/spec_helper.rb +59 -0
  95. data/spec/support/ssl_test_helper.rb +47 -0
  96. data/spec/support/ssl_test_server.rb +80 -0
  97. data/spec/support/stub_response.rb +43 -0
  98. data/website/css/common.css +47 -0
  99. data/website/index.html +73 -0
  100. metadata +219 -0
@@ -0,0 +1,59 @@
1
+ require "simplecov"
2
+ SimpleCov.start
3
+
4
+ require "httparty"
5
+ require "fakeweb"
6
+
7
+ def file_fixture(filename)
8
+ open(File.join(File.dirname(__FILE__), 'fixtures', "#{filename}")).read
9
+ end
10
+
11
+ Dir[File.expand_path(File.join(File.dirname(__FILE__), 'support', '**', '*.rb'))].each {|f| require f}
12
+
13
+ RSpec.configure do |config|
14
+ config.include HTTParty::StubResponse
15
+ config.include HTTParty::SSLTestHelper
16
+
17
+ config.before(:suite) do
18
+ FakeWeb.allow_net_connect = false
19
+ end
20
+
21
+ config.after(:suite) do
22
+ FakeWeb.allow_net_connect = true
23
+ end
24
+
25
+ config.expect_with :rspec do |expectations|
26
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
27
+ end
28
+
29
+ config.mock_with :rspec do |mocks|
30
+ mocks.verify_partial_doubles = false
31
+ end
32
+
33
+ config.filter_run :focus
34
+ config.run_all_when_everything_filtered = true
35
+
36
+ config.disable_monkey_patching!
37
+
38
+ config.warnings = true
39
+
40
+ if config.files_to_run.one?
41
+ config.default_formatter = 'doc'
42
+ end
43
+
44
+ config.profile_examples = 10
45
+
46
+ config.order = :random
47
+
48
+ Kernel.srand config.seed
49
+ end
50
+
51
+ RSpec::Matchers.define :use_ssl do
52
+ match(&:use_ssl?)
53
+ end
54
+
55
+ RSpec::Matchers.define :use_cert_store do |cert_store|
56
+ match do |connection|
57
+ connection.cert_store == cert_store
58
+ end
59
+ end
@@ -0,0 +1,47 @@
1
+ require 'pathname'
2
+
3
+ module HTTParty
4
+ module SSLTestHelper
5
+ def ssl_verify_test(mode, ca_basename, server_cert_filename, options = {})
6
+ options = {
7
+ format: :json,
8
+ timeout: 30
9
+ }.merge(options)
10
+
11
+ if mode
12
+ ca_path = File.expand_path("../../fixtures/ssl/generated/#{ca_basename}", __FILE__)
13
+ raise ArgumentError.new("#{ca_path} does not exist") unless File.exist?(ca_path)
14
+ options[mode] = ca_path
15
+ end
16
+
17
+ begin
18
+ test_server = SSLTestServer.new(
19
+ rsa_key: File.read(File.expand_path("../../fixtures/ssl/generated/server.key", __FILE__)),
20
+ cert: File.read(File.expand_path("../../fixtures/ssl/generated/#{server_cert_filename}", __FILE__)))
21
+
22
+ test_server.start
23
+
24
+ if mode
25
+ ca_path = File.expand_path("../../fixtures/ssl/generated/#{ca_basename}", __FILE__)
26
+ raise ArgumentError.new("#{ca_path} does not exist") unless File.exist?(ca_path)
27
+ return HTTParty.get("https://localhost:#{test_server.port}/", options)
28
+ else
29
+ return HTTParty.get("https://localhost:#{test_server.port}/", options)
30
+ end
31
+ ensure
32
+ test_server.stop if test_server
33
+ end
34
+
35
+ test_server = SSLTestServer.new({
36
+ rsa_key: path.join('server.key').read,
37
+ cert: path.join(server_cert_filename).read
38
+ })
39
+
40
+ test_server.start
41
+
42
+ HTTParty.get("https://localhost:#{test_server.port}/", options)
43
+ ensure
44
+ test_server.stop if test_server
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,80 @@
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
+
26
+ if @port == 0
27
+ @port = Socket.getnameinfo(@raw_server.getsockname, Socket::NI_NUMERICHOST | Socket::NI_NUMERICSERV)[1].to_i
28
+ end
29
+
30
+ @ssl_server = OpenSSL::SSL::SSLServer.new(@raw_server, @ctx)
31
+
32
+ @stopping_mutex.synchronize {
33
+ return if @stopping
34
+ @thread = Thread.new { thread_main }
35
+ }
36
+
37
+ nil
38
+ end
39
+
40
+ def stop
41
+ @stopping_mutex.synchronize {
42
+ return if @stopping
43
+ @stopping = true
44
+ }
45
+ @thread.join
46
+ end
47
+
48
+ private
49
+
50
+ def thread_main
51
+ until @stopping_mutex.synchronize { @stopping }
52
+ (rr, _, _) = select([@ssl_server.to_io], nil, nil, 0.1)
53
+
54
+ next unless rr && rr.include?(@ssl_server.to_io)
55
+
56
+ socket = @ssl_server.accept
57
+
58
+ Thread.new {
59
+ header = []
60
+
61
+ until (line = socket.readline).rstrip.empty?
62
+ header << line
63
+ end
64
+
65
+ response = <<EOF
66
+ HTTP/1.1 200 OK
67
+ Connection: close
68
+ Content-Type: application/json; charset=UTF-8
69
+
70
+ {"success":true}
71
+ EOF
72
+
73
+ socket.write(response.gsub(/\r\n/n, "\n").gsub(/\n/n, "\r\n"))
74
+ socket.close
75
+ }
76
+ end
77
+
78
+ @ssl_server.close
79
+ end
80
+ end
@@ -0,0 +1,43 @@
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
+ allow(response).to receive(:body).and_return(data)
9
+
10
+ http_request = HTTParty::Request.new(Net::HTTP::Get, 'http://localhost', format: format)
11
+ allow(http_request).to receive_message_chain(:http, :request).and_return(response)
12
+
13
+ expect(HTTParty::Request).to receive(:new).and_return(http_request)
14
+ end
15
+
16
+ def stub_chunked_http_response_with(chunks, options = {format: "html"})
17
+ response = Net::HTTPResponse.new("1.1", 200, nil)
18
+ allow(response).to receive(:chunked_data).and_return(chunks)
19
+ def response.read_body(&block)
20
+ @body || chunked_data.each(&block)
21
+ end
22
+
23
+ http_request = HTTParty::Request.new(Net::HTTP::Get, 'http://localhost', options)
24
+ allow(http_request).to receive_message_chain(:http, :request).and_yield(response).and_return(response)
25
+
26
+ expect(HTTParty::Request).to receive(:new).and_return(http_request)
27
+ end
28
+
29
+ def stub_response(body, code = 200)
30
+ @request.options[:base_uri] ||= 'http://localhost'
31
+ unless defined?(@http) && @http
32
+ @http = Net::HTTP.new('localhost', 80)
33
+ allow(@request).to receive(:http).and_return(@http)
34
+ end
35
+
36
+ response = Net::HTTPResponse::CODE_TO_OBJ[code.to_s].new("1.1", code, body)
37
+ allow(response).to receive(:body).and_return(body)
38
+
39
+ allow(@http).to receive(:request).and_return(response)
40
+ response
41
+ end
42
+ end
43
+ 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,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,219 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: httpserious
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.13.5.lstoll1
5
+ platform: ruby
6
+ authors:
7
+ - John Nunemaker
8
+ - Sandro Turriate
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-06-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: json
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.8'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.8'
28
+ - !ruby/object:Gem::Dependency
29
+ name: multi_xml
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 0.5.2
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: 0.5.2
42
+ description: Makes http fun! Also, makes consuming restful web services dead easy.
43
+ email:
44
+ - nunemaker@gmail.com
45
+ executables:
46
+ - httparty
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - ".gitignore"
51
+ - ".rubocop.yml"
52
+ - ".rubocop_todo.yml"
53
+ - ".simplecov"
54
+ - ".travis.yml"
55
+ - CONTRIBUTING.md
56
+ - Gemfile
57
+ - Guardfile
58
+ - History
59
+ - MIT-LICENSE
60
+ - README.md
61
+ - Rakefile
62
+ - bin/httparty
63
+ - cucumber.yml
64
+ - examples/README.md
65
+ - examples/aaws.rb
66
+ - examples/basic.rb
67
+ - examples/crack.rb
68
+ - examples/custom_parsers.rb
69
+ - examples/delicious.rb
70
+ - examples/google.rb
71
+ - examples/headers_and_user_agents.rb
72
+ - examples/logging.rb
73
+ - examples/nokogiri_html_parser.rb
74
+ - examples/rescue_json.rb
75
+ - examples/rubyurl.rb
76
+ - examples/stackexchange.rb
77
+ - examples/tripit_sign_in.rb
78
+ - examples/twitter.rb
79
+ - examples/whoismyrep.rb
80
+ - features/basic_authentication.feature
81
+ - features/command_line.feature
82
+ - features/deals_with_http_error_codes.feature
83
+ - features/digest_authentication.feature
84
+ - features/handles_compressed_responses.feature
85
+ - features/handles_multiple_formats.feature
86
+ - features/steps/env.rb
87
+ - features/steps/httparty_response_steps.rb
88
+ - features/steps/httparty_steps.rb
89
+ - features/steps/mongrel_helper.rb
90
+ - features/steps/remote_service_steps.rb
91
+ - features/supports_read_timeout_option.feature
92
+ - features/supports_redirection.feature
93
+ - features/supports_timeout_option.feature
94
+ - httparty.gemspec
95
+ - httpserious.gemspec
96
+ - lib/httparty.rb
97
+ - lib/httparty/connection_adapter.rb
98
+ - lib/httparty/cookie_hash.rb
99
+ - lib/httparty/exceptions.rb
100
+ - lib/httparty/hash_conversions.rb
101
+ - lib/httparty/logger/apache_formatter.rb
102
+ - lib/httparty/logger/curl_formatter.rb
103
+ - lib/httparty/logger/logger.rb
104
+ - lib/httparty/module_inheritable_attributes.rb
105
+ - lib/httparty/net_digest_auth.rb
106
+ - lib/httparty/parser.rb
107
+ - lib/httparty/request.rb
108
+ - lib/httparty/response.rb
109
+ - lib/httparty/response/headers.rb
110
+ - lib/httparty/version.rb
111
+ - lib/httpserious.rb
112
+ - script/release
113
+ - spec/fixtures/delicious.xml
114
+ - spec/fixtures/empty.xml
115
+ - spec/fixtures/google.html
116
+ - spec/fixtures/ssl/generate.sh
117
+ - spec/fixtures/ssl/generated/1fe462c2.0
118
+ - spec/fixtures/ssl/generated/bogushost.crt
119
+ - spec/fixtures/ssl/generated/ca.crt
120
+ - spec/fixtures/ssl/generated/ca.key
121
+ - spec/fixtures/ssl/generated/selfsigned.crt
122
+ - spec/fixtures/ssl/generated/server.crt
123
+ - spec/fixtures/ssl/generated/server.key
124
+ - spec/fixtures/ssl/openssl-exts.cnf
125
+ - spec/fixtures/twitter.csv
126
+ - spec/fixtures/twitter.json
127
+ - spec/fixtures/twitter.xml
128
+ - spec/fixtures/undefined_method_add_node_for_nil.xml
129
+ - spec/httparty/connection_adapter_spec.rb
130
+ - spec/httparty/cookie_hash_spec.rb
131
+ - spec/httparty/exception_spec.rb
132
+ - spec/httparty/hash_conversions_spec.rb
133
+ - spec/httparty/logger/apache_formatter_spec.rb
134
+ - spec/httparty/logger/curl_formatter_spec.rb
135
+ - spec/httparty/logger/logger_spec.rb
136
+ - spec/httparty/net_digest_auth_spec.rb
137
+ - spec/httparty/parser_spec.rb
138
+ - spec/httparty/request_spec.rb
139
+ - spec/httparty/response_spec.rb
140
+ - spec/httparty/ssl_spec.rb
141
+ - spec/httparty_spec.rb
142
+ - spec/spec_helper.rb
143
+ - spec/support/ssl_test_helper.rb
144
+ - spec/support/ssl_test_server.rb
145
+ - spec/support/stub_response.rb
146
+ - website/css/common.css
147
+ - website/index.html
148
+ homepage: http://jnunemaker.github.com/httparty
149
+ licenses:
150
+ - MIT
151
+ metadata: {}
152
+ post_install_message:
153
+ rdoc_options: []
154
+ require_paths:
155
+ - lib
156
+ required_ruby_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: 1.9.3
161
+ required_rubygems_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">"
164
+ - !ruby/object:Gem::Version
165
+ version: 1.3.1
166
+ requirements: []
167
+ rubyforge_project:
168
+ rubygems_version: 2.4.5
169
+ signing_key:
170
+ specification_version: 4
171
+ summary: Makes http fun! Also, makes consuming restful web services dead easy.
172
+ test_files:
173
+ - features/basic_authentication.feature
174
+ - features/command_line.feature
175
+ - features/deals_with_http_error_codes.feature
176
+ - features/digest_authentication.feature
177
+ - features/handles_compressed_responses.feature
178
+ - features/handles_multiple_formats.feature
179
+ - features/steps/env.rb
180
+ - features/steps/httparty_response_steps.rb
181
+ - features/steps/httparty_steps.rb
182
+ - features/steps/mongrel_helper.rb
183
+ - features/steps/remote_service_steps.rb
184
+ - features/supports_read_timeout_option.feature
185
+ - features/supports_redirection.feature
186
+ - features/supports_timeout_option.feature
187
+ - spec/fixtures/delicious.xml
188
+ - spec/fixtures/empty.xml
189
+ - spec/fixtures/google.html
190
+ - spec/fixtures/ssl/generate.sh
191
+ - spec/fixtures/ssl/generated/1fe462c2.0
192
+ - spec/fixtures/ssl/generated/bogushost.crt
193
+ - spec/fixtures/ssl/generated/ca.crt
194
+ - spec/fixtures/ssl/generated/ca.key
195
+ - spec/fixtures/ssl/generated/selfsigned.crt
196
+ - spec/fixtures/ssl/generated/server.crt
197
+ - spec/fixtures/ssl/generated/server.key
198
+ - spec/fixtures/ssl/openssl-exts.cnf
199
+ - spec/fixtures/twitter.csv
200
+ - spec/fixtures/twitter.json
201
+ - spec/fixtures/twitter.xml
202
+ - spec/fixtures/undefined_method_add_node_for_nil.xml
203
+ - spec/httparty/connection_adapter_spec.rb
204
+ - spec/httparty/cookie_hash_spec.rb
205
+ - spec/httparty/exception_spec.rb
206
+ - spec/httparty/hash_conversions_spec.rb
207
+ - spec/httparty/logger/apache_formatter_spec.rb
208
+ - spec/httparty/logger/curl_formatter_spec.rb
209
+ - spec/httparty/logger/logger_spec.rb
210
+ - spec/httparty/net_digest_auth_spec.rb
211
+ - spec/httparty/parser_spec.rb
212
+ - spec/httparty/request_spec.rb
213
+ - spec/httparty/response_spec.rb
214
+ - spec/httparty/ssl_spec.rb
215
+ - spec/httparty_spec.rb
216
+ - spec/spec_helper.rb
217
+ - spec/support/ssl_test_helper.rb
218
+ - spec/support/ssl_test_server.rb
219
+ - spec/support/stub_response.rb