http_logger 0.6.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2ee612be76637a3fa5e75db03b7fa33a7016d3b4f509c32295580e002df73bd2
4
- data.tar.gz: f7ef81b6d4c9d61dfa37626794a6bb725c1e83b36b29d824bf70bd5215bfb4e8
3
+ metadata.gz: e5e25ba1ebb81a4e187ff3a60481249bd5b9d2795c02ff5470bd635f6b0e4f79
4
+ data.tar.gz: 99d08eec0c1be45a9db701d2190c7274dbae4ed998d757c7fa83949975d33dcd
5
5
  SHA512:
6
- metadata.gz: 9d81717a77786fb2bffb89c9cce68bc1f9ef8c6d4f2960a945324db0c53831cd8c78643e3c21779f1250cf862e2dcaa5a3d6610eb5fb934c2a15ed296225c416
7
- data.tar.gz: 90132a5f50f91d39542f255680e577bd755254815df1f5332d71c73db76eadc2862a30d9b43dfc04e6cb50ce7aea30dc5143997c41a3c3cff07616eea342b285
6
+ metadata.gz: c5adf4d6151c4b382ab63010be5468638ac4697eacec5ba2872676dca44e1dc6218b4683db11d734e0e5a46e480d78293f7079307bd4e0a26a9f21a38702dd58
7
+ data.tar.gz: 8437f529565c4e73969dc1ba17f7808b3ccaa03319064057a7254f0d8489cd99e718d832e87e37ca0d2a3052907730bf2a7309bfb2aba3d32be1c65909b9da49
data/Gemfile CHANGED
@@ -1,9 +1,4 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- group :development do
4
- gem "byebug"
5
- gem "webmock"
6
- gem "rspec"
7
- gem "bundler"
8
- gem "jeweler"
9
- end
3
+ gemspec
4
+
data/Gemfile.lock CHANGED
@@ -1,86 +1,71 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ http_logger (1.0.0)
5
+
1
6
  GEM
2
7
  remote: http://rubygems.org/
3
8
  specs:
4
- addressable (2.4.0)
5
- builder (3.2.4)
6
- byebug (11.1.1)
7
- crack (0.4.3)
8
- safe_yaml (~> 1.0.0)
9
- descendants_tracker (0.0.4)
10
- thread_safe (~> 0.3, >= 0.3.1)
11
- diff-lcs (1.3)
12
- faraday (0.9.2)
13
- multipart-post (>= 1.2, < 3)
14
- git (1.5.0)
15
- github_api (0.16.0)
16
- addressable (~> 2.4.0)
17
- descendants_tracker (~> 0.0.4)
18
- faraday (~> 0.8, < 0.10)
19
- hashie (>= 3.4)
20
- mime-types (>= 1.16, < 3.0)
21
- oauth2 (~> 1.0)
22
- hashdiff (1.0.0)
23
- hashie (4.0.0)
24
- highline (2.0.3)
25
- jeweler (2.3.9)
26
- builder
27
- bundler
28
- git (>= 1.2.5)
29
- github_api (~> 0.16.0)
30
- highline (>= 1.6.15)
31
- nokogiri (>= 1.5.10)
32
- psych
33
- rake
34
- rdoc
35
- semver2
36
- jwt (2.2.1)
37
- mime-types (2.99.3)
38
- mini_portile2 (2.4.0)
39
- multi_json (1.14.1)
40
- multi_xml (0.6.0)
41
- multipart-post (2.1.1)
42
- nokogiri (1.10.7)
43
- mini_portile2 (~> 2.4.0)
44
- oauth2 (1.4.2)
45
- faraday (>= 0.8, < 2.0)
46
- jwt (>= 1.0, < 3.0)
47
- multi_json (~> 1.3)
48
- multi_xml (~> 0.5)
49
- rack (>= 1.2, < 3)
50
- psych (3.1.0)
51
- rack (2.1.1)
52
- rake (13.0.1)
53
- rdoc (6.2.1)
54
- rspec (3.9.0)
55
- rspec-core (~> 3.9.0)
56
- rspec-expectations (~> 3.9.0)
57
- rspec-mocks (~> 3.9.0)
58
- rspec-core (3.9.1)
59
- rspec-support (~> 3.9.1)
60
- rspec-expectations (3.9.0)
9
+ addressable (2.8.0)
10
+ public_suffix (>= 2.0.2, < 5.0)
11
+ bump (0.10.0)
12
+ crack (0.4.5)
13
+ rexml
14
+ date (3.4.1)
15
+ debug (1.10.0)
16
+ irb (~> 1.10)
17
+ reline (>= 0.3.8)
18
+ diff-lcs (1.6.0)
19
+ hashdiff (1.0.1)
20
+ io-console (0.8.0)
21
+ irb (1.15.1)
22
+ pp (>= 0.6.0)
23
+ rdoc (>= 4.0.0)
24
+ reline (>= 0.4.2)
25
+ pp (0.6.2)
26
+ prettyprint
27
+ prettyprint (0.2.0)
28
+ psych (5.2.3)
29
+ date
30
+ stringio
31
+ public_suffix (4.0.6)
32
+ rake (13.0.6)
33
+ rdoc (6.12.0)
34
+ psych (>= 4.0.0)
35
+ reline (0.6.0)
36
+ io-console (~> 0.5)
37
+ rexml (3.2.5)
38
+ rspec (3.13.0)
39
+ rspec-core (~> 3.13.0)
40
+ rspec-expectations (~> 3.13.0)
41
+ rspec-mocks (~> 3.13.0)
42
+ rspec-core (3.13.3)
43
+ rspec-support (~> 3.13.0)
44
+ rspec-expectations (3.13.3)
61
45
  diff-lcs (>= 1.2.0, < 2.0)
