httparty 0.15.0 → 0.21.0

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 (96) hide show
  1. checksums.yaml +5 -5
  2. data/.editorconfig +18 -0
  3. data/.github/workflows/ci.yml +26 -0
  4. data/.gitignore +3 -0
  5. data/.rubocop_todo.yml +1 -1
  6. data/{History.md → Changelog.md} +137 -0
  7. data/Gemfile +8 -1
  8. data/Guardfile +3 -2
  9. data/README.md +6 -6
  10. data/docs/README.md +120 -38
  11. data/examples/README.md +28 -11
  12. data/examples/aaws.rb +6 -2
  13. data/examples/body_stream.rb +14 -0
  14. data/examples/custom_parsers.rb +4 -0
  15. data/examples/headers_and_user_agents.rb +7 -3
  16. data/examples/idn.rb +10 -0
  17. data/examples/logging.rb +3 -3
  18. data/examples/microsoft_graph.rb +52 -0
  19. data/examples/multipart.rb +22 -0
  20. data/examples/peer_cert.rb +9 -0
  21. data/examples/stream_download.rb +8 -2
  22. data/httparty.gemspec +7 -4
  23. data/lib/httparty/connection_adapter.rb +59 -16
  24. data/lib/httparty/cookie_hash.rb +10 -8
  25. data/lib/httparty/decompressor.rb +102 -0
  26. data/lib/httparty/exceptions.rb +4 -1
  27. data/lib/httparty/hash_conversions.rb +28 -12
  28. data/lib/httparty/headers_processor.rb +32 -0
  29. data/lib/httparty/logger/apache_formatter.rb +31 -6
  30. data/lib/httparty/logger/curl_formatter.rb +9 -7
  31. data/lib/httparty/logger/logger.rb +5 -1
  32. data/lib/httparty/logger/logstash_formatter.rb +61 -0
  33. data/lib/httparty/module_inheritable_attributes.rb +6 -4
  34. data/lib/httparty/net_digest_auth.rb +15 -15
  35. data/lib/httparty/parser.rb +25 -16
  36. data/lib/httparty/request/body.rb +105 -0
  37. data/lib/httparty/request/multipart_boundary.rb +13 -0
  38. data/lib/httparty/request.rb +96 -105
  39. data/lib/httparty/response/headers.rb +6 -2
  40. data/lib/httparty/response.rb +59 -8
  41. data/lib/httparty/response_fragment.rb +21 -0
  42. data/lib/httparty/text_encoder.rb +72 -0
  43. data/lib/httparty/utils.rb +13 -0
  44. data/lib/httparty/version.rb +3 -1
  45. data/lib/httparty.rb +70 -25
  46. data/website/css/common.css +1 -1
  47. metadata +38 -106
  48. data/.simplecov +0 -1
  49. data/.travis.yml +0 -8
  50. data/features/basic_authentication.feature +0 -20
  51. data/features/command_line.feature +0 -95
  52. data/features/deals_with_http_error_codes.feature +0 -26
  53. data/features/digest_authentication.feature +0 -30
  54. data/features/handles_compressed_responses.feature +0 -27
  55. data/features/handles_multiple_formats.feature +0 -57
  56. data/features/steps/env.rb +0 -27
  57. data/features/steps/httparty_response_steps.rb +0 -56
  58. data/features/steps/httparty_steps.rb +0 -43
  59. data/features/steps/mongrel_helper.rb +0 -127
  60. data/features/steps/remote_service_steps.rb +0 -92
  61. data/features/supports_read_timeout_option.feature +0 -13
  62. data/features/supports_redirection.feature +0 -22
  63. data/features/supports_timeout_option.feature +0 -13
  64. data/spec/fixtures/delicious.xml +0 -23
  65. data/spec/fixtures/empty.xml +0 -0
  66. data/spec/fixtures/google.html +0 -3
  67. data/spec/fixtures/ssl/generate.sh +0 -29
  68. data/spec/fixtures/ssl/generated/1fe462c2.0 +0 -1
  69. data/spec/fixtures/ssl/generated/bogushost.crt +0 -13
  70. data/spec/fixtures/ssl/generated/ca.crt +0 -16
  71. data/spec/fixtures/ssl/generated/ca.key +0 -15
  72. data/spec/fixtures/ssl/generated/selfsigned.crt +0 -14
  73. data/spec/fixtures/ssl/generated/server.crt +0 -13
  74. data/spec/fixtures/ssl/generated/server.key +0 -15
  75. data/spec/fixtures/ssl/openssl-exts.cnf +0 -9
  76. data/spec/fixtures/twitter.csv +0 -2
  77. data/spec/fixtures/twitter.json +0 -1
  78. data/spec/fixtures/twitter.xml +0 -403
  79. data/spec/fixtures/undefined_method_add_node_for_nil.xml +0 -2
  80. data/spec/httparty/connection_adapter_spec.rb +0 -495
  81. data/spec/httparty/cookie_hash_spec.rb +0 -100
  82. data/spec/httparty/exception_spec.rb +0 -45
  83. data/spec/httparty/hash_conversions_spec.rb +0 -49
  84. data/spec/httparty/logger/apache_formatter_spec.rb +0 -41
  85. data/spec/httparty/logger/curl_formatter_spec.rb +0 -119
  86. data/spec/httparty/logger/logger_spec.rb +0 -38
  87. data/spec/httparty/net_digest_auth_spec.rb +0 -268
  88. data/spec/httparty/parser_spec.rb +0 -178
  89. data/spec/httparty/request_spec.rb +0 -1244
  90. data/spec/httparty/response_spec.rb +0 -347
  91. data/spec/httparty/ssl_spec.rb +0 -74
  92. data/spec/httparty_spec.rb +0 -877
  93. data/spec/spec_helper.rb +0 -59
  94. data/spec/support/ssl_test_helper.rb +0 -47
  95. data/spec/support/ssl_test_server.rb +0 -80
  96. data/spec/support/stub_response.rb +0 -49
