38 lines
717 B
Ruby
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
|