rusty_json_schema 0.5.0 → 0.15.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/Cargo.toml +3 -3
- data/README.md +1 -1
- data/ext/json_schema.so.x64-mingw32.default +0 -0
- data/ext/json_schema.so.x86_64-darwin.default +0 -0
- data/ext/json_schema.so.x86_64-linux.default +0 -0
- data/lib/rusty_json_schema/validator.rb +17 -0
- data/lib/rusty_json_schema/version.rb +1 -1
- data/rusty_json_schema.gemspec +6 -5
- data/src/lib.rs +16 -17
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29f2fb5ead80040422387ea9ee95e400f8a48a3e376dcfc1755330d4db14a52a
|
4
|
+
data.tar.gz: 7588135d9a3f0cc439195f272f6f142937060282a43668681e5e8570d05317a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ca5e12925de57af28fb53216313181409a9523e91414f711615d9ab4ea819c19e5be1ef76e0c6868942082e16263ac0ed5ff25867cb5f0a2a94ae3b87711dc1
|
7
|
+
data.tar.gz: e140c075a9d5e0d58dc7d391abf250c53704e9f5cb1bc14e742f5f31e57e1335a085b117b589ab1b6fab8520cfcd565078da1a7b86e92977f115f5a9f31f3458
|
data/Cargo.toml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
[package]
|
2
2
|
name = "json_schema"
|
3
|
-
version = "0.
|
3
|
+
version = "0.15.0"
|
4
4
|
authors = ["Leszek Zalewski <leszekzalewski@fastmail.fm>"]
|
5
5
|
edition = "2018"
|
6
6
|
|
@@ -9,6 +9,6 @@ name = "json_schema"
|
|
9
9
|
crate-type = ["cdylib"]
|
10
10
|
|
11
11
|
[dependencies]
|
12
|
-
libc = "0.2.
|
13
|
-
jsonschema = "0.
|
12
|
+
libc = "0.2.121"
|
13
|
+
jsonschema = "0.15.0"
|
14
14
|
serde_json = "1.0"
|
data/README.md
CHANGED
Binary file
|
Binary file
|
Binary file
|
@@ -17,10 +17,27 @@ module RustyJSONSchema
|
|
17
17
|
|
18
18
|
# Simple validation without actual error messages
|
19
19
|
#
|
20
|
+
# ## Examples
|
21
|
+
#
|
22
|
+
# validator = RustyJSONSchema.build(json_schema)
|
23
|
+
# validator.valid?(event)
|
24
|
+
# # => false|true
|
25
|
+
#
|
20
26
|
def valid?(event)
|
21
27
|
Binding.is_valid(self, RustyJSONSchema.dump(event))
|
22
28
|
end
|
23
29
|
|
30
|
+
# Full validation and error messages
|
31
|
+
#
|
32
|
+
# ## Examples
|
33
|
+
#
|
34
|
+
# validator = RustyJSONSchema.build(json_schema)
|
35
|
+
# validator.validate(event)
|
36
|
+
# # => [
|
37
|
+
# # 'path "/foo": "rusty" is not a "number"',
|
38
|
+
# # ...
|
39
|
+
# # ]
|
40
|
+
#
|
24
41
|
def validate(event)
|
25
42
|
Binding.validate(self, RustyJSONSchema.dump(event)).to_a
|
26
43
|
end
|
data/rusty_json_schema.gemspec
CHANGED
@@ -16,12 +16,13 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
|
|
16
16
|
Currently during heavy development.
|
17
17
|
STR
|
18
18
|
|
19
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
19
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
|
20
20
|
|
21
|
-
spec.metadata["allowed_push_host"]
|
22
|
-
spec.metadata["homepage_uri"]
|
23
|
-
spec.metadata["source_code_uri"]
|
24
|
-
spec.metadata["changelog_uri"]
|
21
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
22
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
23
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
24
|
+
spec.metadata["changelog_uri"] = "https://github.com/driv3r/rusty_json_schema/blob/main/CHANGELOG.md"
|
25
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
25
26
|
|
26
27
|
spec.files = Dir[
|
27
28
|
"lib/**/*",
|
data/src/lib.rs
CHANGED
@@ -7,29 +7,24 @@ use std::ffi::{CStr, CString};
|
|
7
7
|
use std::os::raw::{c_char, c_uint};
|
8
8
|
|
9
9
|
/*
|
10
|
-
* Our wrapper struct for schema
|
11
|
-
*
|
12
|
-
* it freed up, as JSONSchema uses it as reference.
|
10
|
+
* Our wrapper struct for schema, we need to hold
|
11
|
+
* onto value in order to not have it freed up.
|
13
12
|
*/
|
14
13
|
pub struct Validator {
|
15
|
-
schema: &'static JSONSchema
|
16
|
-
schema_value: &'static Value,
|
14
|
+
schema: &'static JSONSchema,
|
17
15
|
}
|
18
16
|
|
19
17
|
impl Validator {
|
20
18
|
/*
|
21
|
-
* With Box::leak we avoid freeing up of schema
|
22
|
-
*
|
23
|
-
* in the Drop implementation
|
19
|
+
* With Box::leak we avoid freeing up of schema,
|
20
|
+
* we free them up separately in the Drop implementation
|
24
21
|
*/
|
25
22
|
fn new(schema: Value) -> Validator {
|
26
|
-
let
|
27
|
-
|
28
|
-
Box::leak(Box::new(JSONSchema::compile(boxed_schema).unwrap()));
|
23
|
+
let boxed_compile: &'static JSONSchema =
|
24
|
+
Box::leak(Box::new(JSONSchema::compile(&schema).unwrap()));
|
29
25
|
|
30
26
|
Validator {
|
31
27
|
schema: boxed_compile,
|
32
|
-
schema_value: boxed_schema,
|
33
28
|
}
|
34
29
|
}
|
35
30
|
|
@@ -42,7 +37,12 @@ impl Validator {
|
|
42
37
|
|
43
38
|
if let Err(validation_errors) = self.schema.validate(event) {
|
44
39
|
for error in validation_errors {
|
45
|
-
|
40
|
+
let path = match format!("{}", error.instance_path).as_str() {
|
41
|
+
"" => "/".to_string(),
|
42
|
+
p => p.to_string(),
|
43
|
+
};
|
44
|
+
|
45
|
+
errors.push(format!("path \"{}\": {}", path, error));
|
46
46
|
}
|
47
47
|
}
|
48
48
|
|
@@ -58,7 +58,6 @@ impl Drop for Validator {
|
|
58
58
|
fn drop(&mut self) {
|
59
59
|
unsafe {
|
60
60
|
Box::from_raw(self.schema as *const _ as *mut JSONSchema);
|
61
|
-
Box::from_raw(self.schema_value as *const _ as *mut Value);
|
62
61
|
}
|
63
62
|
}
|
64
63
|
}
|
@@ -209,9 +208,9 @@ mod tests {
|
|
209
208
|
let result = unsafe { helper_validate_result_as_vec(raw_result) };
|
210
209
|
|
211
210
|
let expectation: Vec<String> = vec![
|
212
|
-
String::from("\
|
213
|
-
String::from("\
|
214
|
-
String::from("\
|
211
|
+
String::from("path \"/bar\": \"rusty\" is not of type \"number\""),
|
212
|
+
String::from("path \"/foo\": 1 is not of type \"string\""),
|
213
|
+
String::from("path \"/\": \"baz\" is a required property"),
|
215
214
|
];
|
216
215
|
|
217
216
|
assert_eq!(result, expectation);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rusty_json_schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leszek Zalewski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thermite
|
@@ -85,6 +85,7 @@ metadata:
|
|
85
85
|
homepage_uri: https://github.com/driv3r/rusty_json_schema
|
86
86
|
source_code_uri: https://github.com/driv3r/rusty_json_schema
|
87
87
|
changelog_uri: https://github.com/driv3r/rusty_json_schema/blob/main/CHANGELOG.md
|
88
|
+
rubygems_mfa_required: 'true'
|
88
89
|
post_install_message:
|
89
90
|
rdoc_options: []
|
90
91
|
require_paths:
|
@@ -93,15 +94,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
93
94
|
requirements:
|
94
95
|
- - ">="
|
95
96
|
- !ruby/object:Gem::Version
|
96
|
-
version: 2.
|
97
|
+
version: 2.6.0
|
97
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
99
|
requirements:
|
99
100
|
- - ">="
|
100
101
|
- !ruby/object:Gem::Version
|
101
102
|
version: '0'
|
102
103
|
requirements: []
|
103
|
-
|
104
|
-
rubygems_version: 2.7.3
|
104
|
+
rubygems_version: 3.0.1
|
105
105
|
signing_key:
|
106
106
|
specification_version: 4
|
107
107
|
summary: FFI wrapper around jsonschema-rs Rust library.
|