data/lib/httparty.rb CHANGED
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
4
  require 'net/http'
3
- require 'net/https'
4
5
  require 'uri'
5
6
  require 'zlib'
6
7
  require 'multi_xml'
8
+ require 'mini_mime'
7
9
  require 'json'
8
10
  require 'csv'
9
11
 
@@ -13,6 +15,11 @@ require 'httparty/net_digest_auth'
13
15
  require 'httparty/version'
14
16
  require 'httparty/connection_adapter'
15
17
  require 'httparty/logger/logger'
18
+ require 'httparty/request/body'
19
+ require 'httparty/response_fragment'
20
+ require 'httparty/decompressor'
21
+ require 'httparty/text_encoder'
22
+ require 'httparty/headers_processor'
16
23
 
17
24
  # @see HTTParty::ClassMethods
18
25
  module HTTParty
@@ -21,8 +28,8 @@ module HTTParty
21
28
  base.send :include, ModuleInheritableAttributes
22
29
  base.send(:mattr_inheritable, :default_options)
23
30
  base.send(:mattr_inheritable, :default_cookies)
24
- base.instance_variable_set("@default_options", {})
25
- base.instance_variable_set("@default_cookies", CookieHash.new)
31
+ base.instance_variable_set(:@default_options, {})
32
+ base.instance_variable_set(:@default_cookies, CookieHash.new)
26
33
  end
27
34
 
28
35
  # == Common Request Options
@@ -36,10 +43,11 @@ module HTTParty
36
43
  # [:+limit+:] Maximum number of redirects to follow. Takes precedences over :+no_follow+.
37
44
  # [:+query+:] Query string, or an object that responds to #to_hash representing it. Normalized according to the same rules as :+body+. If you specify this on a POST, you must use an object which responds to #to_hash. See also HTTParty::ClassMethods.default_params.
38
45
  # [:+timeout+:] Timeout for opening connection and reading data.
39
- # [:+local_host:] Local address to bind to before connecting.
40
- # [:+local_port:] Local port to bind to before connecting.
41
- # [:+body_stream:] Allow streaming to a REST server to specify a body_stream.
42
- # [:+stream_body:] Allow for streaming large files without loading them into memory.
46
+ # [:+local_host+:] Local address to bind to before connecting.
47
+ # [:+local_port+:] Local port to bind to before connecting.
48
+ # [:+body_stream+:] Allow streaming to a REST server to specify a body_stream.
49
+ # [:+stream_body+:] Allow for streaming large files without loading them into memory.
50
+ # [:+multipart+:] Force content-type to be multipart
43
51
  #
