Sha256: 925fe9e952275d62cfb235cb6049114372017e05324c7fbc36f13de429e124ea
Contents?: true
Size: 1.2 KB
Versions: 3
Compression:
Stored size: 1.2 KB
Contents
module Pansophy module Remote class CreateFile include Adamantium::Flat ALLOWED_ATTRS = %i[ cache_control content_disposition content_encoding content_length content_md5 content_type etag expires last_modified metadata owner storage_class encryption encryption_key version ].freeze def initialize(bucket, path, body) @bucket = bucket @pathname = Pathname.new(path) @body = body end def call(options = {}) prevent_overwrite! unless options[:overwrite] file_attributes = options.slice(*ALLOWED_ATTRS) directory.files.create(file_attributes.merge(key: @pathname.to_s, body: @body.dup)) end private def exist? directory.files.any? { |file| file.key == @pathname.to_s } end def prevent_overwrite! return unless exist? fail ArgumentError, "#{@pathname} already exists, pass ':overwrite => true' to overwrite" end def directory ReadDirectory.new(@bucket, @pathname).call end memoize :directory end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
pansophy-1.3.0 | lib/pansophy/remote/create_file.rb |
pansophy-1.2.0 | lib/pansophy/remote/create_file.rb |
pansophy-1.1.0 | lib/pansophy/remote/create_file.rb |