62
- rspec-support (~> 3.9.0)
63
- rspec-mocks (3.9.1)
46
+ rspec-support (~> 3.13.0)
47
+ rspec-mocks (3.13.2)
64
48
  diff-lcs (>= 1.2.0, < 2.0)
65
- rspec-support (~> 3.9.0)
66
- rspec-support (3.9.2)
67
- safe_yaml (1.0.5)
68
- semver2 (3.4.2)
69
- thread_safe (0.3.6)
70
- webmock (3.8.0)
71
- addressable (>= 2.3.6)
49
+ rspec-support (~> 3.13.0)
50
+ rspec-support (3.13.2)
51
+ stringio (3.1.4)
52
+ webmock (3.14.0)
53
+ addressable (>= 2.8.0)
72
54
  crack (>= 0.3.2)
73
55
  hashdiff (>= 0.4.0, < 2.0.0)
74
56
 
75
57
  PLATFORMS
76
- ruby
58
+ arm64-darwin-23
59
+ x86_64-darwin-19
77
60
 
78
61
  DEPENDENCIES
62
+ bump
79
63
  bundler
80
- byebug
81
- jeweler
64
+ debug
65
+ http_logger!
66
+ rake
82
67
  rspec
83
68
  webmock
84
69
 
85
70
  BUNDLED WITH
86
- 2.0.1
71
+ 2.2.22
data/Rakefile CHANGED
@@ -9,24 +9,13 @@ rescue Bundler::BundlerError => e
9
9
  $stderr.puts "Run `bundle install` to install missing gems"
10
10
  exit e.status_code
11
11
  end
12
- require 'rake'
13
12
 
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "http_logger"
18
- gem.homepage = "http://github.com/railsware/http_logger"
19
- gem.license = "MIT"
20
- gem.summary = %Q{Log your http api calls just like SQL queries}
21
- gem.description = %Q{This gem keep an eye on every Net::HTTP library usage and dump all request and response data to the log file}
22
- gem.email = "agresso@gmail.com"
23
- gem.authors = ["Bogdan Gusiev"]
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
13
+ require 'rake'
14
+ require 'bundler/gem_tasks'
27
15
 
28
16
  require 'rspec/core'
29
17
  require 'rspec/core/rake_task'
