Initial commit

This commit is contained in:
Senad Uka
2022-03-23 05:44:42 +01:00
parent 1405281a5c
commit eea10dd03b
113 changed files with 3617 additions and 81 deletions

View 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