Sha256: 81f7947d51a0e5852cd1c90873ea8b6a0ded26360c79fe9c8304952a54e71c59

Contents?: true

Size: 1.69 KB

Versions: 1

Compression:

Stored size: 1.69 KB

Contents

module Bixby

# Wraps a JSON Response
#
# @attr [String] status  Status of operaiton ("success" or "fail")
# @attr [String] message  Response message
# @attr [Hash] data  Response data as key/value pairs
# @attr [FixNum] code  Response code
class JsonResponse

  include Jsonify

  attr_accessor :status, :message, :data, :code

  SUCCESS = "success"
  FAIL    = "fail"

  # Create a new JsonResponse
  #
  # @param [String] status  Status of operaiton ("success" or "fail")
  # @param [String] message  Response message
  # @param [Hash] data  Response data as key/value pairs
  # @param [FixNum] code  Response code
  def initialize(status = nil, message = nil, data = nil, code = nil)
    @status = status
    @message = message
    @data = data
    @code = code
  end

  # Was operation successful?
  #
  # @return [Boolean] True if @status == "success"
  def success?
    @status && @status == SUCCESS
  end

  # Was operation unsuccessful?
  #
  # @return [Boolean] True if @status != "success"
  def fail?
    @status && @status == FAIL
  end

  # Create a JsonResponse representing an invalid request
  #
  # @param [String] msg Optional message (default: "invalid request")
  def self.invalid_request(msg = nil)
    new("fail", (msg || "invalid request"), nil, 400)
  end

  # Create a JsonResponse indicating "bundle not found"
  #
  # @param [String] bundle  Name of bundle
  def self.bundle_not_found(bundle)
    new("fail", "bundle not found: #{bundle}", nil, 404)
  end

  # Create a JsonResponse indicating "command not found"
  #
  # @param [String] command  Name of command
  def self.command_not_found(command)
    new("fail", "command not found: #{command}", nil, 404)
  end

end # JsonResponse

end # Bixby

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bixby_common-0.2.0 lib/bixby_common/api/json_response.rb