Files
old-vendor-scheduler-service/app/services/vle/vle_ingest_asset.rb
2022-03-23 05:44:42 +01:00

36 lines
1.1 KiB
Ruby

# frozen_string_literal: true
require 'rest-client'
require_relative '../log/loggable'
require_relative '../vendors/errors/content_ingest_error'
module Vle
class VleIngestAsset
include Log::Loggable
def call(content, destination)
logger.info("ONEX asset ingest: #{content}")
tmp_file = Tempfile.new('vendor-scheduler-service-content-ingest')
begin
source = content[:url] || content[:uri]
IO.copy_stream(URI.parse(source).open, tmp_file.path)
logger.debug("Content retrieved. Now starting ONEX ingest...")
res = RestClient.put(destination, tmp_file, { 'Content-Type': "binary/octet-stream" })
case res.code
when 200 #Net::HTTPSuccess
logger.debug("ONEX Asset ingested.")
true
else
logger.error "Error ingesting content into ONEX: POST returned #{res.code}"
raise Vendors::Errors::ContentIngestError
end
rescue StandardError => e
logger.error "Error ingesting content into ONEX: #{e.message}"
raise Vendors::Errors::ContentIngestError
ensure
tmp_file.close!
end
end
end
end