metatron 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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