httparty 0.13.0 → 0.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +5 -5
  2. data/.editorconfig +18 -0
  3. data/.github/workflows/ci.yml +26 -0
  4. data/.gitignore +4 -0
  5. data/.rubocop.yml +92 -0
  6. data/.rubocop_todo.yml +124 -0
  7. data/CONTRIBUTING.md +23 -0
  8. data/Changelog.md +557 -0
  9. data/Gemfile +15 -3
  10. data/Guardfile +4 -3
  11. data/README.md +24 -25
  12. data/Rakefile +5 -7
  13. data/bin/httparty +20 -14
  14. data/docs/README.md +191 -0
  15. data/examples/README.md +89 -0
  16. data/examples/aaws.rb +10 -6
  17. data/examples/basic.rb +6 -10
  18. data/examples/body_stream.rb +14 -0
  19. data/examples/crack.rb +2 -2
  20. data/examples/custom_parsers.rb +6 -5
  21. data/examples/delicious.rb +8 -8
  22. data/examples/google.rb +2 -2
  23. data/examples/headers_and_user_agents.rb +7 -3
  24. data/examples/idn.rb +10 -0
  25. data/examples/logging.rb +36 -0
  26. data/examples/microsoft_graph.rb +52 -0
  27. data/examples/multipart.rb +22 -0
  28. data/examples/nokogiri_html_parser.rb +0 -3
  29. data/examples/peer_cert.rb +9 -0
  30. data/examples/rescue_json.rb +17 -0
  31. data/examples/rubyurl.rb +3 -3
  32. data/examples/stackexchange.rb +24 -0
  33. data/examples/stream_download.rb +26 -0
  34. data/examples/tripit_sign_in.rb +20 -9
  35. data/examples/twitter.rb +7 -7
  36. data/examples/whoismyrep.rb +1 -1
  37. data/httparty.gemspec +13 -9
  38. data/lib/httparty/connection_adapter.rb +105 -25
  39. data/lib/httparty/cookie_hash.rb +10 -9
  40. data/lib/httparty/decompressor.rb +102 -0
  41. data/lib/httparty/exceptions.rb +8 -2
  42. data/lib/httparty/hash_conversions.rb +39 -19
  43. data/lib/httparty/headers_processor.rb +32 -0
  44. data/lib/httparty/logger/apache_formatter.rb +47 -0
  45. data/lib/httparty/logger/curl_formatter.rb +93 -0
  46. data/lib/httparty/logger/logger.rb +22 -10
  47. data/lib/httparty/logger/logstash_formatter.rb +61 -0
  48. data/lib/httparty/module_inheritable_attributes.rb +6 -4
  49. data/lib/httparty/net_digest_auth.rb +76 -25
  50. data/lib/httparty/parser.rb +28 -15
  51. data/lib/httparty/request/body.rb +105 -0
  52. data/lib/httparty/request/multipart_boundary.rb +13 -0
  53. data/lib/httparty/request.rb +218 -130
  54. data/lib/httparty/response/headers.rb +23 -19
  55. data/lib/httparty/response.rb +99 -15
  56. data/lib/httparty/response_fragment.rb +21 -0
  57. data/lib/httparty/text_encoder.rb +72 -0
  58. data/lib/httparty/utils.rb +13 -0
  59. data/lib/httparty/version.rb +3 -1
  60. data/lib/httparty.rb +191 -83
  61. data/website/css/common.css +1 -1
  62. data/website/index.html +3 -3
  63. metadata +50 -120
  64. data/.travis.yml +0 -7
  65. data/History +0 -303
  66. data/features/basic_authentication.feature +0 -20
  67. data/features/command_line.feature +0 -7
  68. data/features/deals_with_http_error_codes.feature +0 -26
  69. data/features/digest_authentication.feature +0 -20
  70. data/features/handles_compressed_responses.feature +0 -27
  71. data/features/handles_multiple_formats.feature +0 -57
  72. data/features/steps/env.rb +0 -22
  73. data/features/steps/httparty_response_steps.rb +0 -52
  74. data/features/steps/httparty_steps.rb +0 -35
  75. data/features/steps/mongrel_helper.rb +0 -94
  76. data/features/steps/remote_service_steps.rb +0 -74
  77. data/features/supports_redirection.feature +0 -22
  78. data/features/supports_timeout_option.feature +0 -13
  79. data/lib/httparty/core_extensions.rb +0 -32
  80. data/lib/httparty/logger/apache_logger.rb +0 -22
  81. data/lib/httparty/logger/curl_logger.rb +0 -48
  82. data/spec/fixtures/delicious.xml +0 -23
  83. data/spec/fixtures/empty.xml +0 -0
  84. data/spec/fixtures/google.html +0 -3
  85. data/spec/fixtures/ssl/generate.sh +0 -29
  86. data/spec/fixtures/ssl/generated/1fe462c2.0 +0 -16
  87. data/spec/fixtures/ssl/generated/bogushost.crt +0 -13
  88. data/spec/fixtures/ssl/generated/ca.crt +0 -16
  89. data/spec/fixtures/ssl/generated/ca.key +0 -15
  90. data/spec/fixtures/ssl/generated/selfsigned.crt +0 -14
  91. data/spec/fixtures/ssl/generated/server.crt +0 -13
  92. data/spec/fixtures/ssl/generated/server.key +0 -15
  93. data/spec/fixtures/ssl/openssl-exts.cnf +0 -9
  94. data/spec/fixtures/twitter.csv +0 -2
  95. data/spec/fixtures/twitter.json +0 -1
  96. data/spec/fixtures/twitter.xml +0 -403
  97. data/spec/fixtures/undefined_method_add_node_for_nil.xml +0 -2
  98. data/spec/httparty/connection_adapter_spec.rb +0 -298
  99. data/spec/httparty/cookie_hash_spec.rb +0 -83
  100. data/spec/httparty/exception_spec.rb +0 -23
  101. data/spec/httparty/logger/apache_logger_spec.rb +0 -26
  102. data/spec/httparty/logger/curl_logger_spec.rb +0 -18
  103. data/spec/httparty/logger/logger_spec.rb +0 -22
  104. data/spec/httparty/net_digest_auth_spec.rb +0 -152
  105. data/spec/httparty/parser_spec.rb +0 -165
  106. data/spec/httparty/request_spec.rb +0 -631
  107. data/spec/httparty/response_spec.rb +0 -221
  108. data/spec/httparty/ssl_spec.rb +0 -74
  109. data/spec/httparty_spec.rb +0 -764
  110. data/spec/spec.opts +0 -2
  111. data/spec/spec_helper.rb +0 -37
  112. data/spec/support/ssl_test_helper.rb +0 -47
  113. data/spec/support/ssl_test_server.rb +0 -80
  114. data/spec/support/stub_response.rb +0 -43
