module Ja
Constants
- VERSION
Public Class Methods
api(**kwargs, &block)
click to toggle source
# File lib/ja.rb, line 31 def self.api(**kwargs, &block) API.new(**kwargs, &block) end
default_logger()
click to toggle source
# File lib/ja.rb, line 35 def self.default_logger if defined?(Rails) && Rails.logger Rails.logger elsif defined?(Hanami) && Hanami.logger Hanami.logger elsif defined?(SemanticLogger) SemanticLogger[self] else Logger.new($stdout) end end
enable_debug_logging!()
click to toggle source
# File lib/ja.rb, line 76 def self.enable_debug_logging! return if HTTP::Client.ancestors.include?(DebugLogger) HTTP::Client.prepend(DebugLogger) end
enable_semantic_logging=(bool)
click to toggle source
# File lib/ja.rb, line 23 def self.enable_semantic_logging=(bool) @enable_semantic_logging = bool end
enable_semantic_logging?()
click to toggle source
# File lib/ja.rb, line 27 def self.enable_semantic_logging? !!@enable_semantic_logging end
format_body(headers, &body)
click to toggle source
TODO detect streaming
# File lib/ja.rb, line 48 def self.format_body(headers, &body) mime_type = parse_mime_type(headers) case mime_type when /\bjson$/ str = body.call begin JSON.pretty_generate(JSON.parse(str)) rescue JSON::ParserError str end when /\bhtml$/, /\bxml$/ str = body.call if defined?(Nokogiri) Nokogiri::XML(str).to_xhtml.chomp else str end when /\bplain$/ body.call else "«body ommitted: unsupported Content-Type: #{mime_type.inspect}»" end end
logger()
click to toggle source
# File lib/ja.rb, line 15 def self.logger @logger ||= default_logger # rubocop:disable Naming/MemoizedInstanceVariableName end
logger=(logger)
click to toggle source
# File lib/ja.rb, line 19 def self.logger=(logger) @logger = logger end
parse_mime_type(headers)
click to toggle source
# File lib/ja.rb, line 72 def self.parse_mime_type(headers) HTTP::ContentType.parse(headers[HTTP::Headers::CONTENT_TYPE]).mime_type end