aws-s3/lib/aws/s3/service.rb

52 строки
1.7 KiB
Ruby

module AWS
module S3
# The service lets you find out general information about your account, like what buckets you have.
#
# Service.buckets
# # => []
class Service < Base
@@response = nil #:nodoc:
class << self
# List all your buckets.
#
# Service.buckets
# # => []
#
# For performance reasons, the bucket list will be cached. If you want avoid all caching, pass the <tt>:reload</tt>
# as an argument:
#
# Service.buckets(:reload)
def buckets
response = get('/')
if response.empty?
[]
else
response.buckets.map {|attributes| Bucket.new(attributes)}
end
end
memoized :buckets
# Sometimes methods that make requests to the S3 servers return some object, like a Bucket or an S3Object.
# Other times they return just <tt>true</tt>. Other times they raise an exception that you may want to rescue. Despite all these
# possible outcomes, every method that makes a request stores its response object for you in Service.response. You can always
# get to the last request's response via Service.response.
#
# objects = Bucket.objects('jukebox')
# Service.response.success?
# # => true
#
# This is also useful when an error exception is raised in the console which you weren't expecting. You can
# root around in the response to get more details of what might have gone wrong.
def response
@@response
end
def response=(response) #:nodoc:
@@response = response
end
end
end
end
end