18
+
30
19
  RSpec::Core::RakeTask.new(:spec) do |spec|
31
20
  spec.pattern = FileList['spec/**/*_spec.rb']
32
21
  end
data/Readme.md CHANGED
@@ -20,14 +20,31 @@ gem install http_logger
20
20
  ``` ruby
21
21
  require 'http_logger'
22
22
 
23
- HttpLogger.logger = Logger.new(...) # defaults to Rails.logger if Rails is defined
24
- HttpLogger.colorize = true # Default: true
25
- HttpLogger.ignore = [/newrelic\.com/]
26
- HttpLogger.log_headers = false # Default: false
27
- HttpLogger.log_request_body = false # Default: true
28
- HttpLogger.log_response_body = false # Default: true
29
- HttpLogger.level = :info # Desired log level as a symbol. Default: :debug
30
- HttpLogger.collapse_body_limit # Change default truncate limit. Default: 5000
23
+ HttpLogger.configure do |c|
24
+ # defaults to Rails.logger if Rails is defined
25
+ c.logger = Logger.new(LOGFILE)
26
+
27
+ # Default: true
28
+ c.colorize = true
29
+
30
+ # Ignore patterns (e.g., URLs to ignore)
31
+ c.ignore = [/newrelic\.com/]
32
+
33
+ # Default: false
34
+ c.log_headers = false
35
+
36
+ # Default: true
37
+ c.log_request_body = false
38
+
39
+ # Default: true
40
+ c.log_response_body = false
41
+
42
+ # Desired log level as a symbol. Default: :debug
43
+ c.level = :info
44
+
45
+ # Change default truncate limit. Default: 5000
46
+ c.collapse_body_limit = 5000
47
+ end
31
48
  ```
32
49
 
33
50
  ## Alternative
data/http_logger.gemspec CHANGED
@@ -1,12 +1,12 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
- # stub: http_logger 0.6.0 ruby lib
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require "http_logger/version"
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "http_logger".freeze
9
- s.version = "0.6.0"
9
+ s.version = HttpLogger::VERSION
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
@@ -25,7 +25,6 @@ Gem::Specification.new do |s|
25
25
  "LICENSE.txt",
26
26
  "Rakefile",
27
27
  "Readme.md",
28
- "VERSION",
29
28
  "http_logger.gemspec",
30
29
  "lib/http_logger.rb",
31
30
  "screenshots/hoptoad.png",
@@ -39,28 +38,11 @@ Gem::Specification.new do |s|
39
38
  s.rubygems_version = "2.7.8".freeze
40
39
  s.summary = "Log your http api calls just like SQL queries".freeze
41
40
 
42
- if s.respond_to? :specification_version then
43
- s.specification_version = 4
44
-
45
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
- s.add_development_dependency(%q<byebug>.freeze, [">= 0"])
47
- s.add_development_dependency(%q<webmock>.freeze, [">= 0"])
48
- s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
49
- s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
50
- s.add_development_dependency(%q<jeweler>.freeze, [">= 0"])
51
- else
52
- s.add_dependency(%q<byebug>.freeze, [">= 0"])
53
- s.add_dependency(%q<webmock>.freeze, [">= 0"])
54
- s.add_dependency(%q<rspec>.freeze, [">= 0"])
55
- s.add_dependency(%q<bundler>.freeze, [">= 0"])
56
- s.add_dependency(%q<jeweler>.freeze, [">= 0"])
57
- end
58
- else
59
- s.add_dependency(%q<byebug>.freeze, [">= 0"])
60
- s.add_dependency(%q<webmock>.freeze, [">= 0"])
61
- s.add_dependency(%q<rspec>.freeze, [">= 0"])
62
- s.add_dependency(%q<bundler>.freeze, [">= 0"])
63
- s.add_dependency(%q<jeweler>.freeze, [">= 0"])
64
- end
41
+ s.add_development_dependency(%q<debug>.freeze, [">= 0"])
42
+ s.add_development_dependency(%q<webmock>.freeze, [">= 0"])
43
+ s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
44
+ s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
45
+ s.add_development_dependency(%q<bump>.freeze, [">= 0"])
46
+ s.add_development_dependency(%q<rake>.freeze, [">= 0"])
65
47
  end
