httparty 0.16.2 → 0.20.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.

Potentially problematic release.


This version of httparty might be problematic. Click here for more details.

Files changed (92) hide show
  1. checksums.yaml +5 -5
  2. data/.editorconfig +18 -0
  3. data/.github/workflows/ci.yml +23 -0
  4. data/.gitignore +1 -0
  5. data/.rubocop_todo.yml +1 -1
  6. data/Changelog.md +72 -0
  7. data/Gemfile +5 -0
  8. data/README.md +5 -5
  9. data/docs/README.md +70 -5
  10. data/examples/README.md +28 -11
  11. data/examples/aaws.rb +6 -2
  12. data/examples/body_stream.rb +14 -0
  13. data/examples/idn.rb +10 -0
  14. data/examples/microsoft_graph.rb +52 -0
  15. data/examples/multipart.rb +22 -0
  16. data/examples/peer_cert.rb +9 -0
  17. data/examples/stream_download.rb +8 -2
  18. data/httparty.gemspec +3 -3
  19. data/lib/httparty/connection_adapter.rb +59 -16
  20. data/lib/httparty/cookie_hash.rb +10 -8
  21. data/lib/httparty/decompressor.rb +92 -0
  22. data/lib/httparty/exceptions.rb +3 -1
  23. data/lib/httparty/hash_conversions.rb +10 -4
  24. data/lib/httparty/headers_processor.rb +32 -0
  25. data/lib/httparty/logger/apache_formatter.rb +31 -6
  26. data/lib/httparty/logger/curl_formatter.rb +9 -7
  27. data/lib/httparty/logger/logger.rb +5 -1
  28. data/lib/httparty/logger/logstash_formatter.rb +61 -0
  29. data/lib/httparty/module_inheritable_attributes.rb +6 -4
  30. data/lib/httparty/net_digest_auth.rb +15 -15
  31. data/lib/httparty/parser.rb +9 -5
  32. data/lib/httparty/request/body.rb +46 -27
  33. data/lib/httparty/request/multipart_boundary.rb +2 -0
  34. data/lib/httparty/request.rb +75 -96
  35. data/lib/httparty/response/headers.rb +4 -2
  36. data/lib/httparty/response.rb +51 -8
  37. data/lib/httparty/response_fragment.rb +21 -0
  38. data/lib/httparty/text_encoder.rb +72 -0
  39. data/lib/httparty/utils.rb +13 -0
  40. data/lib/httparty/version.rb +3 -1
  41. data/lib/httparty.rb +70 -24
  42. data/website/css/common.css +1 -1
  43. metadata +33 -104
  44. data/.travis.yml +0 -10
  45. data/features/basic_authentication.feature +0 -20
  46. data/features/command_line.feature +0 -95
  47. data/features/deals_with_http_error_codes.feature +0 -26
  48. data/features/digest_authentication.feature +0 -30
  49. data/features/handles_compressed_responses.feature +0 -27
  50. data/features/handles_multiple_formats.feature +0 -57
  51. data/features/steps/env.rb +0 -27
  52. data/features/steps/httparty_response_steps.rb +0 -56
  53. data/features/steps/httparty_steps.rb +0 -43
  54. data/features/steps/mongrel_helper.rb +0 -127
  55. data/features/steps/remote_service_steps.rb +0 -92
  56. data/features/supports_read_timeout_option.feature +0 -13
  57. data/features/supports_redirection.feature +0 -22
  58. data/features/supports_timeout_option.feature +0 -13
  59. data/spec/fixtures/delicious.xml +0 -23
  60. data/spec/fixtures/empty.xml +0 -0
  61. data/spec/fixtures/google.html +0 -3
  62. data/spec/fixtures/ssl/generate.sh +0 -29
  63. data/spec/fixtures/ssl/generated/bogushost.crt +0 -13
  64. data/spec/fixtures/ssl/generated/ca.crt +0 -16
  65. data/spec/fixtures/ssl/generated/ca.key +0 -15
  66. data/spec/fixtures/ssl/generated/selfsigned.crt +0 -14
  67. data/spec/fixtures/ssl/generated/server.crt +0 -13
  68. data/spec/fixtures/ssl/generated/server.key +0 -15
  69. data/spec/fixtures/ssl/openssl-exts.cnf +0 -9
  70. data/spec/fixtures/tiny.gif +0 -0
  71. data/spec/fixtures/twitter.csv +0 -2
  72. data/spec/fixtures/twitter.json +0 -1
  73. data/spec/fixtures/twitter.xml +0 -403
  74. data/spec/fixtures/undefined_method_add_node_for_nil.xml +0 -2
  75. data/spec/httparty/connection_adapter_spec.rb +0 -498
  76. data/spec/httparty/cookie_hash_spec.rb +0 -100
  77. data/spec/httparty/exception_spec.rb +0 -45
  78. data/spec/httparty/hash_conversions_spec.rb +0 -56
  79. data/spec/httparty/logger/apache_formatter_spec.rb +0 -41
  80. data/spec/httparty/logger/curl_formatter_spec.rb +0 -119
  81. data/spec/httparty/logger/logger_spec.rb +0 -38
  82. data/spec/httparty/net_digest_auth_spec.rb +0 -270
  83. data/spec/httparty/parser_spec.rb +0 -190
  84. data/spec/httparty/request/body_spec.rb +0 -60
  85. data/spec/httparty/request_spec.rb +0 -1312
  86. data/spec/httparty/response_spec.rb +0 -347
  87. data/spec/httparty/ssl_spec.rb +0 -74
  88. data/spec/httparty_spec.rb +0 -896
  89. data/spec/spec_helper.rb +0 -51
  90. data/spec/support/ssl_test_helper.rb +0 -47
  91. data/spec/support/ssl_test_server.rb +0 -80
  92. data/spec/support/stub_response.rb +0 -49
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HTTParty
4
+ module Utils
5
+ def self.stringify_keys(hash)
6
+ return hash.transform_keys(&:to_s) if hash.respond_to?(:transform_keys)
7
+
8
+ hash.each_with_object({}) do |(key, value), new_hash|
9
+ new_hash[key.to_s] = value
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module HTTParty
2
- VERSION = "0.16.2"
4
+ VERSION = '0.20.0'
3
5
  end
