class KVMultiplex::Providers::S3

Public Class Methods

new(bucket_name:, key_prefix:, resource_client: nil) click to toggle source
# File lib/kvmultiplex/providers/s3.rb, line 9
def initialize(bucket_name:, key_prefix:, resource_client: nil)
  raise "bucket_name must be a String." unless bucket_name.is_a?(String)
  raise "key_prefix must be a String." unless key_prefix.is_a?(String)

  resource_client ||= Aws::S3::Resource.new

  raise "resource_client must be an Aws::S3::Resource." unless client.is_a?(Aws::S3::Resource)

  @bucket_name = bucket_name
  @bucket = resource_client.bucket(@bucket_name)
  raise "bucket '#{bucket_name}' doesn't exist." unless @bucket.exists?

  @key_prefix = key_prefix
  @resource_client = resource_client
end

Public Instance Methods

get(subkey, _full_key) click to toggle source
# File lib/kvmultiplex/providers/s3.rb, line 25
def get(subkey, _full_key)
  object = locate_object(subkey)
  object.exists? ? JSON.parse(object.get.body.read) : nil
end
set(subkey, _full_key, value) click to toggle source
# File lib/kvmultiplex/providers/s3.rb, line 30
def set(subkey, _full_key, value)
  locate_object(subkey).put(body: value.to_json)
end

Private Instance Methods

locate_object(subkey) click to toggle source
# File lib/kvmultiplex/providers/s3.rb, line 36
def locate_object(subkey)
  @bucket.object(subkey.join("/"))
end