lennarb 0.1.1 → 0.1.2

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