data/lib/httparty.rb CHANGED
@@ -1,9 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
4
  require 'net/http'
3
5
  require 'net/https'
4
6
  require 'uri'
5
7
  require 'zlib'
6
8
  require 'multi_xml'
9
+ require 'mime/types'
7
10
  require 'json'
8
11
  require 'csv'
9
12
 
@@ -13,6 +16,11 @@ require 'httparty/net_digest_auth'
13
16
  require 'httparty/version'
14
17
  require 'httparty/connection_adapter'
15
18
  require 'httparty/logger/logger'
19
+ require 'httparty/request/body'
20
+ require 'httparty/response_fragment'
21
+ require 'httparty/decompressor'
22
+ require 'httparty/text_encoder'
23
+ require 'httparty/headers_processor'
16
24
 
17
25
  # @see HTTParty::ClassMethods
18
26
  module HTTParty
@@ -21,8 +29,8 @@ module HTTParty
21
29
  base.send :include, ModuleInheritableAttributes
22
30
  base.send(:mattr_inheritable, :default_options)
23
31
  base.send(:mattr_inheritable, :default_cookies)
24
- base.instance_variable_set("@default_options", {})
25
- base.instance_variable_set("@default_cookies", CookieHash.new)
32
+ base.instance_variable_set(:@default_options, {})
33
+ base.instance_variable_set(:@default_cookies, CookieHash.new)
26
34
  end
27
35
 
28
36
  # == Common Request Options
@@ -36,10 +44,11 @@ module HTTParty
36
44
  # [:+limit+:] Maximum number of redirects to follow. Takes precedences over :+no_follow+.
37
45
  # [:+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
46
  # [:+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.
47
+ # [:+local_host+:] Local address to bind to before connecting.
48
+ # [:+local_port+:] Local port to bind to before connecting.
49
+ # [:+body_stream+:] Allow streaming to a REST server to specify a body_stream.
50
+ # [:+stream_body+:] Allow for streaming large files without loading them into memory.
51
+ # [:+multipart+:] Force content-type to be multipart
43
52
  #
44
53
  # 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
54
  # * :+base_uri+: see HTTParty::ClassMethods.base_uri.
@@ -168,9 +177,9 @@ module HTTParty
168
177
  # include HTTParty
169
178
  # default_timeout 10
170
179
  # 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
180
+ def default_timeout(value)
181
+ validate_timeout_argument(__method__, value)
182
+ default_options[:timeout] = value
174
183
  end
175
184
 
176
185
  # Allows setting a default open_timeout for all HTTP calls in seconds