66
48
 
data/lib/http_logger.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'net/http'
2
2
  require 'uri'
3
3
  require 'set'
4
+ require 'http_logger/configuration'
4
5
 
5
6
  # Usage:
6
7
  #
@@ -8,8 +9,8 @@ require 'set'
8
9
  #
9
10
  # == Setup logger
10
11
  #
11
- # HttpLogger.logger = Logger.new('/tmp/all.log')
12
- # HttpLogger.log_headers = true
12
+ # HttpLogger.configuration.logger = Logger.new('/tmp/all.log')
13
+ # HttpLogger.configuration.log_headers = true
13
14
  #
14
15
  # == Do request
15
16
  #
@@ -22,24 +23,16 @@ require 'set'
22
23
  #
23
24
  # cat /tmp/all.log
24
25
  class HttpLogger
25
- class << self
26
- attr_accessor :collapse_body_limit
27
- attr_accessor :log_headers
28
- attr_accessor :log_request_body
29
- attr_accessor :log_response_body
30
- attr_accessor :logger
31
- attr_accessor :colorize
32
- attr_accessor :ignore
33
- attr_accessor :level
34
- end
35
-
36
- self.log_headers = false
37
- self.log_request_body = true
38
- self.log_response_body = true
39
- self.colorize = true
40
- self.collapse_body_limit = 5000
41
- self.ignore = []
42
- self.level = :debug
26
+ AUTHORIZATION_HEADER = 'Authorization'
27
+
28
+ def self.configuration
29
+ @configuration ||= Configuration.new
30
+ end
31
+
32
+ def self.configure(&block)
33
+ block.call(configuration)
34
+ end
35
+
43
36
 
44
37
  def self.perform(*args, &block)
45
38
  instance.perform(*args, &block)
@@ -49,10 +42,6 @@ class HttpLogger
49
42
  @instance ||= HttpLogger.new
50
43
  end
51
44
 
52
- def self.deprecate_config(option)
53
- warn "Net::HTTP.#{option} is deprecated. Use HttpLogger.#{option} instead."
54
- end
55
-
56
45
  def perform(http, request, request_body)
57
46
  start_time = Time.now
58
47
  response = yield
@@ -64,13 +53,21 @@ class HttpLogger
64
53
  if defined?(response) && response
65
54
  log_response_code(response)
66
55
  log_response_headers(response)
67
- log_response_body(response.body)
56
+ log_response_body(response.body, binary_response?(response))
68
57
  end
69
58
  end
70
59
  end
71
60
 
72
61
  protected
73
62
 
63
+ def binary_response?(response)
64
+ content_type = response['Content-Type']
65
+ return false if content_type.nil?
66
+
67
+ !content_type.start_with?('text/', 'application/json', 'application/xml', 'application/javascript', 'application/x-www-form-urlencoded', 'application/xhtml+xml', 'application/rss+xml', 'application/atom+xml', 'application/svg+xml', 'application/yaml')
68
+
69
+ end
70
+
74
71
  def log_request_url(http, request, start_time)
75
72
  ofset = Time.now - start_time
76
73
  log("HTTP #{request.method} (%0.2fms)" % (ofset * 1000), request_url(http, request))
@@ -81,15 +78,22 @@ class HttpLogger
81
78
  end
82
79
 
83
80
  def log_request_headers(request)
84
- if self.class.log_headers
85
- request.each_capitalized { |k,v| log("HTTP request header", "#{k}: #{v}") }
81
+ if configuration.log_headers
82
+ request.each_capitalized do |k,v|
83
+ log_header(:request, k, v)
84
+ end
86
85
  end
87
86
  end
88
87
 
88
+ def log_header(type, name, value)
89
+ value = "<filtered>" if name == AUTHORIZATION_HEADER
90
+ log("HTTP #{type} header", "#{name}: #{value}")
91
+ end
92
+
89
93
  HTTP_METHODS_WITH_BODY = Set.new(%w(POST PUT GET PATCH))
