1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/rackspace/models/queues/messages.rb
2013-11-22 10:42:43 -06:00

91 lines
4.1 KiB
Ruby

require 'fog/core/collection'
require 'fog/rackspace/models/queues/message'
module Fog
module Rackspace
class Queues
class Messages < Fog::Collection
model Fog::Rackspace::Queues::Message
# @!attribute [r] client_id
# @return [String] UUID for the client instance.
attr_accessor :client_id
# @!attribute [r] queue
# @return [String] The name of the queue associated with the message.
attr_accessor :queue
# @!attribute [rw] echo
# @return [Boolean] Determines whether the API returns a client's own messages. The echo parameter is a Boolean value (true or false) that determines whether the API
# returns a client's own messages, as determined by the uuid portion of the User-Agent header. If you do not specify a value, echo uses the default value of false.
# If you are experimenting with the API, you might want to set echo=true in order to see the messages that you posted.
attr_accessor :echo
# @!attribute [rw] limit
# @return [String] When more messages are available than can be returned in a single request, the client can pick up the next batch of messages by simply using the URI
# template parameters returned from the previous call in the "next" field. Specifies up to 10 messages (the default value) to return. If you do not specify a value
# for the limit parameter, the default value of 10 is used.
attr_accessor :limit
# @!attribute [rw] marker
# @return [String] Specifies an opaque string that the client can use to request the next batch of messages. The marker parameter communicates to the server which
# messages the client has already received. If you do not specify a value, the API returns all messages at the head of the queue (up to the limit).
attr_accessor :marker
# @!attribute [rw] include_claimed
# @return [String] Determines whether the API returns claimed messages and unclaimed messages. The include_claimed parameter is a Boolean value (true or false)
# that determines whether the API returns claimed messages and unclaimed messages. If you do not specify a value, include_claimed uses the default value of false
# (only unclaimed messages are returned).
attr_accessor :include_claimed
# Returns list of messages
#
# @return [Fog::Rackspace::Queues::Messages] Retrieves a collection of messages.
# @raise [Fog::Rackspace::Queues::NotFound] - HTTP 404
# @raise [Fog::Rackspace::Queues::BadRequest] - HTTP 400
# @raise [Fog::Rackspace::Queues::InternalServerError] - HTTP 500
def all
requires :client_id, :queue
response = service.list_messages(client_id, queue.name, options)
if response.status == 204
data = []
else
data = response.body['messages']
end
load(data)
end
# Returns the specified message from the queue.
#
# @param [Integer] message_id id of the message to be retrieved
# @return [Fog::Rackspace::Queues::Claim] Returns a claim
# @raise [Fog::Rackspace::Queues::BadRequest] - HTTP 400
# @raise [Fog::Rackspace::Queues::InternalServerError] - HTTP 500
# @raise [Fog::Rackspace::Queues::ServiceError]
def get(message_id)
requires :client_id, :queue
data = service.get_message(client_id, queue.name, message_id).body
new(data)
rescue Fog::Rackspace::Queues::NotFound
nil
# HACK - This has been escalated to the Rackspace Queues team, as this
# behavior is not normal HTTP behavior.
rescue Fog::Rackspace::Queues::ServiceError
nil
end
private
def options
data = {}
data[:echo] = echo.to_s unless echo.nil?
data[:limit] = limit.to_s unless limit.nil?
data[:marker] = marker.to_s unless marker.nil?
data[:include_claimed] = include_claimed.to_s unless include_claimed.nil?
data
end
end
end
end
end