navigable-server 0.4.0 → 0.5.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: 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