jsapi 0.1.2 → 0.3.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/jsapi/controller/methods.rb +4 -3
  3. data/lib/jsapi/controller/parameters.rb +2 -5
  4. data/lib/jsapi/controller/response.rb +48 -24
  5. data/lib/jsapi/dsl/parameter.rb +0 -10
  6. data/lib/jsapi/dsl/request_body.rb +0 -10
  7. data/lib/jsapi/dsl/response.rb +0 -10
  8. data/lib/jsapi/dsl/schema.rb +1 -1
  9. data/lib/jsapi/json/array.rb +2 -3
  10. data/lib/jsapi/json/null.rb +2 -2
  11. data/lib/jsapi/json/object.rb +6 -9
  12. data/lib/jsapi/json/string.rb +25 -11
  13. data/lib/jsapi/json/value.rb +4 -4
  14. data/lib/jsapi/meta/example/model.rb +3 -4
  15. data/lib/jsapi/meta/openapi/contact.rb +3 -5
  16. data/lib/jsapi/meta/openapi/extensions.rb +31 -0
  17. data/lib/jsapi/meta/openapi/external_documentation.rb +3 -4
  18. data/lib/jsapi/meta/openapi/info.rb +4 -2
  19. data/lib/jsapi/meta/openapi/license.rb +3 -4
  20. data/lib/jsapi/meta/openapi/link/model.rb +4 -2
  21. data/lib/jsapi/meta/openapi/oauth_flow.rb +4 -2
  22. data/lib/jsapi/meta/openapi/root.rb +36 -31
  23. data/lib/jsapi/meta/openapi/security_scheme/api_key.rb +4 -2
  24. data/lib/jsapi/meta/openapi/security_scheme/http/basic.rb +17 -12
  25. data/lib/jsapi/meta/openapi/security_scheme/http/bearer.rb +4 -2
  26. data/lib/jsapi/meta/openapi/security_scheme/http/other.rb +4 -2
  27. data/lib/jsapi/meta/openapi/security_scheme/oauth2.rb +5 -5
  28. data/lib/jsapi/meta/openapi/security_scheme/open_id_connect.rb +4 -2
  29. data/lib/jsapi/meta/openapi/server.rb +4 -2
  30. data/lib/jsapi/meta/openapi/server_variable.rb +4 -2
  31. data/lib/jsapi/meta/openapi/tag.rb +4 -2
  32. data/lib/jsapi/meta/openapi.rb +1 -0
  33. data/lib/jsapi/meta/operation.rb +6 -3
  34. data/lib/jsapi/meta/parameter/model.rb +56 -48
  35. data/lib/jsapi/meta/property.rb +3 -1
  36. data/lib/jsapi/meta/request_body/model.rb +6 -3
  37. data/lib/jsapi/meta/response/model.rb +28 -22
  38. data/lib/jsapi/meta/schema/additional_properties.rb +29 -0
  39. data/lib/jsapi/meta/schema/array.rb +9 -1
  40. data/lib/jsapi/meta/schema/base.rb +34 -29
  41. data/lib/jsapi/meta/schema/object.rb +10 -2
  42. data/lib/jsapi/meta/schema/reference.rb +0 -3
  43. data/lib/jsapi/meta/schema/string.rb +2 -6
  44. data/lib/jsapi/meta/schema.rb +3 -4
  45. data/lib/jsapi/version.rb +3 -3
  46. metadata +4 -2
@@ -4,15 +4,21 @@ module Jsapi
4
4
  module Meta
5
5
  module Schema
6
6
  class Object < Base
7
+ ##
8
+ # :attr: additional_properties
9
+ # The AdditionalProperties.
10
+ attribute :additional_properties, AdditionalProperties
11
+
7
12
  ##
8
13
  # :attr: all_of_references
9
14
  attribute :all_of_references, [Reference], default: []
10
15
 
11
- alias :all_of= :all_of_references=
16
+ alias :all_of= :all_of_references= # :nodoc:
12
17
  alias :add_all_of :add_all_of_reference
13
18
 
14
19
  ##
15
20
  # :attr: discriminator
21
+ # The Discriminator.
16
22
  attribute :discriminator, Discriminator
17
23
 
18
24
  ##
@@ -47,6 +53,7 @@ module Jsapi
47
53
  super.merge(
48
54
  allOf: all_of_references.map(&:to_json_schema).presence,
49
55
  properties: properties.transform_values(&:to_json_schema),
56
+ additionalProperties: additional_properties&.to_json_schema,
50
57
  required: properties.values.select(&:required?).map(&:name)
51
58
  ).compact
