DisWarden/lib/queue_manager.rb
2024-02-11 10:50:47 -07:00

38 lines
717 B
Ruby

# frozen_string_literal: true
require 'json'
require 'securerandom'
# Main class for managing the upload queue in case of rate limiting
class QueueManager
QUEUE_FILE = 'queue.json'
def self.enqueue(file_path)
id = SecureRandom.uuid
entry = { id:, file_path:, timestamp: Time.now.to_i }
queue = load_queue
queue << entry
save_queue(queue)
id
end
def self.dequeue
queue = load_queue
entry = queue.shift
save_queue(queue)
entry
end
def self.load_queue
return [] unless File.exist?(QUEUE_FILE)
JSON.parse(File.read(QUEUE_FILE), symbolize_names: true)
end
def self.save_queue(queue)
File.write(QUEUE_FILE, JSON.pretty_generate(queue))
end
end