# 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