mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
91 lines
4.1 KiB
Ruby
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
|