44
52
  # There are also another set of options with names corresponding to various class methods. The methods in question are those that let you set a class-wide default, and the options override the defaults on a request-by-request basis. Those options are:
45
53
  # * :+base_uri+: see HTTParty::ClassMethods.base_uri.
@@ -168,9 +176,9 @@ module HTTParty
168
176
  # include HTTParty
169
177
  # default_timeout 10
170
178
  # end
171
- def default_timeout(t)
172
- raise ArgumentError, 'Timeout must be an integer or float' unless t && (t.is_a?(Integer) || t.is_a?(Float))
173
- default_options[:timeout] = t
179
+ def default_timeout(value)
180
+ validate_timeout_argument(__method__, value)
181
+ default_options[:timeout] = value
174
182
  end
175
183
 
176
184
  # Allows setting a default open_timeout for all HTTP calls in seconds
@@ -179,9 +187,9 @@ module HTTParty
179
187
  # include HTTParty
180
188
  # open_timeout 10
181
189
  # end
182
- def open_timeout(t)
183
- raise ArgumentError, 'open_timeout must be an integer or float' unless t && (t.is_a?(Integer) || t.is_a?(Float))
184
- default_options[:open_timeout] = t
190
+ def open_timeout(value)
191
+ validate_timeout_argument(__method__, value)
192
+ default_options[:open_timeout] = value
185
193
  end
186
194
 
187
195
  # Allows setting a default read_timeout for all HTTP calls in seconds
@@ -190,11 +198,24 @@ module HTTParty
190
198
  # include HTTParty
191
199
  # read_timeout 10
192
200
  # end
193
- def read_timeout(t)
194
- raise ArgumentError, 'read_timeout must be an integer or float' unless t && (t.is_a?(Integer) || t.is_a?(Float))
195
- default_options[:read_timeout] = t
201
+ def read_timeout(value)
202
+ validate_timeout_argument(__method__, value)
203
+ default_options[:read_timeout] = value
204
+ end
205
+
206
+ # Allows setting a default write_timeout for all HTTP calls in seconds
207
+ # Supported by Ruby > 2.6.0
208
+ #
209
+ # class Foo
210
+ # include HTTParty
211
+ # write_timeout 10
212
+ # end
213
+ def write_timeout(value)
214
+ validate_timeout_argument(__method__, value)
215
+ default_options[:write_timeout] = value
196
216
  end
197
217
 
218
+
198
219
  # Set an output stream for debugging, defaults to $stderr.
199
220
  # The output stream is passed on to Net::HTTP#set_debug_output.
200
221
  #
@@ -380,6 +401,22 @@ module HTTParty
380
401
  default_options[:ssl_version] = version
381
402
  end
382
403
 
404
+ # Deactivate automatic decompression of the response body.
405
+ # This will require you to explicitly handle body decompression
406
+ # by inspecting the Content-Encoding response header.
407
+ #
408
+ # Refer to docs/README.md "HTTP Compression" section for
409
+ # further details.
410
+ #
411
+ # @example
412
+ # class Foo
413
+ # include HTTParty
414
+ # skip_decompression
415
+ # end
416
+ def skip_decompression(value = true)
417
+ default_options[:skip_decompression] = !!value
418
+ end
419
+
383
420
  # Allows setting of SSL ciphers to use. This only works in Ruby 1.9+.
384
421
  # You can get a list of valid specific ciphers from OpenSSL::Cipher.ciphers.
385
422
  # You also can specify a cipher suite here, listed here at openssl.org:
@@ -546,10 +583,22 @@ module HTTParty
546
583
  perform_request Net::HTTP::Mkcol, path, options, &block
547
584
  end
548
585
 
586
+ def lock(path, options = {}, &block)
587
+ perform_request Net::HTTP::Lock, path, options, &block
588
+ end
589
+
590
+ def unlock(path, options = {}, &block)
591
+ perform_request Net::HTTP::Unlock, path, options, &block
592
+ end
593
+
549
594
  attr_reader :default_options
550
595
 
551
596
  private
552
597
 
598
+ def validate_timeout_argument(timeout_type, value)
599
+ raise ArgumentError, "#{ timeout_type } must be an integer or float" unless value && (value.is_a?(Integer) || value.is_a?(Float))
600
+ end
601
+
553
602
  def ensure_method_maintained_across_redirects(options)