@@ -1,165 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
2
-
3
- describe HTTParty::Parser do
4
- describe ".SupportedFormats" do
5
- it "returns a hash" do
6
- HTTParty::Parser::SupportedFormats.should be_instance_of(Hash)
7
- end
8
- end
9
-
10
- describe ".call" do
11
- it "generates an HTTParty::Parser instance with the given body and format" do
12
- HTTParty::Parser.should_receive(:new).with('body', :plain).and_return(stub(:parse => nil))
13
- HTTParty::Parser.call('body', :plain)
14
- end
15
-
16
- it "calls #parse on the parser" do
17
- parser = mock('Parser')
18
- parser.should_receive(:parse)
19
- HTTParty::Parser.stub(:new => parser)
20
- parser = HTTParty::Parser.call('body', :plain)
21
- end
22
- end
23
-
24
- describe ".formats" do
25
- it "returns the SupportedFormats constant" do
26
- HTTParty::Parser.formats.should == HTTParty::Parser::SupportedFormats
27
- end
28
-
29
- it "returns the SupportedFormats constant for subclasses" do
30
- class MyParser < HTTParty::Parser
31
- SupportedFormats = {"application/atom+xml" => :atom}
32
- end
33
- MyParser.formats.should == {"application/atom+xml" => :atom}
34
- end
35
- end
36
-
37
- describe ".format_from_mimetype" do
38
- it "returns a symbol representing the format mimetype" do
39
- HTTParty::Parser.format_from_mimetype("text/plain").should == :plain
40
- end
41
-
42
- it "returns nil when the mimetype is not supported" do
43
- HTTParty::Parser.format_from_mimetype("application/atom+xml").should be_nil
44
- end
45
- end
46
-
47
- describe ".supported_formats" do
48
- it "returns a unique set of supported formats represented by symbols" do
49
- HTTParty::Parser.supported_formats.should == HTTParty::Parser::SupportedFormats.values.uniq
50
- end
51
- end
52
-
53
- describe ".supports_format?" do
54
- it "returns true for a supported format" do
55
- HTTParty::Parser.stub(:supported_formats => [:json])
56
- HTTParty::Parser.supports_format?(:json).should be_true
57
- end
58
-
59
- it "returns false for an unsupported format" do
60
- HTTParty::Parser.stub(:supported_formats => [])
61
- HTTParty::Parser.supports_format?(:json).should be_false
62
- end
63
- end
64
-
65
- describe "#parse" do
66
- before do
67
- @parser = HTTParty::Parser.new('body', :json)
68
- end
69
-
70
- it "attempts to parse supported formats" do
71
- @parser.stub(:supports_format? => true)
72
- @parser.should_receive(:parse_supported_format)
73
- @parser.parse
74
- end
75
-
76
- it "returns the unparsed body when the format is unsupported" do
77
- @parser.stub(:supports_format? => false)
78
- @parser.parse.should == @parser.body
79
- end
80
-
81
- it "returns nil for an empty body" do
82
- @parser.stub(:body => '')
83
- @parser.parse.should be_nil
84
- end
85
-
86
- it "returns nil for a nil body" do
87
- @parser.stub(:body => nil)
88
- @parser.parse.should be_nil
89
- end
90
-
91
- it "returns nil for a 'null' body" do
92
- @parser.stub(:body => "null")
93
- @parser.parse.should be_nil
94
- end
95
-
96
- it "returns nil for a body with spaces only" do
97
- @parser.stub(:body => " ")
98
- @parser.parse.should be_nil
99
- end
100
- end
101
-
102
- describe "#supports_format?" do
103
- it "utilizes the class method to determine if the format is supported" do
104
- HTTParty::Parser.should_receive(:supports_format?).with(:json)
105
- parser = HTTParty::Parser.new('body', :json)
106
- parser.send(:supports_format?)
107
- end
108
- end
109
-
110
- describe "#parse_supported_format" do
111
- it "calls the parser for the given format" do
112
- parser = HTTParty::Parser.new('body', :json)
113
- parser.should_receive(:json)
114
- parser.send(:parse_supported_format)
115
- end
116
-
117
- context "when a parsing method does not exist for the given format" do
118
- it "raises an exception" do
119
- parser = HTTParty::Parser.new('body', :atom)
120
- expect do
121
- parser.send(:parse_supported_format)
122
- end.to raise_error(NotImplementedError, "HTTParty::Parser has not implemented a parsing method for the :atom format.")
123
- end
124
-
125
- it "raises a useful exception message for subclasses" do
126
- atom_parser = Class.new(HTTParty::Parser) do
127
- def self.name; 'AtomParser'; end
128
- end
129
- parser = atom_parser.new 'body', :atom
130
- expect do
131
- parser.send(:parse_supported_format)
132
- end.to raise_error(NotImplementedError, "AtomParser has not implemented a parsing method for the :atom format.")
133
- end
134
- end
135
- end
136
-
137
- context "parsers" do
138
- subject do
139
- HTTParty::Parser.new('body', nil)
140
- end
141
-
142
- it "parses xml with MultiXml" do
143
- MultiXml.should_receive(:parse).with('body')
144
- subject.send(:xml)
145
- end
146
-
147
- it "parses json with JSON" do
148
- JSON.should_receive(:load).with('body', nil)
149
- subject.send(:json)
150
- end
151
-
152
- it "parses html by simply returning the body" do
153
- subject.send(:html).should == 'body'
154
- end
155
-
156
- it "parses plain text by simply returning the body" do
157
- subject.send(:plain).should == 'body'
158
- end
159
-
160
- it "parses csv with CSV" do
161
- CSV.should_receive(:parse).with('body')
162
- subject.send(:csv)
163
- end
164
- end
165
- end