# frozen_string_literal: true require_relative '../log/loggable' require_relative '../vendors/errors/schedule_publish_error' module Vle class VleVendorSchedule include Log::Loggable PATH = 'v1/vendor_schedule' def initialize(vendor, player, schedule) @vendor = vendor @player = player @schedule = schedule end def url Vle::VleSettings.instance.scheduler_url(PATH) end def call(access_token) res = Net::HTTP.post( url, { vendor: @vendor, player: @player, schedule: @schedule }.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 (#{res.code}) scheduling vendor content in ONEX: #{res.body}" raise Vendors::Errors::SchedulePublishError end end end end