mirror of
https://github.com/ditkrg/idempotent-request.git
synced 2026-01-22 22:06:44 +00:00
This works adding a "lock" key in redis and returning 429 http error when concurrent requests are sent.
32 lines
473 B
Ruby
32 lines
473 B
Ruby
module IdempotentRequest
|
|
class MemoryStorage
|
|
def initialize
|
|
@memory = {}
|
|
end
|
|
|
|
def lock(key)
|
|
namespaced_key = lock_key(key)
|
|
return false if @memory.key?(namespaced_key)
|
|
@memory[namespaced_key] = true
|
|
end
|
|
|
|
def read(key)
|
|
@memory[key]
|
|
end
|
|
|
|
def write(key, payload)
|
|
@memory[key] = payload
|
|
end
|
|
|
|
def clear
|
|
@memory = {}
|
|
end
|
|
|
|
private
|
|
|
|
def lock_key(key)
|
|
"lock:#{key}"
|
|
end
|
|
end
|
|
end
|