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