es-readmodel 0.0.4 → 0.0.5
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 +4 -4
- data/es-readmodel.gemspec +4 -3
- data/lib/es_readmodel/api.rb +17 -8
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d24d8d9b235b2e5841fd4731a948ce34311cee2
|
4
|
+
data.tar.gz: 6c9746f7171344d6580c0b017dfe0fd52dacbe74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bdd2fc1ef6fefd6196a2d3a13f60dded611dada7e43040aed3dfea0fe209e56ecf65e9ddd19c0a52759f8e8614e0f6c37f36a5e3de72e1118589a71754efd3cf
|
7
|
+
data.tar.gz: 995a7b227fa5610f1d575e7c6067df071c7dd120b6c6bd036ee2e86ea1e4876a13520a68d6b4831732c6746d10c86bc18eea1fe327948cff7d3a342c2d61c9a5
|
data/es-readmodel.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'es-readmodel'
|
5
|
-
spec.version = '0.0.
|
5
|
+
spec.version = '0.0.5'
|
6
6
|
spec.licenses = ['MIT']
|
7
7
|
spec.authors = ['Kevin Rutherford']
|
8
8
|
spec.email = ['kevin@rutherford-software.com']
|
@@ -14,13 +14,14 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/}) }
|
15
15
|
spec.require_paths = ['lib']
|
16
16
|
|
17
|
-
spec.
|
18
|
-
|
17
|
+
spec.add_runtime_dependency 'rack', '~> 2.0'
|
19
18
|
spec.add_runtime_dependency 'faraday', '~> 0.13'
|
20
19
|
spec.add_runtime_dependency 'faraday_middleware', '~> 0.12'
|
21
20
|
spec.add_runtime_dependency 'hashie', '~> 3.5'
|
22
21
|
spec.add_runtime_dependency 'json', '~> 2.1'
|
23
22
|
spec.add_runtime_dependency 'mustermann', '~> 1.0'
|
24
23
|
|
24
|
+
spec.add_development_dependency 'rspec', '~> 3.7'
|
25
|
+
|
25
26
|
end
|
26
27
|
|
data/lib/es_readmodel/api.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'rack'
|
1
2
|
require 'json'
|
2
3
|
require 'mustermann'
|
3
4
|
|
@@ -13,19 +14,27 @@ module EsReadModel
|
|
13
14
|
@request = Rack::Request.new(env)
|
14
15
|
path = @request.path_info
|
15
16
|
@routes.each do |route, handler|
|
16
|
-
|
17
|
-
args
|
18
|
-
if args
|
19
|
-
return json_response(503, {status: env['readmodel.status']}) unless env['readmodel.available'] == true
|
20
|
-
result = handler.call(@request.env['readmodel.state'], @request.params.merge(args))
|
21
|
-
return result ? json_response(200, result) : json_response(404, {error: 'not found'})
|
22
|
-
end
|
17
|
+
args = Mustermann.new(route).params(path)
|
18
|
+
return invoke_handler(handler, args, env) if args
|
23
19
|
end
|
24
|
-
return json_response(404, {error: 'not
|
20
|
+
return json_response(404, {error: 'path did not match any route'})
|
25
21
|
end
|
26
22
|
|
27
23
|
private
|
28
24
|
|
25
|
+
def invoke_handler(handler, args, env)
|
26
|
+
return json_response(503, {status: env['readmodel.status']}) unless env['readmodel.available'] == true
|
27
|
+
begin
|
28
|
+
result = handler.call(@request.env['readmodel.state'], @request.params.merge(args))
|
29
|
+
return result ? json_response(200, result) : json_response(404, {error: 'not found in read model'})
|
30
|
+
rescue Exception => ex
|
31
|
+
return json_response(500, {
|
32
|
+
error: "#{ex.class.name}: #{ex.message}",
|
33
|
+
backtrace: ex.backtrace
|
34
|
+
})
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
29
38
|
def json_response(status_code, body)
|
30
39
|
result = body.merge({
|
31
40
|
_links: { self: @request.fullpath }
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: es-readmodel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Rutherford
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rack
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
19
|
+
version: '2.0'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.7'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.7'
|
97
111
|
description: An opinionated read model framework for use with EventStore
|
98
112
|
email:
|
99
113
|
- kevin@rutherford-software.com
|