Skip to content

Instantly share code, notes, and snippets.

@ksss
Last active August 29, 2015 14:25
Show Gist options
  • Save ksss/455b6e7865a216891a51 to your computer and use it in GitHub Desktop.
Save ksss/455b6e7865a216891a51 to your computer and use it in GitHub Desktop.
#! /usr/bin/env ruby
class S3
def buckets
BucketCollection.new
end
class BucketCollection
def [](name)
Bucket.new(name)
end
end
class Bucket
def initialize(name)
@name = name
end
def objects
S3ObjectCollection.new(@name)
end
end
class S3ObjectCollection
def initialize(bucket)
@bucket = bucket
end
def [](name)
S3Object.new(@bucket, name)
end
end
class S3Object
def initialize(bucket, key)
@bucket = bucket
@key = key
end
def inspect
"<{self.class}:#{@bucket}/#{@key}>"
end
# def read
# S3::Client.new.get_object(
# bucket: @bucket,
# key: @key
# )["body"].read
# end
end
end
s3 = S3.new
p s3.buckets["bucket-a"].objects["key-b"] #=> <S3Object:bucket-a/bucket-b>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment