apia-open_api 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -8
- data/lib/apia/open_api/objects/response.rb +21 -6
- data/lib/apia/open_api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f046cce05d4154ba36e9f52227306129ef092e75061db7a522b44ade60b252c0
|
4
|
+
data.tar.gz: 2c56c6cedf8281819ca4c6382159183cdcc0c550d27375410f7f39cfe4bb842a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c60e070b4a683379b689fff7c95ba8a7aa6ea9f2902e13b68474190b2aac234feec2428c73871591b467af2ba17be21c2dcb6d8b2297014a88e1ec783311472
|
7
|
+
data.tar.gz: afce3695675df681249591575c3704161caa3dd66b91a67e89bc67e58b07d45d8d6445e0080f7264c2a0fb234f1a03f87eec97aeeba22e39bf873f991b38452b
|
data/README.md
CHANGED
@@ -2,17 +2,13 @@
|
|
2
2
|
|
3
3
|
This gem can generate an [OpenAPI](https://www.openapis.org/) compatible schema from an API implemented using [Apia](https://github.com/krystal/apia).
|
4
4
|
|
5
|
-
|
5
|
+
This gem is in the early phases of development and breaking changes may be introduced whilst the gem is in the 0.1.x version range.
|
6
6
|
|
7
|
-
|
7
|
+
## Installation
|
8
8
|
|
9
9
|
Install the gem and add to the application's Gemfile by executing:
|
10
10
|
|
11
|
-
$ bundle add
|
12
|
-
|
13
|
-
If bundler is not being used to manage dependencies, install the gem by executing:
|
14
|
-
|
15
|
-
$ gem install UPDATE_WITH_YOUR_GEM_NAME_PRIOR_TO_RELEASE_TO_RUBYGEMS_ORG
|
11
|
+
$ bundle add apia-open_api
|
16
12
|
|
17
13
|
## Usage
|
18
14
|
|
@@ -85,7 +81,7 @@ You can also run `bin/console` for an interactive prompt that will allow you to
|
|
85
81
|
|
86
82
|
## Releasing a new version
|
87
83
|
|
88
|
-
|
84
|
+
[Release Please](https://github.com/googleapis/release-please) is configured. The [convential commits](https://www.conventionalcommits.org/en/v1.0.0/) format should be used and upon merging to main, Release Please will open a new PR following semver rules. When that Release Please PR is merged, a new version will be published to RubyGems.
|
89
85
|
|
90
86
|
## Contributing
|
91
87
|
|
@@ -283,16 +283,31 @@ module Apia
|
|
283
283
|
component_schema
|
284
284
|
end
|
285
285
|
|
286
|
+
# We want to declare the code in the error response as an enum, with only
|
287
|
+
# one possible value, as this makes it explicit to the client what the
|
288
|
+
# value will be.
|
289
|
+
#
|
290
|
+
# However, the code field is not defined as an Enum scalar within Apia,
|
291
|
+
# so we generate an Enum definition "on the fly" here.
|
292
|
+
#
|
293
|
+
# This means we can add a schema for the enum and a related $ref, which
|
294
|
+
# helps prompt client generators to generate an explicit enum type for the code.
|
295
|
+
# Otherwise if we generate the enum 'inline' in the response, some client generators
|
296
|
+
# will not generate an enum type for the code.
|
286
297
|
def generate_schema_properties_for_definition(definition)
|
287
|
-
|
298
|
+
id = generate_id_from_definition(definition)
|
299
|
+
detail_ref = generate_schema_ref(definition, id: id)
|
300
|
+
|
301
|
+
code_enum_id = "#{id}Enum"
|
302
|
+
code_enum_field_definition = Definitions::Field.new(:enum, id: code_enum_id)
|
303
|
+
code_enum_field_definition.type = Class.new(Apia::Enum) { value(definition.code) }
|
304
|
+
code_ref = generate_schema_ref(code_enum_field_definition, id: code_enum_id)
|
305
|
+
|
288
306
|
{
|
289
307
|
properties: {
|
290
|
-
code:
|
291
|
-
type: "string",
|
292
|
-
enum: [definition.code]
|
293
|
-
},
|
308
|
+
code: code_ref,
|
294
309
|
description: { type: "string" },
|
295
|
-
detail:
|
310
|
+
detail: detail_ref
|
296
311
|
}
|
297
312
|
}
|
298
313
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apia-open_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Sturgess
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|