554
603
  unless options.key?(:maintain_method_across_redirects)
555
604
  options[:maintain_method_across_redirects] = true
@@ -558,26 +607,21 @@ module HTTParty
558
607
 
559
608
  def perform_request(http_method, path, options, &block) #:nodoc:
560
609
  options = ModuleInheritableAttributes.hash_deep_dup(default_options).merge(options)
561
- process_headers(options)
610
+ HeadersProcessor.new(headers, options).call
562
611
  process_cookies(options)
563
612
  Request.new(http_method, path, options).perform(&block)
564
613
  end
565
614
 
566
- def process_headers(options)
567
- if options[:headers] && headers.any?
568
- options[:headers] = headers.merge(options[:headers])
569
- end
570
- end
571
-
572
615
  def process_cookies(options) #:nodoc:
573
616
  return unless options[:cookies] || default_cookies.any?
574
617
  options[:headers] ||= headers.dup
575
- options[:headers]["cookie"] = cookies.merge(options.delete(:cookies) || {}).to_cookie_string
618
+ options[:headers]['cookie'] = cookies.merge(options.delete(:cookies) || {}).to_cookie_string
576
619
  end
577
620
 
578
621
  def validate_format
579
622
  if format && parser.respond_to?(:supports_format?) && !parser.supports_format?(format)
580
- raise UnsupportedFormat, "'#{format.inspect}' Must be one of: #{parser.supported_formats.map(&:to_s).sort.join(', ')}"
623
+ supported_format_names = parser.supported_formats.map(&:to_s).sort.join(', ')
624
+ raise UnsupportedFormat, "'#{format.inspect}' Must be one of: #{supported_format_names}"
581
625
  end
582
626
  end
583
627
  end
@@ -635,6 +679,7 @@ module HTTParty
635
679
  end
636
680
 
637
681
  require 'httparty/hash_conversions'
682
+ require 'httparty/utils'
638
683
  require 'httparty/exceptions'
639
684
  require 'httparty/parser'
640
685
  require 'httparty/request'
@@ -8,7 +8,7 @@
8
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
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
10
  /* end of yahoo reset and fonts */
