From a841b4bce702fa9434a515925f36b2b81f454c7a Mon Sep 17 00:00:00 2001 From: VetheonGames Date: Sun, 11 Feb 2024 10:50:47 -0700 Subject: [PATCH] I forgot to make the queue manager... --- lib/queue_manager.rb | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/queue_manager.rb diff --git a/lib/queue_manager.rb b/lib/queue_manager.rb new file mode 100644 index 0000000..479bcfb --- /dev/null +++ b/lib/queue_manager.rb @@ -0,0 +1,37 @@ +# 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