openapi_first 0.10.1 → 0.10.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: 14e09e897264d21c6e932f5c01fb4e2a9ae9c3dab065ebf12dee3bffde0c15c3
4
- data.tar.gz: 21441c2a7ecf5cda139e8341191b409f7c7848d6ac77f3d21077693292672b91
3
+ metadata.gz: 49ebcf2af159defac87d97f5d9cc1b2c76a1f76ce09376f209bc38458c2eee07
4
+ data.tar.gz: dbe17ecf51792614df624c91a704f9a319bf1bf2b1b1cded454a748f193c2e21
5
5
  SHA512:
6
- metadata.gz: 2609d6c686ae07f9e2a73ea6d32432f08e5fa951a4608789fdaafbe7b3734a2f039b6c9beab55829aedbc0a7fc14d0c0b80dae9b8c5a83ffb2938916e546900a
7
- data.tar.gz: 6bcfb9cebdd1f2263006234bdda7739abe2486e530bfa9f94e2d9825a8788344f968b4afaf1fb616765babe4762b210625026817a80d02a985621286ccc6299e
6
+ metadata.gz: 9d478201cf1e856d745dff02e4977552b95c09500956be61c6d169cf179a1f15968bca460a63a9ce76fb97bba0c5d5713e94d5e802d8fe0446428fdfd6b3feb8
7
+ data.tar.gz: dac17e6ec186b821a6fbdf09c47c20478f43bb21d30175b5d3e8150e0e99cf98110b2a7c01e143207176733485b52df1972277bc6790a7730c6a365dde32e3b1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.10.2
4
+ - Return 400 if request body has invalid JSON ([issue](https://github.com/ahx/openapi_first/issues/73)) thanks Thomas Frütel
5
+
6
+ ## 0.10.1
7
+ - Fix duplicated key in `required` when generating JSON schema for `some[thing]` parameters
8
+
3
9
  ## 0.10.0
4
10
  - Add support for query parameters named `"some[thing]"` ([issue](https://github.com/ahx/openapi_first/issues/40))
5
11
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openapi_first (0.10.1)
4
+ openapi_first (0.10.2)
5
5
  deep_merge (>= 1.2.1)
6
6
  hanami-router (~> 2.0.alpha2)
7
7
  hanami-utils (~> 2.0.alpha1)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- openapi_first (0.10.1)
4
+ openapi_first (0.10.2)
5
5
  deep_merge (>= 1.2.1)
6
6
  hanami-router (~> 2.0.alpha2)
7
7
  hanami-utils (~> 2.0.alpha1)
@@ -44,7 +44,7 @@ module OpenapiFirst
44
44
  schema = request_body_schema(content_type, operation)
45
45
  return unless schema
46
46
 
47
- parsed_request_body = MultiJson.load(body)
47
+ parsed_request_body = parse_request_body!(body)
48
48
  errors = validate_json_schema(schema, parsed_request_body)
49
49
  if errors.any?
50
50
  halt(error_response(400, serialize_request_body_errors(errors)))
@@ -52,6 +52,14 @@ module OpenapiFirst
52
52
  env[INBOX].merge! env[REQUEST_BODY] = parsed_request_body
53
53
  end
54
54
 
55
+ def parse_request_body!(body)
56
+ MultiJson.load(body)
57
+ rescue MultiJson::ParseError => e
58
+ err = { title: 'Failed to parse body as JSON' }
59
+ err[:detail] = e.cause unless ENV['RACK_ENV'] == 'production'
60
+ halt(error_response(400, [err]))
61
+ end
62
+
55
63
  def validate_request_content_type!(content_type, operation)
56
64
  return if operation.request_body.content[content_type]
57
65
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenapiFirst
4
- VERSION = '0.10.1'
4
+ VERSION = '0.10.2'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapi_first
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Haller