Module: Angus::Responses

Includes:
StatusCodes
Included in:
RequestHandler
Defined in:
lib/angus/responses.rb

Constant Summary

Constants included from StatusCodes

StatusCodes::HTTP_STATUS_CODE_CONFLICT, StatusCodes::HTTP_STATUS_CODE_FORBIDDEN, StatusCodes::HTTP_STATUS_CODE_INTERNAL_SERVER_ERROR, StatusCodes::HTTP_STATUS_CODE_NOT_FOUND, StatusCodes::HTTP_STATUS_CODE_OK, StatusCodes::HTTP_STATUS_CODE_UNAUTHORIZED, StatusCodes::HTTP_STATUS_CODE_UNPROCESSABLE_ENTITY

Instance Method Summary collapse

Methods included from StatusCodes

included

Instance Method Details

#build_data_response(data, attributes, messages = []) ⇒ Object

Builds a success response with the received data

Parameters:

  • data (Hash)

    the hash to be returned in the response

  • attributes (Array)

    the attributes that will be returned

  • messages (Message, Symbol, String) (defaults to: [])

    A list of messages, or message keys



32
33
34
35
36
37
38
# 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) ⇒ ResponseMessage

Builds a ResponseMessage object

Parameters:

  • key (#to_s)

    Message key

  • level (#to_s)

    Message level

  • params (*Object)

    Objects to be used when formatting the message description

Returns:

  • (ResponseMessage)

Raises:

  • (NameError)

    when there’s no message for the given key and level



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 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) ⇒ Array<ResponseMessage>

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

Parameters:

  • level (#to_s)

    Messages level

  • messages (Array<ResponseMessage>, Array<Symbol>)

Returns:

  • (Array<ResponseMessage>)

Raises:

  • (NameError)

    when there’s no message for the given key and level



51
52
53
54
55
# 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 = []) ⇒ String

Builds a service success response

Parameters:

  • messages (Hash<Symbol, Object>) (defaults to: [])

    Elements to be sent in the response

  • Array<ResponseMessage] (Array<ResponseMessage] messages Messages to be sent in the response)

    messages Messages to be sent in the response

Returns:



15
16
17
18
19
20
21
22
23
24
25
# 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) ⇒ Object



82
83
84
85
86
87
88
# 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) ⇒ Object

Serializes element as json



91
92
93
# File 'lib/angus/responses.rb', line 91

def json(element)
  JSON(element, :ascii_only => true)
end