navigable-server 0.7.0 → 0.7.1

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: d3238ea73512027978b85f41e2c6c43b3af251f3290beb980356f568a8f95702
4
- data.tar.gz: 226b37a18f21fec58e6cf87492ccb9e9867371848545c38b822f51dad7b40a81
3
+ metadata.gz: c771752d4b34288dd0f2966832963e02c508cd4c5c6acdb2821c711e4d860f31
4
+ data.tar.gz: f1cc6c1f393481d756a68c07d02b126a326b672490ef3ce2c66f8d72db663134
5
5
  SHA512:
6
- metadata.gz: 5301252d54622cd12f6438f11b2e9cb5b7960833559aab0fd6fdcd61525905359a7167ac98404b3bcf0a3f7d7c579e7074dc389accdbcb93ce68a904fd2facdb
7
- data.tar.gz: 4cb4ea7f3ba6bad54a31da6535e7dc633779757f0471c9a44db64b57434a4b2217dd753e3cde52d06ee81c3743f4b2a5053d98cbaa984aff080b2ea9f1d35f1f
6
+ metadata.gz: 508ed86c09a35f38a5401fddbb48e27dfdabb034e920d3d00578ac3d88059742c9954b872fa6275c6b79e81961940759a5ffb9434f7d96f3cd65e25a62de3b9f
7
+ data.tar.gz: 179a44935ec22b2505de42cc90f10d9c4f64d9b42c88a5e6389667808365eaeb34ee0674dd495ead7e30114c6ae9a0868db4f9e9bf909b47df43a1b1811802aa
@@ -6,10 +6,12 @@ require 'navigable'
6
6
  require 'rack'
7
7
  require 'rack/accept_media_types'
8
8
  require 'rack/abstract_format'
9
- require 'rack/bodyparser'
10
9
 
11
10
  require 'navigable/server'
12
11
  require 'navigable/server/version'
12
+ require 'navigable/server/parsers/json'
13
+ require 'navigable/server/parsers/null'
14
+ require 'navigable/server/parsers/factory'
13
15
  require 'navigable/server/request'
14
16
  require 'navigable/server/response'
15
17
  require 'navigable/server/rack_adapter'
@@ -26,7 +28,6 @@ module Navigable
26
28
  def self.rack_app
27
29
  @server ||= Rack::Builder.new(Server.router) do
28
30
  use Navigable::Server::CORS::Middleware
29
- use Rack::BodyParser, :parsers => BODY_PARSERS
30
31
  use Rack::AbstractFormat
31
32
  end
32
33
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Navigable
4
+ module Server
5
+ module Parsers
6
+ class Factory
7
+ def self.build(media_type:)
8
+ case media_type
9
+ when /application\/json/
10
+ Parsers::JSON
11
+ else
12
+ Parsers::Null
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Navigable
4
+ module Server
5
+ module Parsers
6
+ class JSON
7
+ def self.parse(text)
8
+ text ? ::JSON.parse(text) : {}
9
+ rescue ::JSON::ParserError
10
+ {}
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Navigable
4
+ module Server
5
+ module Parsers
6
+ class Null
7
+ def self.parse(*args); end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -38,7 +38,19 @@ module Navigable
38
38
  end
39
39
 
40
40
  def body_params
41
- symbolize_keys(env[PARSED_BODY] || {})
41
+ symbolize_keys(parsed_body || {})
42
+ end
43
+
44
+ def parsed_body
45
+ Parsers::Factory.build(media_type: media_type).parse(body)
46
+ end
47
+
48
+ def body
49
+ @body ||= rack_request.body.read.tap { rack_request.body.rewind }
50
+ end
51
+
52
+ def media_type
53
+ rack_request.media_type
42
54
  end
43
55
 
44
56
  def url_params
@@ -54,4 +66,4 @@ module Navigable
54
66
  end
55
67
  end
56
68
  end
57
- end
69
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Navigable
4
4
  module Server
5
- VERSION = "0.7.0"
5
+ VERSION = "0.7.1"
6
6
  end
7
7
  end
@@ -29,7 +29,6 @@ Gem::Specification.new do |spec|
29
29
  spec.add_dependency 'rack', '~> 2.2'
30
30
  spec.add_dependency 'rack-abstract-format', '~> 0.9.9'
31
31
  spec.add_dependency 'rack-accept-media-types', '~> 0.9'
32
- spec.add_dependency 'rack-bodyparser', '~> 1.0'
33
32
 
34
33
  spec.add_development_dependency "bundler", "~> 2.0"
35
34
  spec.add_development_dependency "rake", "~> 12.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: navigable-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alan Ridlehoover
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-12-18 00:00:00.000000000 Z
12
+ date: 2020-12-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -95,20 +95,6 @@ dependencies:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0.9'
98
- - !ruby/object:Gem::Dependency
99
- name: rack-bodyparser
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - "~>"
103
- - !ruby/object:Gem::Version
104
- version: '1.0'
105
- type: :runtime
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '1.0'
112
98
  - !ruby/object:Gem::Dependency
113
99
  name: bundler
114
100
  requirement: !ruby/object:Gem::Requirement
@@ -199,6 +185,9 @@ files:
199
185
  - lib/navigable/server.rb
200
186
  - lib/navigable/server/cors.rb
201
187
  - lib/navigable/server/endpoint.rb
188
+ - lib/navigable/server/parsers/factory.rb
189
+ - lib/navigable/server/parsers/json.rb
190
+ - lib/navigable/server/parsers/null.rb
202
191
  - lib/navigable/server/rack_adapter.rb
203
192
  - lib/navigable/server/request.rb
204
193
  - lib/navigable/server/response.rb