52
59
  end
@@ -60,6 +67,7 @@ module Jsapi
60
67
  properties: properties.transform_values do |property|
61
68
  property.to_openapi(version)
62
69
  end,
70
+ additionalProperties: additional_properties&.to_openapi(version),
63
71
  required: properties.values.select(&:required?).map(&:name)
64
72
  ).compact
65
73
  end
@@ -72,7 +80,7 @@ module Jsapi
72
80
  {}.tap do |properties|
73
81
  all_of_references.each do |reference|
74
82
  schema = reference.resolve(definitions)
75
- raise "circular reference: #{reference.schema}" if schema.in?(path)
83
+ raise "circular reference: #{reference.ref}" if schema.in?(path)
76
84
 
77
85
  properties.merge!(schema.merge_properties(definitions, path + [self]))
78
86
  end
@@ -4,9 +4,6 @@ module Jsapi
4
4
  module Meta
5
5
  module Schema
6
6
  class Reference < BaseReference
7
- alias :schema :ref
8
- alias :schema= :ref=
9
-
10
7
  ##
11
8
  # :attr: existence
12
9
  # The level of Existence. The default level of existence is +ALLOW_OMITTED+.
@@ -8,12 +8,8 @@ module Jsapi
8
8
 
9
9
  ##
10
10
  # :attr: format
11
- # The format of a string. Possible values are:
12
- #
13
- # - <code>"date"</code>
14
- # - <code>"date-time"</code>
15
- #
16
- attribute :format, ::String, values: %w[date date-time]
11
+ # The format of a string.
12
+ attribute :format, ::String
17
13
 
18
14
  ##
19
15
  # :attr: max_length
@@ -4,13 +4,14 @@ require_relative 'schema/conversion'
4
4
  require_relative 'schema/boundary'
5
5
  require_relative 'schema/delegator'
6
6
  require_relative 'schema/reference'
7
- require_relative 'schema/discriminator'
8
7
  require_relative 'schema/base'
9
8
  require_relative 'schema/boolean'
10
9
  require_relative 'schema/array'
11
10
  require_relative 'schema/numeric'
12
11
  require_relative 'schema/integer'
13
12
  require_relative 'schema/number'
13
+ require_relative 'schema/additional_properties'
14
+ require_relative 'schema/discriminator'
14
15
  require_relative 'schema/object'
15
16
  require_relative 'schema/string'
16
17
  require_relative 'schema/validation'
@@ -33,9 +34,7 @@ module Jsapi
33
34
  #
34
35
  # Raises an InvalidArgumentError if the given type is invalid.
35
36
  def new(keywords = {})
36
- if keywords.key?(:ref) || keywords.key?(:schema)
37
- return Reference.new(keywords)
38
- end
37
+ return Reference.new(keywords) if keywords.key?(:ref)
39
38
 
40
39
  type = keywords[:type]
41
40
  case type&.to_s
data/lib/jsapi/version.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Jsapi
4
- # Holds the current GEM version
5
4
  module Version
6
- VERSION = '0.1.2'
7
-
8
5
  # NOTE: See https://bundler.io/guides/creating_gem.html
6
+
7
+ # The current GEM version.
8
+ VERSION = '0.3.0'
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Göller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-28 00:00:00.000000000 Z
11
+ date: 2024-07-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Jsapi can be used to read requests, produce responses and create OpenAPI
14
14
  documents
@@ -66,6 +66,7 @@ files:
66
66
  - lib/jsapi/meta/openapi/callback/model.rb
67
67
  - lib/jsapi/meta/openapi/callback/reference.rb
68
68
  - lib/jsapi/meta/openapi/contact.rb
69
+ - lib/jsapi/meta/openapi/extensions.rb
69
70
  - lib/jsapi/meta/openapi/external_documentation.rb
70
71
  - lib/jsapi/meta/openapi/info.rb
71
72
  - lib/jsapi/meta/openapi/license.rb
@@ -102,6 +103,7 @@ files:
102
103
  - lib/jsapi/meta/response/model.rb
103
104
  - lib/jsapi/meta/response/reference.rb
104
105
  - lib/jsapi/meta/schema.rb
106
+ - lib/jsapi/meta/schema/additional_properties.rb
105
107
  - lib/jsapi/meta/schema/array.rb
106
108
  - lib/jsapi/meta/schema/base.rb
107
109
  - lib/jsapi/meta/schema/boolean.rb