navigable-server 0.7.1 → 0.8.0

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: c771752d4b34288dd0f2966832963e02c508cd4c5c6acdb2821c711e4d860f31
4
- data.tar.gz: f1cc6c1f393481d756a68c07d02b126a326b672490ef3ce2c66f8d72db663134
3
+ metadata.gz: 9290813f3f31d905b2d7dc3a39700b23da833d04ea3397ef09a08af3fa78e3cd
4
+ data.tar.gz: a067219239e0d23bb0fde60c641fa5dbe19fe24cf9d8a52f07ef0c59d87c576d
5
5
  SHA512:
6
- metadata.gz: 508ed86c09a35f38a5401fddbb48e27dfdabb034e920d3d00578ac3d88059742c9954b872fa6275c6b79e81961940759a5ffb9434f7d96f3cd65e25a62de3b9f
7
- data.tar.gz: 179a44935ec22b2505de42cc90f10d9c4f64d9b42c88a5e6389667808365eaeb34ee0674dd495ead7e30114c6ae9a0868db4f9e9bf909b47df43a1b1811802aa
6
+ metadata.gz: dd4f369eab8a65a32dbef752cb3d315584d3390981ba3784050876382f6cf1974fb2652500b61a865e33c2f577f33ea5a7d35bf5878a6714fb38f1303c5144d1
7
+ data.tar.gz: a17f8c2565b80ae4ea06809b057a2dc7227ce1dd6a55e50edd1babbdaa39857b6dc4a410b5a97a233ae3b06949c92997fc4c53b4ab00b1fa85e63e6dcd183557
@@ -17,6 +17,7 @@ require 'navigable/server/response'
17
17
  require 'navigable/server/rack_adapter'
18
18
  require 'navigable/server/router'
19
19
  require 'navigable/server/endpoint'
20
+ require 'navigable/server/endpoint_command'
20
21
  require 'navigable/server/cors'
21
22
 
22
23
  module Navigable
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Navigable
4
+ module Server
5
+ module EndpointCommand
6
+ def self.extended(base)
7
+ base.extend(Navigable::Command)
8
+ base.extend(ClassMethods)
9
+ end
10
+
11
+ module ClassMethods
12
+ def responds_to(verb, path)
13
+ @responds_to_proc ||= Proc.new do |endpoint_klass|
14
+ endpoint_klass.responds_to(verb, path)
15
+ end
16
+
17
+ setup_endpoint_command if ready_for_setup?
18
+ end
19
+
20
+ def corresponds_to(command_key)
21
+ @corresponds_to_proc ||= Proc.new do |endpoint_klass, command_klass|
22
+ endpoint_klass.executes(command_key)
23
+ super(command_key)
24
+ end
25
+
26
+ setup_endpoint_command if ready_for_setup?
27
+ end
28
+
29
+ def setup_endpoint_command
30
+ endpoint_klass = Class.new { extend Navigable::Server::Endpoint }
31
+ @responds_to_proc.call(endpoint_klass)
32
+ @corresponds_to_proc.call(endpoint_klass, self)
33
+ end
34
+
35
+ def ready_for_setup?
36
+ @responds_to_proc && @corresponds_to_proc
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Navigable
4
4
  module Server
5
- VERSION = "0.7.1"
5
+ VERSION = "0.8.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: navigable-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alan Ridlehoover
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-12-26 00:00:00.000000000 Z
12
+ date: 2021-01-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -185,6 +185,7 @@ files:
185
185
  - lib/navigable/server.rb
186
186
  - lib/navigable/server/cors.rb
187
187
  - lib/navigable/server/endpoint.rb
188
+ - lib/navigable/server/endpoint_command.rb
188
189
  - lib/navigable/server/parsers/factory.rb
189
190
  - lib/navigable/server/parsers/json.rb
190
191
  - lib/navigable/server/parsers/null.rb