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

53 lines
1.2 KiB
Ruby

# frozen_string_literal: true
require_relative '../log/loggable'
require_relative '../vendors/errors/content_ingest_error'
require_relative 'vle_settings'
module Vle
class VleCreateAsset
include Log::Loggable
PATH = 'v1/assets'
def initialize(asset)
@asset = asset
end
def url
Vle::VleSettings.instance.central_url(PATH)
end
def call(access_token)
logger.info("ONEX create asset: #{asset}")
res = Net::HTTP.post(
url,
{
file: asset[:file],
name: asset[:name],
project_id: asset[:project_id],
description_short: "vendor-scheduler-service content: #{asset[:name]}"
}.to_json,
{
"Authorization": "Bearer #{access_token}",
"Content-Type": 'application/json'
}
)
case res
when Net::HTTPSuccess
JSON.parse(res.body).with_indifferent_access
when Net::HTTPUnauthorized
raise Auth::Client::Errors::Unauthorized, 'Unauthorized'
else
logger.error "Error creating asset in VLE: #{res.code}"
raise Vendors::Errors::ContentIngestError
end
end
private
def asset
@asset
end
end
end