interval_response 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a1259c27fcc823bb621b20422ba45cfcac2a84148ac5dd001dc9b91fa0a84fd
4
- data.tar.gz: 8e8b15f34a42842ccb67f60c4d44ce518eb55713a1325357bb3c7f156ad6d4bd
3
+ metadata.gz: a4a58f786564c16dc9c4816023274cabe9d88d82580bf3dae0775fd866a2b4a6
4
+ data.tar.gz: f02c691b995400f9ac06a2a815584d82499101b4ca0f98dfc6afc39fd4cc5aa2
5
5
  SHA512:
6
- metadata.gz: 32522c1ea4f84a9f697c5fbef9437975c0bccd0e1ab8da912a74d5a2bb7a723c4deae3ff70ba769cb3c754e83b4482df8f1ecb7e25ac52f054a89318869e24e1
7
- data.tar.gz: 2538c43fcd2d3106b78d45380d0c1a5ed6814deed709d37c203923e9040eaea9cb22c9283998ec2ee2fdb06ae3b7e48ab6b74ba7ac2dd342a62d633202184692
6
+ metadata.gz: f7864a9e443a55bea621b01bf01eb72923de2e3cbb5dec682f0422224fead3b5ae2248c9daae62fde1c0c129a5ed67383e0d7e0259a2733674a9feba70e51c0b
7
+ data.tar.gz: 787ec5389f5d958aded3bc8ae1217ebee51da2a6dad327c88150aeeaad9282560324337a4c6b753d49207fad3319580ed9c402f95f8ec649666738b55d6e58bf
@@ -18,13 +18,19 @@ class IntervalResponse::Sequence
18
18
  end
19
19
 
20
20
  def <<(segment)
21
- return self if segment.size == 0
22
21
  segment_size_or_bytesize = segment.respond_to?(:bytesize) ? segment.bytesize : segment.size
23
- @intervals << Interval.new(segment, segment_size_or_bytesize, @size, @intervals.length)
24
- @size += segment.size
22
+ return self if segment_size_or_bytesize == 0
23
+
24
+ add_segment(segment, size: segment_size_or_bytesize)
25
+ self
25
26
  self
26
27
  end
27
28
 
29
+ def add_segment(segment, size:)
30
+ @intervals << Interval.new(segment, size, @size, @intervals.length)
31
+ @size += size
32
+ end
33
+
28
34
  def each_in_range(from_range_in_resource)
29
35
  # Skip empty ranges
30
36
  requested_range_size = (from_range_in_resource.end - from_range_in_resource.begin) + 1
@@ -1,3 +1,3 @@
1
1
  module IntervalResponse
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -40,6 +40,14 @@ RSpec.describe IntervalResponse::Sequence do
40
40
  expect(etag_for_sequence.bytesize).to be > 8
41
41
  end
42
42
 
43
+ it 'accepts objects that only respond to #bytesize and not #size' do
44
+ a = double(:a, bytesize: 6)
45
+ b = double(:b, bytesize: 12)
46
+ c = double(:c, bytesize: 17)
47
+ seq = described_class.new(a, b, c)
48
+ expect(seq.size).to eq(6 + 12 + 17)
49
+ end
50
+
43
51
  it 'generates the ETag dependent on the sequence composition' do
44
52
  a = double(:a, size: 6)
45
53
  b = double(:b, size: 12)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: interval_response
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julik Tarkhanov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-25 00:00:00.000000000 Z
11
+ date: 2019-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack