mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
61 lines
1.8 KiB
Ruby
61 lines
1.8 KiB
Ruby
module Fog
|
|
module Rackspace
|
|
class Queues
|
|
|
|
class Real
|
|
|
|
# This operation returns queue statistics, including how many messages are in the queue, categorized by status.
|
|
#
|
|
# @param [String] queue_name Specifies the name of the queue.
|
|
# @return [Excon::Response] response
|
|
# @raise [Fog::Rackspace::Queues::NotFound] - HTTP 404
|
|
# @raise [Fog::Rackspace::Queues::BadRequest] - HTTP 400
|
|
# @raise [Fog::Rackspace::Queues::InternalServerError] - HTTP 500
|
|
# @raise [Fog::Rackspace::Queues::ServiceError]
|
|
# @see http://docs.rackspace.com/queues/api/v1.0/cq-devguide/content/GET_getQueueStats__version__queues__queue_name__stats_queue-operations-dle001.html
|
|
def get_queue_stats(queue_name)
|
|
request(
|
|
:expects => 200,
|
|
:method => 'GET',
|
|
:path => "queues/#{queue_name}/stats"
|
|
)
|
|
end
|
|
|
|
end
|
|
|
|
class Mock
|
|
def get_queue_stats(queue_name)
|
|
queue = mock_queue!(queue_name)
|
|
|
|
payload = {
|
|
"claimed" => queue.claimed,
|
|
"total" => queue.total,
|
|
"free" => queue.free
|
|
}
|
|
|
|
report_message(payload, "oldest", queue.oldest)
|
|
report_message(payload, "newest", queue.newest)
|
|
|
|
response = Excon::Response.new
|
|
response.status = 200
|
|
response.body = { "messages" => payload }
|
|
response
|
|
end
|
|
|
|
private
|
|
|
|
def report_message(payload, description, element)
|
|
return unless element
|
|
|
|
ctime = Time.at(element.created).utc
|
|
payload[description] = {
|
|
"age" => element.age,
|
|
"href" => element.href,
|
|
"created" => ctime.strftime("%Y-%m-%dT%I:%M:%SZ")
|
|
}
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|