es-readmodel 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|