module Angus::Responses

Public Instance Methods

build_data_response(data, attributes, messages = []) click to toggle source

Builds a success response with the received data

@param [Hash] data the hash to be returned in the response @param [Array] attributes the attributes that will be returned @param [Message, Symbol, String] messages A list of messages, or message keys

# File lib/angus/responses.rb, line 32
def build_data_response(data, attributes, messages = [])
  marshalled_data = Angus::Marshalling.marshal_object(data, attributes)

  messages = build_messages(Angus::SDoc::Definitions::Message::INFO_LEVEL, messages)

  build_success_response(marshalled_data, messages)
end
build_message(key, level, *params) click to toggle source

Builds a ResponseMessage object

@param [#to_s] key Message key @param [#to_s] level Message level @param [*Object] params Objects to be used when formatting the message description

@raise [NameError] when there's no message for the given key and level

@return [ResponseMessage]

# File lib/angus/responses.rb, line 66
def build_message(key, level, *params)
  message_definition = get_message_definition(key, level)

  unless message_definition
    raise NameError.new("Could not found message with key: #{key}, level: #{level}")
  end

  description = if message_definition.text
                  message_definition.text % params
                else
                  message_definition.description
                end

  { :level => level, :key => key, :dsc => description }
end
build_messages(level, messages) click to toggle source

Builds a list of messages with the following level

ResponseMessage objects contained in messages param won't be modified, this method

only creates ResponseMessage for each Symbol in messages array

@param [#to_s] level Messages level @param [Array<ResponseMessage>, Array<Symbol>] messages

@raise (see build_message)

@return [Array<ResponseMessage>]

# File lib/angus/responses.rb, line 51
def build_messages(level, messages)
  (messages || []).map do |message|
    build_message(message, level)
  end
end
build_success_response(elements = {}, messages = []) click to toggle source

Builds a service success response

@param [Hash<Symbol, Object>] messages Elements to be sent in the response @param [Array<ResponseMessage] messages Messages to be sent in the response

@return [String] JSON response

# File lib/angus/responses.rb, line 15
def build_success_response(elements = {}, messages = [])
  elements = {
    :status => :success,
  }.merge(elements)

  unless messages.empty?
    elements[:messages] = messages
  end

  json(elements)
end
get_message_definition(key, level) click to toggle source
# File lib/angus/responses.rb, line 82
def get_message_definition(key, level)
  message = @definitions.messages.find { |name, definition|
    name == key.to_s && definition.level.downcase == level.downcase
  }

  message.last if message
end
json(element) click to toggle source

Serializes element as json

# File lib/angus/responses.rb, line 91
def json(element)
  JSON(element, :ascii_only => true)
end