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