metatron 0.3.0 → 0.3.1

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: 7cc8e8eb267de1f2e8c3a3572685596b1d223ecd6e05aaaf62e26d3bf83f4622
4
- data.tar.gz: d3b17e9f96f220c51a72552a2c6f136095d4d4d5eb01d3cee7e87b3f1956f69f
3
+ metadata.gz: 7be8fd32bdf4ce62a28058510331ae0add378955f77e26b15fd77c9a3e5e1e40
4
+ data.tar.gz: 32193fca77a3b4d6015090c7aa4ae47921c18a808872d0b6fa1552303c50916b
5
5
  SHA512:
6
- metadata.gz: 5ff99ad79b24dd6e223953d28e446175137cb95aebe46c8f20a05e723f4a994815a8d33f9a2df69e6dfd2435b9784c67565d61c52ae5a768e3b1a026544acc0d
7
- data.tar.gz: a844971834381acf609d2ab81321788b957916e044e5d679a33b1df0dd958956315b41f93f3c0f0814e61a3cf6f1d3921d38785e1af66c22760d9bb9c7a8e5dc
6
+ metadata.gz: dedc229ae2283d2fec91477289aabd079e8c2bdab5d682dc40cf0376191e0e1dd158374e2b984afa7b0145ac18bb8830d4f0c1d9edea28b7001dfc64f3dce63a
7
+ data.tar.gz: 49092eadfc7a43b1d3bb8e5ac65c1bc56c2780b2dc08841da8842e66dcd041497e97efab209def7b5ffbee1dac01dd2a426514f11d9c428755794796c20db3f2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- metatron (0.3.0)
4
+ metatron (0.3.1)
5
5
  json (~> 2.6)
6
6
  puma (~> 6.3)
7
7
  sinatra (~> 2.2)
@@ -9,9 +9,21 @@ module Metatron
9
9
  end
10
10
 
11
11
  post "/" do
12
+ # TODO: move this to Sinatra's `etag` helper when Metacontroller is RFC compliant
13
+ if (provided_etag = calculate_etag) &&
14
+ (match_header = request.env["HTTP_IF_NONE_MATCH"]) &&
15
+ match_header.split(/,\s?/).include?("\"#{provided_etag}\"")
16
+ halt 304
17
+ end
18
+
19
+ # If the etag is available, use it, otherwise proceed with the sync
20
+ headers "ETag" => "\"#{provided_etag}\"" if provided_etag
12
21
  data = sync
13
22
  data[:children] = data[:children]&.map { |c| c.respond_to?(:render) ? c.render : c }
14
23
  halt(data.to_json)
15
24
  end
25
+
26
+ def calculate_etag = nil
27
+ def sync = raise NotImplementedError
16
28
  end
17
29
  end
@@ -4,6 +4,6 @@ module Metatron
4
4
  VERSION = [
5
5
  0, # major
6
6
  3, # minor
7
- 0 # patch
7
+ 1 # patch
8
8
  ].join(".")
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metatron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Gnagy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-21 00:00:00.000000000 Z
11
+ date: 2023-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json