mirror of
https://github.com/ditkrg/idempotent-request.git
synced 2026-01-22 22:06:44 +00:00
release v0.1.2
This commit is contained in:
parent
bf8c7093d0
commit
e43ee51503
@ -1,5 +1,10 @@
|
||||
# Idempotent Request Changelog #
|
||||
|
||||
## v0.1.2 ##
|
||||
|
||||
* Fix rack response
|
||||
* Disuse SETNX (@espadrine)
|
||||
|
||||
## v0.1.1 ##
|
||||
|
||||
* Add caching for successful responses (@gomayonqui)
|
||||
* Add caching for successful responses (@gomayonqui)
|
||||
|
||||
@ -13,8 +13,14 @@ module IdempotentRequest
|
||||
end
|
||||
|
||||
def write(key, payload)
|
||||
redis.setnx(namespaced_key(key), payload)
|
||||
redis.expire(namespaced_key(key), expire_time.to_i) if expire_time.to_i > 0
|
||||
redis.set(
|
||||
namespaced_key(key),
|
||||
payload,
|
||||
{}.tap do |options|
|
||||
options[:nx] = true
|
||||
options[:ex] = expire_time.to_i if expire_time.to_i > 0
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@ -36,7 +36,7 @@ module IdempotentRequest
|
||||
Oj.dump({
|
||||
status: status,
|
||||
headers: headers.to_h,
|
||||
response: response
|
||||
response: Array(response)
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
module IdempotentRequest
|
||||
VERSION = "0.1.1"
|
||||
VERSION = "0.1.2"
|
||||
end
|
||||
|
||||
@ -3,7 +3,8 @@ require 'spec_helper'
|
||||
RSpec.describe IdempotentRequest::RedisStorage do
|
||||
let(:redis) { FakeRedis::Redis.new }
|
||||
let(:expire_time) { 3600 }
|
||||
let(:redis_storage) { described_class.new(redis, expire_time: expire_time) }
|
||||
let(:namespace) { 'idempotency_keys' }
|
||||
let(:redis_storage) { described_class.new(redis, expire_time: expire_time, namespace: namespace) }
|
||||
|
||||
describe '#read' do
|
||||
it 'should be called' do
|
||||
@ -15,12 +16,13 @@ RSpec.describe IdempotentRequest::RedisStorage do
|
||||
describe '#write' do
|
||||
let(:key) { 'key' }
|
||||
let(:payload) { {} }
|
||||
let(:namespace) { nil }
|
||||
|
||||
context 'when expire time is not set' do
|
||||
let(:redis_storage) { described_class.new(redis) }
|
||||
let(:expire_time) { nil }
|
||||
|
||||
it 'should not set expiration' do
|
||||
expect(redis).to receive(:setnx)
|
||||
expect(redis).to receive(:set).with(key, payload, nx: true)
|
||||
expect(redis).not_to receive(:expire)
|
||||
redis_storage.write(key, payload)
|
||||
end
|
||||
@ -28,14 +30,15 @@ RSpec.describe IdempotentRequest::RedisStorage do
|
||||
|
||||
context 'when expire time is set' do
|
||||
it 'should set expiration' do
|
||||
expect(redis).to receive(:setnx)
|
||||
expect(redis).to receive(:expire).with(String, expire_time)
|
||||
expect(redis).to receive(:set).with(key, payload, nx: true, ex: expire_time)
|
||||
redis_storage.write(key, payload)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#namespaced_key' do
|
||||
let(:namespace) { 'idempotency_keys' }
|
||||
|
||||
subject { redis_storage.send(:namespaced_key, key) }
|
||||
|
||||
context 'when key contains a space' do
|
||||
@ -55,7 +58,7 @@ RSpec.describe IdempotentRequest::RedisStorage do
|
||||
end
|
||||
|
||||
context 'when namespace is set to nil' do
|
||||
let(:redis_storage) { described_class.new(redis, namespace: nil) }
|
||||
let(:namespace) { nil }
|
||||
let(:key) { 'REQUEST-1' }
|
||||
|
||||
it 'should return with default' do
|
||||
|
||||
@ -77,7 +77,7 @@ RSpec.describe IdempotentRequest::RequestManager do
|
||||
Oj.dump({
|
||||
status: data[0],
|
||||
headers: data[1],
|
||||
response: data[2]
|
||||
response: [data[2]]
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user