11
-
11
+
12
12
  body {color:#333; background:#4b1a1a; line-height:1.3;}
13
13
  p {margin:0 0 20px;}
14
14
  a {color:#4b1a1a;}
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: httparty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Nunemaker
8
8
  - Sandro Turriate
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-05-11 00:00:00.000000000 Z
12
+ date: 2022-12-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_xml
@@ -25,6 +25,20 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 0.5.2
28
+ - !ruby/object:Gem::Dependency
29
+ name: mini_mime
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 1.0.0
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: 1.0.0
28
42
  description: Makes http fun! Also, makes consuming restful web services dead easy.
29
43
  email:
30
44
  - nunemaker@gmail.com
@@ -33,15 +47,15 @@ executables:
33
47
  extensions: []
34
48
  extra_rdoc_files: []
35
49
  files:
50
+ - ".editorconfig"
51
+ - ".github/workflows/ci.yml"
36
52
  - ".gitignore"
37
53
  - ".rubocop.yml"
38
54
  - ".rubocop_todo.yml"
39
- - ".simplecov"
40
- - ".travis.yml"
41
55
  - CONTRIBUTING.md
56
+ - Changelog.md
42
57
  - Gemfile
43
58
  - Guardfile
44
- - History.md
45
59
  - MIT-LICENSE
46
60
  - README.md
47
61
  - Rakefile
@@ -51,13 +65,18 @@ files:
51
65
  - examples/README.md
52
66
  - examples/aaws.rb
53
67
  - examples/basic.rb
68
+ - examples/body_stream.rb
54
69
  - examples/crack.rb
55
70
  - examples/custom_parsers.rb
56
71
  - examples/delicious.rb
57
72
  - examples/google.rb
58
73
  - examples/headers_and_user_agents.rb
74
+ - examples/idn.rb
59
75
  - examples/logging.rb
76
+ - examples/microsoft_graph.rb
77
+ - examples/multipart.rb
60
78
  - examples/nokogiri_html_parser.rb
79
+ - examples/peer_cert.rb
61
80
  - examples/rescue_json.rb
62
81
  - examples/rubyurl.rb
63
82
  - examples/stackexchange.rb
@@ -65,73 +84,34 @@ files:
65
84
  - examples/tripit_sign_in.rb
66
85
  - examples/twitter.rb
67
86
  - examples/whoismyrep.rb
68
- - features/basic_authentication.feature
69
- - features/command_line.feature
70
- - features/deals_with_http_error_codes.feature
71
- - features/digest_authentication.feature
72
- - features/handles_compressed_responses.feature
73
- - features/handles_multiple_formats.feature
74
- - features/steps/env.rb
75
- - features/steps/httparty_response_steps.rb
76
- - features/steps/httparty_steps.rb
77
- - features/steps/mongrel_helper.rb
78
- - features/steps/remote_service_steps.rb
79
- - features/supports_read_timeout_option.feature
80
- - features/supports_redirection.feature
81
- - features/supports_timeout_option.feature
82
87
  - httparty.gemspec
83
88
  - lib/httparty.rb
84
89
  - lib/httparty/connection_adapter.rb
85
90
  - lib/httparty/cookie_hash.rb
91
+ - lib/httparty/decompressor.rb
86
92
  - lib/httparty/exceptions.rb
87
93
  - lib/httparty/hash_conversions.rb
94
+ - lib/httparty/headers_processor.rb
88
95
  - lib/httparty/logger/apache_formatter.rb
89
96
  - lib/httparty/logger/curl_formatter.rb
90
97
  - lib/httparty/logger/logger.rb
98
+ - lib/httparty/logger/logstash_formatter.rb
91
99
  - lib/httparty/module_inheritable_attributes.rb
92
100
  - lib/httparty/net_digest_auth.rb
93
101
  - lib/httparty/parser.rb
94
102
  - lib/httparty/request.rb
103
+ - lib/httparty/request/body.rb
104
+ - lib/httparty/request/multipart_boundary.rb
95
105
  - lib/httparty/response.rb
96
106
  - lib/httparty/response/headers.rb
107
+ - lib/httparty/response_fragment.rb
108
+ - lib/httparty/text_encoder.rb
109
+ - lib/httparty/utils.rb
97
110
  - lib/httparty/version.rb
98
111
  - script/release
99
- - spec/fixtures/delicious.xml
100
- - spec/fixtures/empty.xml
101
- - spec/fixtures/google.html
102
- - spec/fixtures/ssl/generate.sh
103
- - spec/fixtures/ssl/generated/1fe462c2.0
104
- - spec/fixtures/ssl/generated/bogushost.crt
105
- - spec/fixtures/ssl/generated/ca.crt
106
- - spec/fixtures/ssl/generated/ca.key
107
- - spec/fixtures/ssl/generated/selfsigned.crt
108
- - spec/fixtures/ssl/generated/server.crt
109
- - spec/fixtures/ssl/generated/server.key
110
- - spec/fixtures/ssl/openssl-exts.cnf
111
- - spec/fixtures/twitter.csv
112
- - spec/fixtures/twitter.json
113
- - spec/fixtures/twitter.xml
114
- - spec/fixtures/undefined_method_add_node_for_nil.xml
115
- - spec/httparty/connection_adapter_spec.rb
116
- - spec/httparty/cookie_hash_spec.rb
117
- - spec/httparty/exception_spec.rb
118
- - spec/httparty/hash_conversions_spec.rb
119
- - spec/httparty/logger/apache_formatter_spec.rb
120
- - spec/httparty/logger/curl_formatter_spec.rb
121
- - spec/httparty/logger/logger_spec.rb
122
- - spec/httparty/net_digest_auth_spec.rb
123
- - spec/httparty/parser_spec.rb
124
- - spec/httparty/request_spec.rb
125
- - spec/httparty/response_spec.rb
126
- - spec/httparty/ssl_spec.rb
127
- - spec/httparty_spec.rb
128
- - spec/spec_helper.rb
129
- - spec/support/ssl_test_helper.rb
130
- - spec/support/ssl_test_server.rb
131
- - spec/support/stub_response.rb
132
112
  - website/css/common.css
133
113
  - website/index.html
134
- homepage: http://jnunemaker.github.com/httparty
114
+ homepage: https://github.com/jnunemaker/httparty
135
115
  licenses:
136
116
  - MIT
137
117
  metadata: {}
@@ -143,63 +123,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
143
123
  requirements:
144
124
  - - ">="
145
125
  - !ruby/object:Gem::Version
146
- version: 2.0.0
126
+ version: 2.3.0
147
127
  required_rubygems_version: !ruby/object:Gem::Requirement
148
128
  requirements:
149
129
  - - ">="
150
130
  - !ruby/object:Gem::Version
151
131
  version: '0'
152
132
  requirements: []
153
- rubyforge_project:
154
- rubygems_version: 2.5.2
155
- signing_key:
133
+ rubygems_version: 3.3.7
134
+ signing_key:
156
135
  specification_version: 4
157
136
  summary: Makes http fun! Also, makes consuming restful web services dead easy.
158
- test_files:
159
- - features/basic_authentication.feature
160
- - features/command_line.feature
161
- - features/deals_with_http_error_codes.feature
162
- - features/digest_authentication.feature
163
- - features/handles_compressed_responses.feature
164
- - features/handles_multiple_formats.feature
165
- - features/steps/env.rb
166
- - features/steps/httparty_response_steps.rb
167
- - features/steps/httparty_steps.rb
168
- - features/steps/mongrel_helper.rb
169
- - features/steps/remote_service_steps.rb
170
- - features/supports_read_timeout_option.feature
171
- - features/supports_redirection.feature
172
- - features/supports_timeout_option.feature
173
- - spec/fixtures/delicious.xml
174
- - spec/fixtures/empty.xml
175
- - spec/fixtures/google.html
176
- - spec/fixtures/ssl/generate.sh
177
- - spec/fixtures/ssl/generated/1fe462c2.0
178
- - spec/fixtures/ssl/generated/bogushost.crt
179
- - spec/fixtures/ssl/generated/ca.crt
180
- - spec/fixtures/ssl/generated/ca.key
181
- - spec/fixtures/ssl/generated/selfsigned.crt
182
- - spec/fixtures/ssl/generated/server.crt
183
- - spec/fixtures/ssl/generated/server.key
184
- - spec/fixtures/ssl/openssl-exts.cnf
185
- - spec/fixtures/twitter.csv
186
- - spec/fixtures/twitter.json
187
- - spec/fixtures/twitter.xml
188
- - spec/fixtures/undefined_method_add_node_for_nil.xml
189
- - spec/httparty/connection_adapter_spec.rb
190
- - spec/httparty/cookie_hash_spec.rb
191
- - spec/httparty/exception_spec.rb
192
- - spec/httparty/hash_conversions_spec.rb
193
- - spec/httparty/logger/apache_formatter_spec.rb
194
- - spec/httparty/logger/curl_formatter_spec.rb
195
- - spec/httparty/logger/logger_spec.rb
196
- - spec/httparty/net_digest_auth_spec.rb
197
- - spec/httparty/parser_spec.rb
198
- - spec/httparty/request_spec.rb
199
- - spec/httparty/response_spec.rb
200
- - spec/httparty/ssl_spec.rb
201
- - spec/httparty_spec.rb
202
- - spec/spec_helper.rb
203
- - spec/support/ssl_test_helper.rb
204
- - spec/support/ssl_test_server.rb
205
- - spec/support/stub_response.rb
137
+ test_files: []
data/.simplecov DELETED
@@ -1 +0,0 @@
1
- SimpleCov.start "test_frameworks"
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.0.0
4
- - 2.1.8
5
- - 2.2.4
6
- - 2.3.0
7
- bundler_args: --without development
8
- before_install: gem install bundler
@@ -1,20 +0,0 @@
1
- Feature: Basic Authentication
2
-
3
- As a developer
4
- I want to be able to use a service that requires Basic Authentication
5
- Because that is not an uncommon requirement
6
-
7
- Scenario: Passing no credentials to a page requiring Basic Authentication
8
- Given a restricted page at '/basic_auth.html'
9
- When I call HTTParty#get with '/basic_auth.html'
10
- Then it should return a response with a 401 response code
11
-
12
- Scenario: Passing proper credentials to a page requiring Basic Authentication
13
- Given a remote service that returns 'Authenticated Page'
14
- And that service is accessed at the path '/basic_auth.html'
15
- And that service is protected by Basic Authentication
16
- And that service requires the username 'jcash' with the password 'maninblack'
17
- When I call HTTParty#get with '/basic_auth.html' and a basic_auth hash:
18
- | username | password |
19
- | jcash | maninblack |
20
- Then the return value should match 'Authenticated Page'
@@ -1,95 +0,0 @@
1
- @command_line
2
- Feature: Command Line
3
-
4
- As a developer
5
- I want to be able to harness the power of HTTParty from the command line
6
- Because that would make quick testing and debugging easy
7
-
8
- Scenario: Show help information
9
- When I run `httparty --help`
10
- Then the output should contain "-f, --format [FORMAT]"
11
-
12
- Scenario: Show current version
13
- When I run `httparty --version`
14
- Then the output should contain "Version:"
15
- And the output should not contain "You need to provide a URL"
16
-
17
- Scenario: Make a get request
18
- Given a remote deflate service on port '4001'
19
- And the response from the service has a body of 'GET request'
20
- And that service is accessed at the path '/fun'
21
- When I run `httparty http://0.0.0.0:4001/fun`
22
- Then the output should contain "GET request"
23
-
24
- Scenario: Make a post request
25
- Given a remote deflate service on port '4002'
26
- And the response from the service has a body of 'POST request'
27
- And that service is accessed at the path '/fun'
28
- When I run `httparty http://0.0.0.0:4002/fun --action post --data "a=1&b=2"`
29
- Then the output should contain "POST request"
30
-
31
- Scenario: Make a put request
32
- Given a remote deflate service on port '4003'
33
- And the response from the service has a body of 'PUT request'
34
- And that service is accessed at the path '/fun'
35
- When I run `httparty http://0.0.0.0:4003/fun --action put --data "a=1&b=2"`
36
- Then the output should contain "PUT request"
37
-
38
- Scenario: Make a delete request
39
- Given a remote deflate service on port '4004'
40
- And the response from the service has a body of 'DELETE request'
41
- And that service is accessed at the path '/fun'
42
- When I run `httparty http://0.0.0.0:4004/fun --action delete`
43
- Then the output should contain "DELETE request"
44
-
45
- Scenario: Set a verbose mode
46
- Given a remote deflate service on port '4005'
47
- And the response from the service has a body of 'Some request'
48
- And that service is accessed at the path '/fun'
49
- When I run `httparty http://0.0.0.0:4005/fun --verbose`
50
- Then the output should contain "content-length"
51
-
52
- Scenario: Use service with basic authentication
53
- Given a remote deflate service on port '4006'
54
- And the response from the service has a body of 'Successfull authentication'
55
- And that service is accessed at the path '/fun'
56
- And that service is protected by Basic Authentication
57
- And that service requires the username 'user' with the password 'pass'
58
- When I run `httparty http://0.0.0.0:4006/fun --user 'user:pass'`
59
- Then the output should contain "Successfull authentication"
60
-
61
- Scenario: Get response in plain format
62
- Given a remote deflate service on port '4007'
63
- And the response from the service has a body of 'Some request'
64
- And that service is accessed at the path '/fun'
65
- When I run `httparty http://0.0.0.0:4007/fun --format plain`
66
- Then the output should contain "Some request"
67
-
68
- Scenario: Get response in json format
69
- Given a remote deflate service on port '4008'
70
- Given a remote service that returns '{ "jennings": "waylon", "cash": "johnny" }'
71
- And that service is accessed at the path '/service.json'
72
- And the response from the service has a Content-Type of 'application/json'
73
- When I run `httparty http://0.0.0.0:4008/service.json --format json`
74
- Then the output should contain '"jennings": "waylon"'
75
-
76
- Scenario: Get response in xml format
77
- Given a remote deflate service on port '4009'
78
- Given a remote service that returns '<singer>waylon jennings</singer>'
79
- And that service is accessed at the path '/service.xml'
80
- And the response from the service has a Content-Type of 'text/xml'
81
- When I run `httparty http://0.0.0.0:4009/service.xml --format xml`
82
- Then the output should contain "<singer>"
83
-
84
- Scenario: Get response in csv format
85
- Given a remote deflate service on port '4010'
86
- Given a remote service that returns:
87
- """
88
- "Last Name","Name"
89
- "jennings","waylon"
90
- "cash","johnny"
91
- """
92
- And that service is accessed at the path '/service.csv'
93
- And the response from the service has a Content-Type of 'application/csv'
94
- When I run `httparty http://0.0.0.0:4010/service.csv --format csv`
95
- Then the output should contain '["Last Name", "Name"]'
@@ -1,26 +0,0 @@
1
- Feature: Deals with HTTP error codes
2
-
3
- As a developer
4
- I want to be informed of non-successful responses
5
- Because sometimes thing explode
6
- And I should probably know what happened
7
-
8
- Scenario: A response of '404 - Not Found'
9
- Given a remote service that returns a 404 status code
10
- And that service is accessed at the path '/404_service.html'
11
- When I call HTTParty#get with '/404_service.html'
12
- Then it should return a response with a 404 response code
13
-
14
- Scenario: A response of '500 - Internal Server Error'
15
- Given a remote service that returns a 500 status code
16
- And that service is accessed at the path '/500_service.html'
17
- When I call HTTParty#get with '/500_service.html'
18
- Then it should return a response with a 500 response code
19
-
20
- Scenario: A non-successful response where I need the body
21
- Given a remote service that returns a 400 status code
22
- And the response from the service has a body of 'Bad response'
23
- And that service is accessed at the path '/400_service.html'
24
- When I call HTTParty#get with '/400_service.html'
25
- Then it should return a response with a 400 response code
26
- And the return value should match 'Bad response'
@@ -1,30 +0,0 @@
1
- Feature: Digest Authentication
2
-
3
- As a developer
4
- I want to be able to use a service that requires Digest Authentication
5
- Because that is not an uncommon requirement
6
-
7
- Scenario: Passing no credentials to a page requiring Digest Authentication
8
- Given a restricted page at '/digest_auth.html'
9
- When I call HTTParty#get with '/digest_auth.html'
10
- Then it should return a response with a 401 response code
11
-
12
- Scenario: Passing proper credentials to a page requiring Digest Authentication
13
- Given a remote service that returns 'Digest Authenticated Page'
14
- And that service is accessed at the path '/digest_auth.html'
15
- And that service is protected by Digest Authentication
16
- And that service requires the username 'jcash' with the password 'maninblack'
17
- When I call HTTParty#get with '/digest_auth.html' and a digest_auth hash:
18
- | username | password |
19
- | jcash | maninblack |
20
- Then the return value should match 'Digest Authenticated Page'
21
-
22
- Scenario: Passing proper credentials to a page requiring Digest Authentication using md5-sess algorithm
23
- Given a remote service that returns 'Digest Authenticated Page Using MD5-sess'
24
- And that service is accessed at the path '/digest_auth.html'
25
- And that service is protected by MD5-sess Digest Authentication
26
- And that service requires the username 'jcash' with the password 'maninblack'
27
- When I call HTTParty#get with '/digest_auth.html' and a digest_auth hash:
28
- | username | password |
29
- | jcash | maninblack |
30
- Then the return value should match 'Digest Authenticated Page Using MD5-sess'
@@ -1,27 +0,0 @@
1
- Feature: Handles Compressed Responses
2
-
3
- In order to save bandwidth
4
- As a developer
5
- I want to uncompress compressed responses
6
-
7
- Scenario: Supports deflate encoding
8
- Given a remote deflate service
9
- And the response from the service has a body of '<h1>Some HTML</h1>'
10
- And that service is accessed at the path '/deflate_service.html'
11
- When I call HTTParty#get with '/deflate_service.html'
12
- Then the return value should match '<h1>Some HTML</h1>'
13
-
14
- Scenario: Supports gzip encoding
15
- Given a remote gzip service
16
- And the response from the service has a body of '<h1>Some HTML</h1>'
17
- And that service is accessed at the path '/gzip_service.html'
18
- When I call HTTParty#get with '/gzip_service.html'
19
- Then the return value should match '<h1>Some HTML</h1>'
20
-
21
- Scenario: Supports HEAD request with gzip encoding
22
- Given a remote gzip service
23
- And that service is accessed at the path '/gzip_head.gz.js'
24
- When I call HTTParty#head with '/gzip_head.gz.js'
25
- Then it should return a response with a 200 response code
26
- Then it should return a response with a gzip content-encoding
27
- Then it should return a response with a blank body