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 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