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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 461f2d34b19899740eb1194ff7490f732c39dfb8
4
- data.tar.gz: b479dd0e94a125dc5b5044acd19beafdd7b28943
3
+ metadata.gz: 0d24d8d9b235b2e5841fd4731a948ce34311cee2
4
+ data.tar.gz: 6c9746f7171344d6580c0b017dfe0fd52dacbe74
5
5
  SHA512:
6
- metadata.gz: d82ee96b08c208e66cfbe668605b26b7f9e1f5e821dc3ce11eca2f2de06ae6795490964ecaa1c8ce334fb3237f3b1229192dd5ca172f901b7af6553d6afdeda1
7
- data.tar.gz: 0655b6785ac8f859fefe171e3847198164e86fe99bfef05bc68e217d7fd7a4f4d27de46710f8c26c2ce343cec770a0e92d24ed2f1d23d520ed9dceb279bf06cb
6
+ metadata.gz: bdd2fc1ef6fefd6196a2d3a13f60dded611dada7e43040aed3dfea0fe209e56ecf65e9ddd19c0a52759f8e8614e0f6c37f36a5e3de72e1118589a71754efd3cf
7
+ data.tar.gz: 995a7b227fa5610f1d575e7c6067df071c7dd120b6c6bd036ee2e86ea1e4876a13520a68d6b4831732c6746d10c86bc18eea1fe327948cff7d3a342c2d61c9a5
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'es-readmodel'
5
- spec.version = '0.0.4'
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.add_development_dependency 'rspec', '3.5.0'
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
 
@@ -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
- pattern = Mustermann.new(route)
17
- args = pattern.params(path)
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 found'})
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
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-05 00:00:00.000000000 Z
11
+ date: 2017-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
14
+ name: rack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.5.0
20
- type: :development
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: 3.5.0
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