class ICFS::UsersS3

Implements {ICFS::Users Users} from AWS S3

Public Class Methods

new(s3, bucket, prefix=nil) click to toggle source

New instance

@param s3 [Aws::S3::Client] the configured S3 client @param bucket [String] The bucket name @param prefix [String] Prefix to use for object keys

# File lib/icfs/users_s3.rb, line 30
def initialize(s3, bucket, prefix=nil)
  @s3 = s3
  @bck = bucket
  @pre = prefix || ''
end

Public Instance Methods

flush(urg) click to toggle source

(see Users#flush)

# File lib/icfs/users_s3.rb, line 49
def flush(urg); false; end
read(urg) click to toggle source

(see Users#read)

# File lib/icfs/users_s3.rb, line 55
def read(urg)
  Items.validate(urg, 'User/Role/Group name', Items::FieldUsergrp)
  json = @s3.get_object( bucket: @bck, key: _path(urg) ).body.read
  return JSON.parse(json)
rescue
  return nil
end
write(obj) click to toggle source

(see Users#write)

# File lib/icfs/users_s3.rb, line 67
def write(obj)
  Items.validate(obj, 'User/Role/Group', Users::ValUser)
  json = JSON.pretty_generate(obj)
  @s3.put_object( bucket: @bck, key: _path(obj['name']), body: json )
end

Private Instance Methods

_path(user) click to toggle source

Where to store user

# File lib/icfs/users_s3.rb, line 40
def _path(user)
  @pre + user + '.json'
end