class Bricolage::StreamingLoad::ManifestFile

Public Class Methods

create(ds:, job_id:, object_urls:, logger:, noop: false, &block) click to toggle source
# File lib/bricolage/streamingload/manifest.rb, line 9
def ManifestFile.create(ds:, job_id:, object_urls:, logger:, noop: false, &block)
  manifest = new(ds, job_id, object_urls, logger: logger, noop: noop)
  if block
    manifest.create_temporary(&block)
  else
    manifest.put
    return manifest
  end
end
new(ds, job_id, object_urls, logger:, noop: false) click to toggle source
# File lib/bricolage/streamingload/manifest.rb, line 19
def initialize(ds, job_id, object_urls, logger:, noop: false)
  @ds = ds
  @job_id = job_id
  @object_urls = object_urls
  @logger = logger
  @noop = noop
end

Public Instance Methods

content() click to toggle source
# File lib/bricolage/streamingload/manifest.rb, line 41
def content
  @content ||= begin
    ents = @object_urls.map {|url|
      { "url" => url, "mandatory" => true }
    }
    obj = { "entries" => ents }
    JSON.pretty_generate(obj)
  end
end
create_temporary() { |self| ... } click to toggle source
# File lib/bricolage/streamingload/manifest.rb, line 67
def create_temporary
  put
  yield self
  delete
end
credential_string() click to toggle source
# File lib/bricolage/streamingload/manifest.rb, line 27
def credential_string
  @ds.credential_string
end
delete() click to toggle source
# File lib/bricolage/streamingload/manifest.rb, line 59
def delete
  @logger.info "s3: delete: #{url}"
  @ds.object(name).delete unless @noop
rescue Aws::S3::Errors::ServiceError => ex
  @logger.exception ex
  raise S3Exception.wrap(ex)
end
name() click to toggle source
# File lib/bricolage/streamingload/manifest.rb, line 31
def name
  return @name if @name
  now =Time.now
  "#{now.strftime('%Y/%m/%d')}/manifest-#{now.strftime('%H%M%S')}-#{@job_id}.json"
end
put() click to toggle source
# File lib/bricolage/streamingload/manifest.rb, line 51
def put
  @logger.info "s3: put: #{url}"
  @ds.object(name).put(body: content) unless @noop
rescue Aws::S3::Errors::ServiceError => ex
  @logger.exception ex
  raise S3Exception.wrap(ex)
end
url() click to toggle source
# File lib/bricolage/streamingload/manifest.rb, line 37
def url
  @url ||= @ds.url(name)
end