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/requests/queues/get_queue_stats.rb

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