90
94
 
91
95
  def log_request_body(request)
92
- if self.class.log_request_body
96
+ if configuration.log_request_body
93
97
  if HTTP_METHODS_WITH_BODY.include?(request.method)
94
98
  if (body = request.body) && !body.empty?
95
99
  log("Request body", truncate_body(body))
@@ -103,35 +107,39 @@ class HttpLogger
103
107
  end
104
108
 
105
109
  def log_response_headers(response)
106
- if HttpLogger.log_headers
107
- response.each_capitalized { |k,v| log("HTTP response header", "#{k}: #{v}") }
110
+ if configuration.log_headers
111
+ response.each_capitalized do |k,v|
112
+ log_header(:response, k, v)
113
+ end
108
114
  end
109
115
  end
110
116
 
111
- def log_response_body(body)
112
- if HttpLogger.log_response_body
117
+ def log_response_body(body, binary)
118
+ if configuration.log_response_body
113
119
  if body.is_a?(Net::ReadAdapter)
114
120
  log("Response body", "<impossible to log>")
115
121
  else
116
122
  if body && !body.empty?
117
- log("Response body", truncate_body(body))
123
+ log(
124
+ "Response body",
125
+ binary ? "<binary #{body.length} bytes>" : truncate_body(body),)
118
126
  end
119
127
  end
120
128
  end
121
129
  end
122
130
 
123
131
  def require_logging?(http, request)
124
- self.logger && !ignored?(http, request) && (http.started? || fakeweb?(http, request))
132
+ self.logger && !ignored?(http, request) && (http.started? || webmock?(http, request))
125
133
  end
126
134
 
127
135
  def ignored?(http, request)
128
136
  url = request_url(http, request)
129
- HttpLogger.ignore.any? do |pattern|
137
+ configuration.ignore.any? do |pattern|
130
138
  url =~ pattern
131
139
  end
132
140
  end
133
141
 
134
- def fakeweb?(http, request)
142
+ def webmock?(http, request)
135
143
  return false unless defined?(::WebMock)
136
144
  uri = request_uri_as_string(http, request)
137
145
  method = request.method.downcase.to_sym
@@ -146,8 +154,8 @@ class HttpLogger
146
154
  path = URI.parse(request.path).request_uri if request.path =~ /^http/
147
155
 
148
156
  if request["authorization"] =~ /^Basic /
149
- userinfo = FakeWeb::Utility.decode_userinfo_from_header(request["authorization"])
150
- userinfo = FakeWeb::Utility.encode_unsafe_chars_in_userinfo(userinfo) + "@"
157
+ userinfo = WebMock::Utility.decode_userinfo_from_header(request["authorization"])
158
+ userinfo = WebMock::Utility.encode_unsafe_chars_in_userinfo(userinfo) + "@"
151
159
  else
152
160
  userinfo = ""
153
161
  end
@@ -167,11 +175,11 @@ class HttpLogger
167
175
  end
168
176
 
169
177
  def log(message, dump)
170
- self.logger.send(self.class.level, format_log_entry(message, dump))
178
+ self.logger.send(configuration.level, format_log_entry(message, dump))
171
179
  end
172
180
 
173
181
  def format_log_entry(message, dump = nil)
174
- if self.class.colorize
182
+ if configuration.colorize
175
183
  message_color, dump_color = "4;32;1", "0;1"
176
184
  log_entry = " \e[#{message_color}m#{message}\e[0m "
177
185
  log_entry << "\e[#{dump_color}m%#{String === dump ? 's' : 'p'}\e[0m" % dump if dump
@@ -182,38 +190,43 @@ class HttpLogger
182
190
  end
183
191
 
184
192
  def logger
185
- self.class.logger
193
+ configuration.logger
186
194
  end
187
195
 
188
196
  def collapse_body_limit
189
- self.class.collapse_body_limit
197
+ configuration.collapse_body_limit
198
+ end
199
+
200
+ def configuration
201
+ self.class.configuration
190
202
  end