@@ -179,9 +188,9 @@ module HTTParty
179
188
  # include HTTParty
180
189
  # open_timeout 10
181
190
  # 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
191
+ def open_timeout(value)
192
+ validate_timeout_argument(__method__, value)
193
+ default_options[:open_timeout] = value
185
194
  end
186
195
 
187
196
  # Allows setting a default read_timeout for all HTTP calls in seconds
@@ -190,11 +199,24 @@ module HTTParty
190
199
  # include HTTParty
191
200
  # read_timeout 10
192
201
  # 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
202
+ def read_timeout(value)
203
+ validate_timeout_argument(__method__, value)
204
+ default_options[:read_timeout] = value
205
+ end
206
+
207
+ # Allows setting a default write_timeout for all HTTP calls in seconds
208
+ # Supported by Ruby > 2.6.0
209
+ #
210
+ # class Foo
211
+ # include HTTParty
212
+ # write_timeout 10
213
+ # end
214
+ def write_timeout(value)
215
+ validate_timeout_argument(__method__, value)
216
+ default_options[:write_timeout] = value
196
217
  end
197
218
 
219
+
198
220
  # Set an output stream for debugging, defaults to $stderr.
199
221
  # The output stream is passed on to Net::HTTP#set_debug_output.
200
222
  #
@@ -380,6 +402,22 @@ module HTTParty
380
402
  default_options[:ssl_version] = version
381
403
  end
382
404
 
405
+ # Deactivate automatic decompression of the response body.
406
+ # This will require you to explicitly handle body decompression
407
+ # by inspecting the Content-Encoding response header.
408
+ #
409
+ # Refer to docs/README.md "HTTP Compression" section for
410
+ # further details.
411
+ #
412
+ # @example
413
+ # class Foo
414
+ # include HTTParty
415
+ # skip_decompression
416
+ # end
417
+ def skip_decompression(value = true)
418
+ default_options[:skip_decompression] = !!value
419
+ end
420
+
383
421
  # Allows setting of SSL ciphers to use. This only works in Ruby 1.9+.
384
422
  # You can get a list of valid specific ciphers from OpenSSL::Cipher.ciphers.
385
423
  # You also can specify a cipher suite here, listed here at openssl.org:
@@ -546,10 +584,22 @@ module HTTParty
546
584
  perform_request Net::HTTP::Mkcol, path, options, &block
547
585
  end
548
586
 
587
+ def lock(path, options = {}, &block)
588
+ perform_request Net::HTTP::Lock, path, options, &block
589
+ end
590
+
591
+ def unlock(path, options = {}, &block)
592
+ perform_request Net::HTTP::Unlock, path, options, &block
593
+ end
594
+
549
595
  attr_reader :default_options
550
596
 
551
597
  private
552
598
 
599
+ def validate_timeout_argument(timeout_type, value)
600
+ raise ArgumentError, "#{ timeout_type } must be an integer or float" unless value && (value.is_a?(Integer) || value.is_a?(Float))
601
+ end
602
+
553
603
  def ensure_method_maintained_across_redirects(options)
554
604
  unless options.key?(:maintain_method_across_redirects)
555
605
  options[:maintain_method_across_redirects] = true
@@ -558,26 +608,21 @@ module HTTParty
558
608
 
559
609
  def perform_request(http_method, path, options, &block) #:nodoc:
560
610
  options = ModuleInheritableAttributes.hash_deep_dup(default_options).merge(options)
561
- process_headers(options)
611
+ HeadersProcessor.new(headers, options).call
562
612
  process_cookies(options)
563
613
  Request.new(http_method, path, options).perform(&block)
564
614
  end
565
615
 
566
- def process_headers(options)
567
- if options[:headers] && headers.any?
568
- options[:headers] = headers.merge(options[:headers])
569
- end
570
- end
571
-
572
616
  def process_cookies(options) #:nodoc:
573
617
  return unless options[:cookies] || default_cookies.any?
574
618
  options[:headers] ||= headers.dup
575
- options[:headers]["cookie"] = cookies.merge(options.delete(:cookies) || {}).to_cookie_string
619
+ options[:headers]['cookie'] = cookies.merge(options.delete(:cookies) || {}).to_cookie_string
576
620
  end
577
621
 
578
622
  def validate_format
579
623
  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(', ')}"
624
+ supported_format_names = parser.supported_formats.map(&:to_s).sort.join(', ')
625
+ raise UnsupportedFormat, "'#{format.inspect}' Must be one of: #{supported_format_names}"
581
626
  end
