navigable-server 0.4.0 → 0.5.0

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: 126d577099fc83bd854908258e60fb7e66f50bd2c6756d17d43141662a1a9270
4
- data.tar.gz: 9cd7e23c64365f991eb4a89d348b8585a66039f63a0ac1719bf3b01fdf4c77a8
3
+ metadata.gz: 68e55e159229ccccc9d9054c051e9fdcd1edeb0a4919df0349afd1fa6950da7f
4
+ data.tar.gz: a86086f6f97ec97c1f072cc5538d60a7573ca27e913feb9704c3f25bf9eff4d4
5
5
  SHA512:
6
- metadata.gz: 778df9f366e96e7a609b995d2271200e5371dd30c5c2fabb7f18bdda82463bcd880954ea9cd9a96ee0d9e0a84b17f11ad18bfb13ece8d92b81d069034847a058
7
- data.tar.gz: 289bad94b8b4a0bb72cec07a40ad87870b6fc03fb6cbc0a3fe39bc50aae311c584e82c975a80baf8704934c138372a74b70e5418a12489b1833ba21efaebd5f6
6
+ metadata.gz: ade898aefa8686fe83f748f3493b71b5acc578b99324a5abb1251943dc73ac61d43400c6d8bbe7dbfb454a1a58854f2c69bbdad54d313acc72a17210fee22396
7
+ data.tar.gz: 0adfc4624b53cb5a3f172f8bf3700a713616469813747479743d01f084ff808ff95ac6be7a8ea3aee9b4bdaaead139078097dcfa868a7afb3c4ba0f7bccba9ea
data/.rspec CHANGED
@@ -1,3 +1,2 @@
1
- --format documentation
2
1
  --color
3
2
  --require spec_helper
@@ -3,13 +3,17 @@
3
3
  module Navigable
4
4
  module Server
5
5
  module Endpoint
6
- EXECUTE_NOT_IMPLEMENTED_MESSAGE = 'Class must implement `execute` method.'
6
+ EXECUTE_NOT_IMPLEMENTED_MESSAGE = 'Endpoint classes must either call `executes` or implement an `execute` method.'
7
7
 
8
8
  def self.extended(base)
9
9
  base.instance_eval do
10
10
  def responds_to(verb, path)
11
11
  Navigable::Server.add_endpoint(verb: verb, path: path, endpoint_class: self)
12
12
  end
13
+
14
+ def executes(command_key)
15
+ @command_key = command_key
16
+ end
13
17
  end
14
18
 
15
19
  base.class_eval do
@@ -20,10 +24,34 @@ module Navigable
20
24
  end
21
25
 
22
26
  def execute
23
- raise NotImplementedError.new(EXECUTE_NOT_IMPLEMENTED_MESSAGE)
27
+ raise NotImplementedError.new(EXECUTE_NOT_IMPLEMENTED_MESSAGE) unless command_key
28
+
29
+ dispatch
30
+ end
31
+
32
+ private
33
+
34
+ def dispatch
35
+ Navigable::Dispatcher.dispatch(command_key, params: params, resolver: resolver)
36
+ end
37
+
38
+ def command_key
39
+ self.class.instance_variable_get(:@command_key)
40
+ end
41
+
42
+ def params
43
+ request.params
44
+ end
45
+
46
+ def preferred_media_type
47
+ request.headers[:preferred_media_type]
48
+ end
49
+
50
+ def resolver
51
+ Manufacturable.build_one(Resolver::TYPE, preferred_media_type) || Navigable::NullResolver.new
24
52
  end
25
53
  end
26
54
  end
27
55
  end
28
56
  end
29
- end
57
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Navigable
4
4
  module Server
5
- VERSION = "0.4.0"
5
+ VERSION = "0.5.0"
6
6
  end
7
7
  end
@@ -23,9 +23,9 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.add_dependency 'navigable-router'
27
26
  spec.add_dependency 'json', '~> 2.3'
28
- spec.add_dependency 'navigable', '~> 1.0'
27
+ spec.add_dependency 'navigable', '~> 1.3'
28
+ spec.add_dependency 'navigable-router', '~>0.2'
29
29
  spec.add_dependency 'rack', '~> 2.2'
30
30
  spec.add_dependency 'rack-abstract-format', '~> 0.9.9'
31
31
  spec.add_dependency 'rack-accept-media-types', '~> 0.9'
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.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alan Ridlehoover
@@ -9,50 +9,50 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-09-27 00:00:00.000000000 Z
12
+ date: 2020-09-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: navigable-router
15
+ name: json
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: '2.3'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: '2.3'
28
28
  - !ruby/object:Gem::Dependency
29
- name: json
29
+ name: navigable
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '2.3'
34
+ version: '1.3'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '2.3'
41
+ version: '1.3'
42
42
  - !ruby/object:Gem::Dependency
43
- name: navigable
43
+ name: navigable-router
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '1.0'
48
+ version: '0.2'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '1.0'
55
+ version: '0.2'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rack
58
58
  requirement: !ruby/object:Gem::Requirement