Initial commit
This commit is contained in:
41
app/services/schedule_pipeline/publish_schedule.rb
Normal file
41
app/services/schedule_pipeline/publish_schedule.rb
Normal file
@@ -0,0 +1,41 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require_relative '../log/loggable'
|
||||
require_relative '../vle/vle_vendor_schedule'
|
||||
require_relative 'models/schedule'
|
||||
require_relative '../auth/auth_token_service'
|
||||
require 'auth/client/request/auth_aware_request'
|
||||
|
||||
module SchedulePipeline
|
||||
class PublishSchedule
|
||||
include Log::Loggable
|
||||
|
||||
def initialize(queue, errors, tokens = Auth::AuthTokenService.instance)
|
||||
@queue = queue
|
||||
@errors = errors
|
||||
@tokens = tokens
|
||||
end
|
||||
|
||||
def start
|
||||
@queue.subscribe do |msg|
|
||||
msg = Models::Schedule.from_hash(msg) if msg.is_a? Hash
|
||||
process_msg(msg)
|
||||
end
|
||||
end
|
||||
|
||||
def process_msg(msg)
|
||||
logger.info("Publishing schedule: #{msg.name}...")
|
||||
Auth::Client::Request::AuthAwareRequest.new(
|
||||
Vle::VleVendorSchedule.new(
|
||||
msg.vendor,
|
||||
msg.player,
|
||||
{ name: msg.name, start_time: msg.start_time, items: msg.to_hash[:items] }
|
||||
),
|
||||
@tokens
|
||||
).call
|
||||
logger.info("Published schedule: #{msg.name}")
|
||||
rescue StandardError => e
|
||||
@errors.push(e.message)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user