lib/mudbug.rb in mudbug-0.4.6.7 vs lib/mudbug.rb in mudbug-0.4.7.1
- old
+ new
@@ -1,10 +1,13 @@
-require 'logger'
require 'rest-client'
require 'json'
+require 'lager'
class Mudbug
+ extend Lager
+ log_to $stderr, :warn
+
def self.version
vpath = File.join(File.dirname(__FILE__), '..', 'VERSION')
File.read(vpath).chomp
end
@@ -27,47 +30,10 @@
type: 'text/plain',
proc: proc { |text| text },
},
}
- def self.log_to dest=nil
- case dest
- when nil, 'stderr', 'STDERR'
- dest = $stderr
- when 'stdout', 'STDOUT'
- dest = $stdout
- when IO
- # do nothing
- when String
- # assume file path, do nothing
- else
- raise "unable to log_to #{dest} (#{dest.class})"
- end
- if defined?(@@log)
- l = Logger.new dest
- l.formatter = @@log.formatter
- l.level = @@log.level
- @@log = l
- else
- @@log = Logger.new dest
- @@log.formatter = proc { |sev, time, progname, msg|
- line = "[#{time.strftime('%Y-%m-%d %H:%M:%S')}] #{sev.to_s.upcase}: "
- line << "(#{progname}) " if progname
- line << msg << "\n"
- }
- @@log.level = Logger::WARN
- end
- @@log
- end
-
- def self.log_level=(sym)
- log_to unless defined?(@@log)
- level = Logger.const_get(sym.to_s.upcase)
- raise "unknown log level #{sym}" unless level
- @@log.level = level
- end
-
# map our internal symbols to HTTP content types
# assign q scores based on the parameter order
# construct the right side of the Accept: header
#
def self.accept_header(*types)
@@ -79,46 +45,44 @@
end
# do stuff based on response's Content-type
#
def self.process(resp, accept = nil)
- log_to unless defined?(@@log)
+ @lager.debug { "response code: #{resp.code}" }
+ @lager.debug { "response headers:\n" << resp.raw_headers.inspect }
- @@log.debug { "response code: #{resp.code}" }
- @@log.debug { "response headers:\n" << resp.raw_headers.inspect }
-
unless (200..299).include?(resp.code)
- @@log.warn { "processing with HTTP Status Code #{resp.code}" }
+ @lager.warn { "processing with HTTP Status Code #{resp.code}" }
end
# do you even Content-type, bro?
ct = resp.headers[:content_type]
unless ct
- @@log.warn { "abort processing -- no response Content-type" }
+ @lager.warn { "abort processing -- no response Content-type" }
return resp.body
end
# warn if we got Content-type we didn't ask for
ct, charset = ct.split(';').map { |s| s.strip }
if accept and !accept.include?(ct)
- @@log.warn { "Asked for #{accept} but got #{ct}" }
+ @lager.warn { "Asked for #{accept} but got #{ct}" }
end
# process the response for known content types
CONTENT.each { |sym, hsh|
return hsh[:proc].call(resp.body) if ct == hsh[:type]
}
- @@log.warn { "abort processing -- unrecognized Content-type: #{ct}" }
+ @lager.warn { "abort processing -- unrecognized Content-type: #{ct}" }
return resp.body
end
-
attr_reader :options
attr_accessor :host
def initialize(host, options = {})
- self.class.log_to options.delete :log_to
+ # note, not yet logging at instance layer
+ # @lager = self.class.lager
@host = host
@options = options
accept :json, :html, :text
end