class HaveAPI::OutputFormatter

Attributes

formatters[R]

Public Class Methods

register(klass) click to toggle source
# File lib/haveapi/output_formatter.rb, line 9
def register(klass)
  @formatters ||= []
  @formatters << klass
end

Public Instance Methods

content_type() click to toggle source
# File lib/haveapi/output_formatter.rb, line 42
def content_type
  @formatter.content_type
end
error(msg) click to toggle source
# File lib/haveapi/output_formatter.rb, line 38
def error(msg)
  @formatter.format(header(false, nil, msg))
end
format(status, response, message = nil, errors = nil, version: true) click to toggle source
# File lib/haveapi/output_formatter.rb, line 34
def format(status, response, message = nil, errors = nil, version: true)
  @formatter.format(header(status, response, message, errors, version))
end
supports?(types) click to toggle source
# File lib/haveapi/output_formatter.rb, line 15
def supports?(types)
  @formatter = nil

  if types.empty?
    return @formatter = self.class.formatters.first.new
  end

  types.each do |type|
    self.class.formatters.each do |f|
      if f.handle?(type)
        @formatter = f.new
        break
      end
    end
  end

  !@formatter.nil?
end

Protected Instance Methods

header(status, response, message = nil, errors = nil, version = nil) click to toggle source
# File lib/haveapi/output_formatter.rb, line 48
def header(status, response, message = nil, errors = nil, version = nil)
  ret = {}
  ret[:version] = HaveAPI::PROTOCOL_VERSION if version
  ret.update({
    status:,
    response:,
    message:,
    errors:
  })
  ret
end