191
203
  end
192
204
 
193
- module NetHttpLogger
205
+ block = lambda do |a|
206
+ alias request_without_net_http_logger request
194
207
  def request(request, body = nil, &block)
195
208
  HttpLogger.perform(self, request, body) do
196
- super(request, body, &block)
209
+ request_without_net_http_logger(request, body, &block)
197
210
  end
211
+
198
212
  end
199
213
  end
200
214
 
201
215
  if defined?(::WebMock)
202
- WebMock::HttpLibAdapters::NetHttpAdapter.instance_variable_get("@webMockNetHTTP").prepend(NetHttpLogger)
216
+ klass = WebMock::HttpLibAdapters::NetHttpAdapter.instance_variable_get("@webMockNetHTTP")
217
+ klass.class_eval(&block)
203
218
  end
204
- Net::HTTP.prepend(NetHttpLogger)
205
219
 
206
- if defined?(Rails)
207
220
 
208
- if !Rails.respond_to?(:application) || (Rails.application && Rails.application.config)
209
- # Rails2
210
- Rails.configuration.after_initialize do
211
- HttpLogger.logger = Rails.logger unless HttpLogger.logger
212
- end
213
- elsif defined?(ActiveSupport) && ActiveSupport.respond_to?(:on_load)
221
+ Net::HTTP.class_eval(&block)
222
+
223
+ if defined?(Rails)
224
+ if defined?(ActiveSupport) && ActiveSupport.respond_to?(:on_load)
214
225
  # Rails3
215
226
  ActiveSupport.on_load(:after_initialize) do
216
- HttpLogger.logger = Rails.logger unless HttpLogger.logger
227
+ unless HttpLogger.configuration.logger
228
+ HttpLogger.configuration.logger = Rails.logger
229
+ end
217
230
  end
218
231
  end
219
232
  end
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require "uri"
3
+ require "base64"
3
4
 
4
5
  describe HttpLogger do
5
6
 
@@ -7,18 +8,21 @@ describe HttpLogger do
7
8
  # flush log
8
9
  f = File.open(LOGFILE, "w")
9
10
  f.close
11
+
10
12
  stub_request(:any, url).to_return(
11
13
  body: response_body,
12
- headers: {"X-Http-logger" => true},
14
+ headers: {"X-Http-logger" => true, **response_headers},
13
15
  )
14
16
  end
15
17
 
16
18
  let(:response_body) { "Success" }
19
+ let(:response_headers) { {} }
20
+ let(:request_headers) { {} }
17
21
 
18
22
  let(:url) { "http://google.com/" }
19
23
  let(:uri) { URI.parse(url) }
20
24
  let(:request) do
21
- Net::HTTP.get_response(uri)
25
+ Net::HTTP.get_response(uri, **request_headers)
22
26
  end
23
27
 
24
28
  let(:long_body) do
@@ -45,16 +49,20 @@ describe HttpLogger do
45
49
  context "when headers logging is on" do
46
50
 
47
51
  before(:each) do
48
- HttpLogger.log_headers = true
52
+ HttpLogger.configuration.log_headers = true
49
53
  end
50
54
 
51
55
  it { should include("HTTP response header") }
52
56
  it { should include("HTTP request header") }
53
57
 
54
- after(:each) do
55
- HttpLogger.log_headers = false
56
- end
57
58
 
59
+ context "authorization header" do
60
+
61
+ let(:request_headers) do
62
+ {'Authorization' => "Basic #{Base64.encode64('hello:world')}".strip}
63
+ end
64
+ it { should include("Authorization: <filtered>") }
65
+ end
58
66
  end
59
67
 
60
68
  describe "post request" do
@@ -104,7 +112,7 @@ describe HttpLogger do
104
112
  context "when request body logging is off" do
105
113
 
106
114
  before(:each) do
107
- HttpLogger.log_request_body = false
115
+ HttpLogger.configuration.log_request_body = false
108
116
  end
109
117
 
110
118
  let(:request) do
@@ -113,9 +121,6 @@ describe HttpLogger do
113
121
 