582
627
  end
583
628
  end
@@ -635,6 +680,7 @@ module HTTParty
635
680
  end
636
681
 
637
682
  require 'httparty/hash_conversions'
683
+ require 'httparty/utils'
638
684
  require 'httparty/exceptions'
639
685
  require 'httparty/parser'
640
686
  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,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: httparty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.2
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Nunemaker
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-03-30 00:00:00.000000000 Z
12
+ date: 2021-09-29 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: mime-types
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '3.0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '3.0'
28
42
  description: Makes http fun! Also, makes consuming restful web services dead easy.
29
43
  email:
30
44
  - nunemaker@gmail.com
@@ -33,11 +47,12 @@ 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
55
  - ".simplecov"
40
- - ".travis.yml"
41
56
  - CONTRIBUTING.md
42
57
  - Changelog.md
43
58
  - Gemfile
@@ -51,13 +66,18 @@ files:
51
66
  - examples/README.md
52
67
  - examples/aaws.rb
53
68
  - examples/basic.rb
69
+ - examples/body_stream.rb
54
70
  - examples/crack.rb
55
71
  - examples/custom_parsers.rb
56
72
  - examples/delicious.rb
57
73
  - examples/google.rb
58
74
  - examples/headers_and_user_agents.rb
75
+ - examples/idn.rb
59
76
  - examples/logging.rb
77
+ - examples/microsoft_graph.rb
78
+ - examples/multipart.rb
60
79
  - examples/nokogiri_html_parser.rb
80
+ - examples/peer_cert.rb
61
81
  - examples/rescue_json.rb
62
82
  - examples/rubyurl.rb
63
83
  - examples/stackexchange.rb
@@ -65,29 +85,18 @@ files:
65
85
  - examples/tripit_sign_in.rb
66
86
  - examples/twitter.rb
67
87
  - 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
88
  - httparty.gemspec
83
89
  - lib/httparty.rb
84
90
  - lib/httparty/connection_adapter.rb
85
91
  - lib/httparty/cookie_hash.rb
92
+ - lib/httparty/decompressor.rb
86
93
  - lib/httparty/exceptions.rb
87
94
  - lib/httparty/hash_conversions.rb
95
+ - lib/httparty/headers_processor.rb
88
96
  - lib/httparty/logger/apache_formatter.rb
89
97
  - lib/httparty/logger/curl_formatter.rb
90
98
  - lib/httparty/logger/logger.rb
99
+ - lib/httparty/logger/logstash_formatter.rb
91
100
  - lib/httparty/module_inheritable_attributes.rb
92
101
  - lib/httparty/net_digest_auth.rb
93
102
  - lib/httparty/parser.rb
@@ -96,45 +105,14 @@ files:
96
105
  - lib/httparty/request/multipart_boundary.rb
97
106
  - lib/httparty/response.rb
98
107
  - lib/httparty/response/headers.rb
108
+ - lib/httparty/response_fragment.rb
109
+ - lib/httparty/text_encoder.rb
110
+ - lib/httparty/utils.rb
99
111
  - lib/httparty/version.rb
100
112
  - script/release
101
- - spec/fixtures/delicious.xml
102
- - spec/fixtures/empty.xml
103
- - spec/fixtures/google.html
104
- - spec/fixtures/ssl/generate.sh
105
- - spec/fixtures/ssl/generated/bogushost.crt
106
- - spec/fixtures/ssl/generated/ca.crt
107
- - spec/fixtures/ssl/generated/ca.key
108
- - spec/fixtures/ssl/generated/selfsigned.crt
109
- - spec/fixtures/ssl/generated/server.crt
110
- - spec/fixtures/ssl/generated/server.key
111
- - spec/fixtures/ssl/openssl-exts.cnf
112
- - spec/fixtures/tiny.gif
113
- - spec/fixtures/twitter.csv
114
- - spec/fixtures/twitter.json
115
- - spec/fixtures/twitter.xml
116
- - spec/fixtures/undefined_method_add_node_for_nil.xml
117
- - spec/httparty/connection_adapter_spec.rb
118
- - spec/httparty/cookie_hash_spec.rb
119
- - spec/httparty/exception_spec.rb
120
- - spec/httparty/hash_conversions_spec.rb
121
- - spec/httparty/logger/apache_formatter_spec.rb
122
- - spec/httparty/logger/curl_formatter_spec.rb
123
- - spec/httparty/logger/logger_spec.rb
124
- - spec/httparty/net_digest_auth_spec.rb
125
- - spec/httparty/parser_spec.rb
126
- - spec/httparty/request/body_spec.rb
127
- - spec/httparty/request_spec.rb
128
- - spec/httparty/response_spec.rb
129
- - spec/httparty/ssl_spec.rb
130
- - spec/httparty_spec.rb
131
- - spec/spec_helper.rb
132
- - spec/support/ssl_test_helper.rb
133
- - spec/support/ssl_test_server.rb
134
- - spec/support/stub_response.rb
135
113
  - website/css/common.css
