From fbb2bf03bca3061549e96064588d829840bd3410 Mon Sep 17 00:00:00 2001 From: Alex Woods Date: Tue, 21 Jan 2025 15:24:36 -0800 Subject: [PATCH] Use epoch seconds instead of milliseconds in cbor encode/decode --- gems/aws-sdk-core/lib/aws-sdk-core/cbor/decoder.rb | 2 -- gems/aws-sdk-core/lib/aws-sdk-core/cbor/encoder.rb | 4 ++-- gems/aws-sdk-core/spec/aws/cbor/decoder_spec.rb | 2 +- gems/aws-sdk-core/spec/aws/cbor/encoder_spec.rb | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/gems/aws-sdk-core/lib/aws-sdk-core/cbor/decoder.rb b/gems/aws-sdk-core/lib/aws-sdk-core/cbor/decoder.rb index 84934bb7144..1f7d025d7b3 100644 --- a/gems/aws-sdk-core/lib/aws-sdk-core/cbor/decoder.rb +++ b/gems/aws-sdk-core/lib/aws-sdk-core/cbor/decoder.rb @@ -61,9 +61,7 @@ def decode_item when :tag case (tag = read_tag) when TAG_TYPE_EPOCH - type = peek_type item = decode_item - item /= 1000.0 if type == :integer Time.at(item) when TAG_TYPE_BIGNUM, TAG_TYPE_NEG_BIGNUM read_bignum(tag) diff --git a/gems/aws-sdk-core/lib/aws-sdk-core/cbor/encoder.rb b/gems/aws-sdk-core/lib/aws-sdk-core/cbor/encoder.rb index 461c275ae97..836260da51c 100644 --- a/gems/aws-sdk-core/lib/aws-sdk-core/cbor/encoder.rb +++ b/gems/aws-sdk-core/lib/aws-sdk-core/cbor/encoder.rb @@ -226,8 +226,8 @@ def add_tag(tag) def add_time(value) head(MAJOR_TYPE_TAG, TAG_TYPE_EPOCH) - epoch_ms = (value.to_f * 1000).to_i - add_integer(epoch_ms) + epoch = value.to_f + add_double(epoch) end def bignum_to_bytes(value) diff --git a/gems/aws-sdk-core/spec/aws/cbor/decoder_spec.rb b/gems/aws-sdk-core/spec/aws/cbor/decoder_spec.rb index 916c005ba9b..4622ceecf23 100644 --- a/gems/aws-sdk-core/spec/aws/cbor/decoder_spec.rb +++ b/gems/aws-sdk-core/spec/aws/cbor/decoder_spec.rb @@ -63,7 +63,7 @@ def decode_half_bytes(half) end it 'decodes integer times' do - expect(cbor64_decode('wRsAAAFvYQ3z8A==')) + expect(cbor64_decode('wftB14MjtYAAAA==')) .to eq(Time.parse('2020-01-01 12:21:42Z')) end diff --git a/gems/aws-sdk-core/spec/aws/cbor/encoder_spec.rb b/gems/aws-sdk-core/spec/aws/cbor/encoder_spec.rb index abf58e2a4cc..3fda3db7950 100644 --- a/gems/aws-sdk-core/spec/aws/cbor/encoder_spec.rb +++ b/gems/aws-sdk-core/spec/aws/cbor/encoder_spec.rb @@ -77,7 +77,7 @@ def cbor64_encode(value) end it 'encodes times' do - expect(cbor64_encode(time)).to eq('wRsAAAFvYQ3z8A==') + expect(cbor64_encode(time)).to eq('wftB14MjtYAAAA==') end it 'encodes BigDecimals' do