lennarb 0.1.1 → 0.1.2

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: b0e10a539894e1cf41bcebf4c01b086092d36779b1b8aebada8eabc717552348
4
- data.tar.gz: 86afa28d62c0b532e08027df8a1847bc4a72b36347388b11f4c6f7aef8c2d345
3
+ metadata.gz: 28626110518fdb3c7d63bc8cfb08492e0918b725a7a338d4e12f1bdfe8a290e5
4
+ data.tar.gz: 30508de72bcc44f69cbc9c3046674ff66fc5c6c9dd3ae495088d62ede7caa5fa
5
5
  SHA512:
6
- metadata.gz: '0539b0de41e1de79c84a89204c67931dcf0b015a2401db8bece03ef66e8fc5b7e74c87527bb431d1ec447998b067738bb41127f68917d0dbcfd44ff973294935'
7
- data.tar.gz: 88820bc3511a72fda57ef39fac259c69cc632dcb3ad0d9faa4b3514327603cc78cd6e5b6531b4c632a109901883e5ca642fa13904ab8e6445cecea466edde298
6
+ metadata.gz: e9fb2a91d64f58bec3a126129b72ab80fc8aecddff4663673a55336a517b3adba27fe7ed8cc97ab3050583cdae4f57bc8a1d63f3672175e8664edf3a9d874d79
7
+ data.tar.gz: 988b9af0d8222c02918d0639b3d9894d16b88f742620aff870a6ecb3ed50b00c74b75e809b53cdf5103fca6904d3a36167cc9877c95b8d8f006c6515a8bbdc95
@@ -24,7 +24,7 @@ module Lenna
24
24
  env = req.env
25
25
  log_error(env, e)
26
26
 
27
- render_error_page(e, env, res)
27
+ render_error_page(e, env, req, res)
28
28
  end
29
29
 
30
30
  private
@@ -37,10 +37,43 @@ module Lenna
37
37
  # @return [void]
38
38
  #
39
39
  # @api private
40
- def render_error_page(error, env, res)
41
- res.put_status(500)
42
- res.put_header('Content-Type', 'text/html')
43
- res.put_body(error_page(error, env))
40
+ def render_error_page(error, env, req, res)
41
+ case req.headers['Content-Type']
42
+ in 'application/json' then render_json(error, env, res)
43
+ else render_html(error, env, res)
44
+ end
45
+ end
46
+
47
+ # This method will render the JSON error page.
48
+ #
49
+ # @param error [StandardError] The error object
50
+ # @param env [Hash] The environment variables
51
+ # @param res [Rack::Response] The response object
52
+ # @return [void]
53
+ #
54
+ # @api private
55
+ def render_json(error, env, res)
56
+ case env['RACK_ENV']
57
+ in 'development' | 'test' then res.json(
58
+ data: {
59
+ error: error.message,
60
+ status: 500
61
+ }
62
+ )
63
+ else res.json(error: 'Internal Server Error', status: 500)
64
+ end
65
+ end
66
+
67
+ # This method will render the HTML error page.
68
+ #
69
+ # @param error [StandardError] The error object
70
+ # @param env [Hash] The environment variables
71
+ # @param res [Rack::Response] The response object
72
+ # @return [void]
73
+ #
74
+ # @api private
75
+ def render_html(error, env, res)
76
+ res.html(error_page(error, env), status: 500)
44
77
  end
45
78
 
46
79
  # This method will log the error.
@@ -37,8 +37,12 @@ module Lenna
37
37
  # Turn this:
38
38
  # HTTP_FOO=bar Foo=bar
39
39
  def headers
40
+ content_type = env['CONTENT_TYPE']
40
41
  @headers ||= env.select { |k, _| k.start_with?('HTTP_') }
41
42
  .transform_keys { |k| format_header_name(k) }
43
+
44
+ @headers['Content-Type'] = content_type if content_type
45
+ @headers
42
46
  end
43
47
 
44
48
  # This method returns the request body in a normalized way.
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lennarb
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.2'
5
5
 
6
6
  public_constant :VERSION
7
7
  end
data/lib/lennarb.rb CHANGED
@@ -6,3 +6,12 @@ require 'lennarb/array_extensions'
6
6
  # Base class for Lennarb
7
7
  require 'lenna/base'
8
8
  require 'lennarb/version'
9
+
10
+ app = Lenna::Base.new
11
+
12
+ app.get '/' do |_req, res|
13
+ raise foo
14
+ res.json(data: { error: 'Hello, world!' })
15
+ end
16
+
17
+ app.listen(8080)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lennarb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aristóteles Coutinho