136
114
  - website/index.html
137
- homepage: http://jnunemaker.github.com/httparty
115
+ homepage: https://github.com/jnunemaker/httparty
138
116
  licenses:
139
117
  - MIT
140
118
  metadata: {}
@@ -146,64 +124,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
146
124
  requirements:
147
125
  - - ">="
148
126
  - !ruby/object:Gem::Version
149
- version: 2.0.0
127
+ version: 2.3.0
150
128
  required_rubygems_version: !ruby/object:Gem::Requirement
151
129
  requirements:
152
130
  - - ">="
153
131
  - !ruby/object:Gem::Version
154
132
  version: '0'
155
133
  requirements: []
156
- rubyforge_project:
157
- rubygems_version: 2.6.14
134
+ rubygems_version: 3.0.3
158
135
  signing_key:
159
136
  specification_version: 4
160
137
  summary: Makes http fun! Also, makes consuming restful web services dead easy.
161
- test_files:
162
- - features/basic_authentication.feature
163
- - features/command_line.feature
164
- - features/deals_with_http_error_codes.feature
165
- - features/digest_authentication.feature
166
- - features/handles_compressed_responses.feature
167
- - features/handles_multiple_formats.feature
168
- - features/steps/env.rb
169
- - features/steps/httparty_response_steps.rb
170
- - features/steps/httparty_steps.rb
171
- - features/steps/mongrel_helper.rb
172
- - features/steps/remote_service_steps.rb
173
- - features/supports_read_timeout_option.feature
174
- - features/supports_redirection.feature
175
- - features/supports_timeout_option.feature
176
- - spec/fixtures/delicious.xml
177
- - spec/fixtures/empty.xml
178
- - spec/fixtures/google.html
179
- - spec/fixtures/ssl/generate.sh
180
- - spec/fixtures/ssl/generated/bogushost.crt
181
- - spec/fixtures/ssl/generated/ca.crt
182
- - spec/fixtures/ssl/generated/ca.key
183
- - spec/fixtures/ssl/generated/selfsigned.crt
184
- - spec/fixtures/ssl/generated/server.crt
185
- - spec/fixtures/ssl/generated/server.key
186
- - spec/fixtures/ssl/openssl-exts.cnf
187
- - spec/fixtures/tiny.gif
188
- - spec/fixtures/twitter.csv
189
- - spec/fixtures/twitter.json
190
- - spec/fixtures/twitter.xml
191
- - spec/fixtures/undefined_method_add_node_for_nil.xml
192
- - spec/httparty/connection_adapter_spec.rb
193
- - spec/httparty/cookie_hash_spec.rb
194
- - spec/httparty/exception_spec.rb
195
- - spec/httparty/hash_conversions_spec.rb
196
- - spec/httparty/logger/apache_formatter_spec.rb
197
- - spec/httparty/logger/curl_formatter_spec.rb
198
- - spec/httparty/logger/logger_spec.rb
199
- - spec/httparty/net_digest_auth_spec.rb
200
- - spec/httparty/parser_spec.rb
201
- - spec/httparty/request/body_spec.rb
202
- - spec/httparty/request_spec.rb
203
- - spec/httparty/response_spec.rb
204
- - spec/httparty/ssl_spec.rb
205
- - spec/httparty_spec.rb
206
- - spec/spec_helper.rb
207
- - spec/support/ssl_test_helper.rb
208
- - spec/support/ssl_test_server.rb
209
- - spec/support/stub_response.rb
138
+ test_files: []
data/.travis.yml DELETED
@@ -1,10 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.0.0
4
- - 2.1.10
5
- - 2.2.9
6
- - 2.3.6
7
- - 2.4.3
8
- - 2.5.0
9
- bundler_args: --without development
10
- 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