json_schemer-rails 0.3.1 → 0.4.0
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 +4 -4
- data/README.md +9 -9
- data/lib/json_schemer/rails/controller.rb +2 -2
- data/lib/json_schemer/rails/open_api_validator.rb +1 -2
- data/lib/json_schemer/rails/{validation_error.rb → request_validation_error.rb} +1 -1
- data/lib/json_schemer/rails/version.rb +2 -2
- data/lib/json_schemer/rails.rb +5 -5
- metadata +19 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 554ef1720a48d6ca36556c75545437570e81c1be1385eb1890972505d2d5123c
|
|
4
|
+
data.tar.gz: 0ca66897ec4cbaab7feec481e97cece862f039778f44c4ec14e95dd868b3e639
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a37b183d5928d8fbd1dcb28b2520a1cdea50a3786ca32fbdc1da2d7b84ee12a64e9774d640fda5221181bb8b40c2d7e2879ecea672593ab5071d18952fca6079
|
|
7
|
+
data.tar.gz: 4809ee27c3d9fdc2ab81910df31a00d2f23ebc43b21c99c0524b6e269b181a9116fb88a8e387fb50d52a6b71cc3c2474c45edb7ab7662e9b6c5888ff4397a7b6
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# JSONSchemer::Rails
|
|
2
2
|
|
|
3
3
|
[](https://www.ruby-lang.org/en/)
|
|
4
4
|
[](https://rubyonrails.org/)
|
|
@@ -90,7 +90,7 @@ paths:
|
|
|
90
90
|
|
|
91
91
|
```ruby
|
|
92
92
|
class UsersController < ApplicationController
|
|
93
|
-
include
|
|
93
|
+
include JSONSchemer::Rails::Controller
|
|
94
94
|
|
|
95
95
|
before_action :validate_from_openapi, only: [:create, :update]
|
|
96
96
|
|
|
@@ -111,7 +111,7 @@ end
|
|
|
111
111
|
```ruby
|
|
112
112
|
class UsersController < ApplicationController
|
|
113
113
|
def create
|
|
114
|
-
validator =
|
|
114
|
+
validator = JSONSchemer::Rails::OpenApiValidator.new(request)
|
|
115
115
|
|
|
116
116
|
# Validate and cast parameters
|
|
117
117
|
validator.validated_params
|
|
@@ -134,7 +134,7 @@ end
|
|
|
134
134
|
By default, the validator looks for `openapi.yml` in your Rails root. You can specify a different location:
|
|
135
135
|
|
|
136
136
|
```ruby
|
|
137
|
-
validator =
|
|
137
|
+
validator = JSONSchemer::Rails::OpenApiValidator.new(
|
|
138
138
|
request,
|
|
139
139
|
open_api_filename: Rails.root.join('config', 'api_schema.yml')
|
|
140
140
|
)
|
|
@@ -199,11 +199,11 @@ params[:limit] # => "10" (String, not cast because OpenAPI handles this differe
|
|
|
199
199
|
|
|
200
200
|
## Error Handling
|
|
201
201
|
|
|
202
|
-
When validation fails, a `
|
|
202
|
+
When validation fails, a `JSONSchemer::Rails::RequestValidationError` is raised:
|
|
203
203
|
|
|
204
204
|
```ruby
|
|
205
205
|
class ApplicationController < ActionController::API
|
|
206
|
-
rescue_from
|
|
206
|
+
rescue_from JSONSchemer::Rails::RequestValidationError do |exception|
|
|
207
207
|
render json: { error: exception.message }, status: :unprocessable_entity
|
|
208
208
|
end
|
|
209
209
|
end
|
|
@@ -249,7 +249,7 @@ end
|
|
|
249
249
|
|
|
250
250
|
```ruby
|
|
251
251
|
class UsersController < ApplicationController
|
|
252
|
-
include
|
|
252
|
+
include JSONSchemer::Rails::Controller
|
|
253
253
|
|
|
254
254
|
before_action :validate_from_openapi, except: [:index]
|
|
255
255
|
|
|
@@ -268,7 +268,7 @@ end
|
|
|
268
268
|
```ruby
|
|
269
269
|
class UsersController < ApplicationController
|
|
270
270
|
def create
|
|
271
|
-
validator =
|
|
271
|
+
validator = JSONSchemer::Rails::OpenApiValidator.new(request)
|
|
272
272
|
|
|
273
273
|
# Validate parameters first
|
|
274
274
|
validator.validated_params
|
|
@@ -327,4 +327,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
|
327
327
|
|
|
328
328
|
Built with [json_schemer](https://github.com/davishmcclurg/json_schemer) by Davis W. McGuire.
|
|
329
329
|
|
|
330
|
-
Developed by [Stanford Digital Library](https://library.stanford.edu/).
|
|
330
|
+
Developed by [Stanford Digital Library](https://library.stanford.edu/).
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
module
|
|
3
|
+
module JSONSchemer
|
|
4
4
|
module Rails
|
|
5
5
|
# Mixin for controllers.
|
|
6
6
|
# usage:
|
|
7
|
-
# include
|
|
7
|
+
# include JSONSchemer::Rails::Controller
|
|
8
8
|
# before_action :validate_from_openapi
|
|
9
9
|
module Controller
|
|
10
10
|
def validate_from_openapi
|
data/lib/json_schemer/rails.rb
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
require_relative "rails/open_api_validator"
|
|
6
|
-
require_relative "rails/controller"
|
|
3
|
+
require "json_schemer"
|
|
4
|
+
require "zeitwerk"
|
|
7
5
|
|
|
8
|
-
|
|
6
|
+
Zeitwerk::Loader.for_gem_extension(JSONSchemer).setup
|
|
7
|
+
|
|
8
|
+
module JSONSchemer
|
|
9
9
|
module Rails
|
|
10
10
|
class Error < StandardError; end
|
|
11
11
|
# Your code goes here...
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: json_schemer-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Justin Coyne
|
|
@@ -37,7 +37,21 @@ dependencies:
|
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '8.0'
|
|
40
|
-
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: zeitwerk
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
description: Rails integration for JSONSchemer. Validates OpenAPI
|
|
41
55
|
email:
|
|
42
56
|
- jcoyne@justincoyne.com
|
|
43
57
|
executables: []
|
|
@@ -49,7 +63,7 @@ files:
|
|
|
49
63
|
- lib/json_schemer/rails.rb
|
|
50
64
|
- lib/json_schemer/rails/controller.rb
|
|
51
65
|
- lib/json_schemer/rails/open_api_validator.rb
|
|
52
|
-
- lib/json_schemer/rails/
|
|
66
|
+
- lib/json_schemer/rails/request_validation_error.rb
|
|
53
67
|
- lib/json_schemer/rails/version.rb
|
|
54
68
|
homepage: https://github.com/sul-dlss/json_schemer-rails
|
|
55
69
|
licenses: []
|
|
@@ -72,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
72
86
|
- !ruby/object:Gem::Version
|
|
73
87
|
version: '0'
|
|
74
88
|
requirements: []
|
|
75
|
-
rubygems_version: 4.0.
|
|
89
|
+
rubygems_version: 4.0.7
|
|
76
90
|
specification_version: 4
|
|
77
|
-
summary: Rails integration for
|
|
91
|
+
summary: Rails integration for JSONSchemer. Validates OpenAPI
|
|
78
92
|
test_files: []
|