114
122
  it { should_not include("Request body") }
115
123
 
116
- after(:each) do
117
- HttpLogger.log_request_body = true
118
- end
119
124
  end
120
125
 
121
126
  context "with long response body" do
@@ -135,7 +140,7 @@ describe HttpLogger do
135
140
  context "when response body logging is off" do
136
141
 
137
142
  before(:each) do
138
- HttpLogger.log_response_body = false
143
+ HttpLogger.configuration.log_response_body = false
139
144
  end
140
145
 
141
146
  let(:response_body) { long_body }
@@ -144,10 +149,6 @@ describe HttpLogger do
144
149
  end
145
150
 
146
151
  it { should_not include("Response body") }
147
-
148
- after(:each) do
149
- HttpLogger.log_response_body = true
150
- end
151
152
  end
152
153
 
153
154
  context "ignore option is set" do
@@ -157,14 +158,10 @@ describe HttpLogger do
157
158
  end
158
159
 
159
160
  before(:each) do
160
- HttpLogger.ignore = [/rpm\.newrelic\.com/]
161
+ HttpLogger.configuration.ignore = [/rpm\.newrelic\.com/]
161
162
  end
162
163
 
163
164
  it { should be_empty}
164
-
165
- after(:each) do
166
- HttpLogger.ignore = []
167
- end
168
165
  end
169
166
 
170
167
  context "when level is set" do
@@ -175,13 +172,30 @@ describe HttpLogger do
175
172
  end
176
173
 
177
174
  before(:each) do
178
- HttpLogger.level = :info
175
+ HttpLogger.configuration.level = :info
179
176
  end
180
177
 
181
178
  it { should_not be_empty }
179
+ end
182
180
 
183
- after(:each) do
184
- HttpLogger.level = :debug
181
+ context "when binary response" do
182
+ let(:response_headers) do
183
+ {
184
+ 'Content-Type' => 'image/webp'
185
+ }
185
186
  end
187
+ let(:url) do
188
+ "http://example.com/image.webp"
189
+ end
190
+
191
+ let(:response_body) do
192
+ File.read("#{File.dirname(__FILE__)}/image.webp")
193
+ end
194
+
195
+ it { should include("<binary 41887 bytes>") }
196
+ end
197
+
198
+ after(:each) do
199
+ HttpLogger.configuration.reset
186
200
  end
187
201
  end
data/spec/spec_helper.rb CHANGED
@@ -15,5 +15,5 @@ LOGFILE = 'http.log'
15
15
  RSpec.configure do |config|
16
16
  config.expect_with(:rspec) { |c| c.syntax = :should }
17
17
  FileUtils.rm_f(LOGFILE)
18
- HttpLogger.logger = Logger.new(LOGFILE)
18
+ HttpLogger.configuration.logger = Logger.new(LOGFILE)
19
19
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bogdan Gusiev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2020-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: byebug
14
+ name: debug
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -67,7 +67,21 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: jeweler
70
+ name: bump
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ">="
@@ -95,7 +109,6 @@ files:
95
109
  - LICENSE.txt
96
110
  - Rakefile
97
111
  - Readme.md
98
- - VERSION
99
112
  - http_logger.gemspec
100
113
  - lib/http_logger.rb
101
114
  - screenshots/hoptoad.png
@@ -107,7 +120,7 @@ homepage: http://github.com/railsware/http_logger
107
120
  licenses:
108
121
  - MIT
109
122
  metadata: {}
110
- post_install_message:
123
+ post_install_message:
111
124
  rdoc_options: []
112
125
  require_paths:
113
126
  - lib
@@ -122,9 +135,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
135
  - !ruby/object:Gem::Version
123
136
  version: '0'
124
137
  requirements: []
125
- rubyforge_project:
126
- rubygems_version: 2.7.8
127
- signing_key:
138
+ rubygems_version: 3.5.11
139
+ signing_key:
128
140
  specification_version: 4
129
141
  summary: Log your http api calls just like SQL queries
130
142
  test_files: []
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.6.0