53 lines
1.2 KiB
Ruby
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
|