open_api_2_json_schema 0.1.1 → 0.1.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: 3b7f9dc1848c8bc1810adba623e3a909937e781a8d916530f008791d9fafbb03
4
- data.tar.gz: 17847b2a3ae5114c7a331e811c59dc062d018aa8646b109c099fb35260d497db
3
+ metadata.gz: 8f25b393383b6694b23d0306c5a48f91762ba658afbd488c15fa16c40cbfa246
4
+ data.tar.gz: 5bc71e2ab8ff4019428686c39b17cc46f8ea5445d4d181af6fca65aa41b8cdd1
5
5
  SHA512:
6
- metadata.gz: 81d9359bc0f47a7ce8f7660af70bb44190b0c241f33b1031b1eeb04d51358dae4962f7259f83dbed511caa8a62bdac137db5050932b0d3f891d245d963d0b9b7
7
- data.tar.gz: 8019ae57689e5386956cd2222c1f4a457ba37e9dd03942095486fec12d60297bddcb8fb935db709ab32041e09530af2a3dbb790195565eed3e76db1720c62e66
6
+ metadata.gz: 3263c6c3f5372ff6e6cc93a812ce429ce1ab03d64b1d7eb5cfb23e9291f48b162accca973247dfca2fbc1da1b851089d5a4b21d663cfd0a300fe4fb368f69c1c
7
+ data.tar.gz: 828d603767e21eab7b4197d4e3c8217b0cd816464e1726916c9e42571b09c0bcfdff8e1e3622f0f07928f74b67f6d54c87c752ec890dc0902119343181518ce8
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [0.1.2] - 2022-10-19
2
+
3
+ - Support `discriminator`
4
+
1
5
  ## [0.1.1] - 2022-09-23
2
6
 
3
7
  - Support `$ref` and `allOf`
data/README.md CHANGED
@@ -34,6 +34,46 @@ schema = {
34
34
  OpenApi2JsonSchema.convert(schema)
35
35
  ```
36
36
 
37
+ ### Discriminator
38
+
39
+ ```yaml
40
+ # Sample YAML file
41
+ schema:
42
+ discriminator:
43
+ propertyName: key
44
+ mapping:
45
+ value1: 'path-to-file-2.yml'
46
+ value2: 'path-to-file-2.yml'
47
+ properties:
48
+ key:
49
+ type: string
50
+ enum:
51
+ - value1
52
+ - value2
53
+ ```
54
+
55
+ ```json
56
+ "schema": {
57
+ "properties": {
58
+ "key": {
59
+ "type": "string",
60
+ "enum": ["value1", "value2"]
61
+ }
62
+ },
63
+ "discriminator": {
64
+ "propertyName": "name",
65
+ "mapping": {
66
+ "value1": {
67
+ "type": "object"
68
+ },
69
+ "value2": {
70
+ "type": "array"
71
+ }
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
37
77
  ## Development
38
78
 
39
79
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -0,0 +1,18 @@
1
+ require_relative "../ref_schema_parser"
2
+
3
+ module OpenApi2JsonSchema
4
+ module AttributeHandlers
5
+ class Discriminator
6
+ def call(discriminator_schema)
7
+ raise "discriminator schema must be a Hash" unless discriminator_schema.is_a?(Hash)
8
+
9
+ mapping = discriminator_schema.fetch("mapping")
10
+ mapping.each do |key, file_path|
11
+ mapping[key] = OpenApi2JsonSchema::RefSchemaParser.new.call(file_path)
12
+ end
13
+
14
+ discriminator_schema
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenApi2JsonSchema
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
@@ -4,13 +4,14 @@ require 'json'
4
4
  require 'yaml'
5
5
  require_relative "open_api_2_json_schema/version"
6
6
  require_relative 'attribute_handlers/all_of'
7
+ require_relative 'attribute_handlers/discriminator'
7
8
 
8
9
  module OpenApi2JsonSchema
9
10
  module_function
10
11
 
11
- STRUCTS = ['allOf', 'anyOf', 'oneOf', 'not', 'items', 'additionalProperties', 'schema']
12
+ STRUCTS = ['allOf', 'anyOf', 'oneOf', 'not', 'items', 'additionalProperties', 'schema', 'discriminator']
12
13
  NOT_SUPPORTED = [
13
- 'nullable', 'discriminator', 'readOnly',
14
+ 'nullable', 'readOnly',
14
15
  'writeOnly', 'xml', 'externalDocs',
15
16
  'example', 'deprecated'
16
17
  ]
@@ -59,7 +60,11 @@ module OpenApi2JsonSchema
59
60
  end
60
61
  end
61
62
  when Hash
62
- json_schema[struct] = convert_schema(data)
63
+ if struct == 'discriminator'
64
+ json_schema[struct] = AttributeHandlers::Discriminator.new.call(data)
65
+ else
66
+ json_schema[struct] = convert_schema(data)
67
+ end
63
68
  else
64
69
  # ignore
65
70
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: open_api_2_json_schema
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
  - hieuk09
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-23 00:00:00.000000000 Z
11
+ date: 2022-10-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'Due to the OpenAPI v3.0 and JSON Schema discrepancy, you can use this
14
14
  JS library to convert OpenAPI Schema objects to proper JSON Schema. '
@@ -28,6 +28,7 @@ files:
28
28
  - bin/console
29
29
  - bin/setup
30
30
  - lib/attribute_handlers/all_of.rb
31
+ - lib/attribute_handlers/discriminator.rb
31
32
  - lib/open_api_2_json_schema.rb
32
33
  - lib/open_api_2_json_schema/version.rb
33
34
  - lib/ref_schema_parser.rb