apiwork 0.0.0.pre → 0.1.1
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/LICENSE.txt +2 -2
- data/README.md +117 -1
- data/Rakefile +5 -3
- data/app/controllers/apiwork/errors_controller.rb +13 -0
- data/app/controllers/apiwork/exports_controller.rb +22 -0
- data/lib/apiwork/abstractable.rb +26 -0
- data/lib/apiwork/adapter/base.rb +369 -0
- data/lib/apiwork/adapter/builder/api/base.rb +66 -0
- data/lib/apiwork/adapter/builder/contract/base.rb +86 -0
- data/lib/apiwork/adapter/capability/api/base.rb +51 -0
- data/lib/apiwork/adapter/capability/api/scope.rb +64 -0
- data/lib/apiwork/adapter/capability/base.rb +291 -0
- data/lib/apiwork/adapter/capability/contract/base.rb +37 -0
- data/lib/apiwork/adapter/capability/contract/scope.rb +110 -0
- data/lib/apiwork/adapter/capability/operation/base.rb +172 -0
- data/lib/apiwork/adapter/capability/operation/metadata_shape.rb +165 -0
- data/lib/apiwork/adapter/capability/result.rb +21 -0
- data/lib/apiwork/adapter/capability/runner.rb +56 -0
- data/lib/apiwork/adapter/capability/transformer/request/base.rb +72 -0
- data/lib/apiwork/adapter/capability/transformer/response/base.rb +45 -0
- data/lib/apiwork/adapter/registry.rb +16 -0
- data/lib/apiwork/adapter/serializer/error/base.rb +72 -0
- data/lib/apiwork/adapter/serializer/error/default/api_builder.rb +32 -0
- data/lib/apiwork/adapter/serializer/error/default.rb +37 -0
- data/lib/apiwork/adapter/serializer/resource/base.rb +84 -0
- data/lib/apiwork/adapter/serializer/resource/default/contract_builder.rb +209 -0
- data/lib/apiwork/adapter/serializer/resource/default.rb +39 -0
- data/lib/apiwork/adapter/standard/capability/filtering/api_builder.rb +75 -0
- data/lib/apiwork/adapter/standard/capability/filtering/constants.rb +37 -0
- data/lib/apiwork/adapter/standard/capability/filtering/contract_builder.rb +193 -0
- data/lib/apiwork/adapter/standard/capability/filtering/operation/filter/builder.rb +47 -0
- data/lib/apiwork/adapter/standard/capability/filtering/operation/filter/operator_builder.rb +36 -0
- data/lib/apiwork/adapter/standard/capability/filtering/operation/filter.rb +462 -0
- data/lib/apiwork/adapter/standard/capability/filtering/operation.rb +22 -0
- data/lib/apiwork/adapter/standard/capability/filtering/request_transformer.rb +47 -0
- data/lib/apiwork/adapter/standard/capability/filtering.rb +18 -0
- data/lib/apiwork/adapter/standard/capability/including/contract_builder.rb +169 -0
- data/lib/apiwork/adapter/standard/capability/including/operation.rb +20 -0
- data/lib/apiwork/adapter/standard/capability/including.rb +16 -0
- data/lib/apiwork/adapter/standard/capability/pagination/api_builder.rb +34 -0
- data/lib/apiwork/adapter/standard/capability/pagination/contract_builder.rb +35 -0
- data/lib/apiwork/adapter/standard/capability/pagination/operation/paginate/cursor.rb +84 -0
- data/lib/apiwork/adapter/standard/capability/pagination/operation/paginate/offset.rb +66 -0
- data/lib/apiwork/adapter/standard/capability/pagination/operation/paginate.rb +24 -0
- data/lib/apiwork/adapter/standard/capability/pagination/operation.rb +24 -0
- data/lib/apiwork/adapter/standard/capability/pagination.rb +21 -0
- data/lib/apiwork/adapter/standard/capability/sorting/api_builder.rb +19 -0
- data/lib/apiwork/adapter/standard/capability/sorting/contract_builder.rb +84 -0
- data/lib/apiwork/adapter/standard/capability/sorting/operation/sort.rb +83 -0
- data/lib/apiwork/adapter/standard/capability/sorting/operation.rb +22 -0
- data/lib/apiwork/adapter/standard/capability/sorting.rb +17 -0
- data/lib/apiwork/adapter/standard/capability/writing/constants.rb +15 -0
- data/lib/apiwork/adapter/standard/capability/writing/contract_builder.rb +253 -0
- data/lib/apiwork/adapter/standard/capability/writing/operation/issue_mapper.rb +210 -0
- data/lib/apiwork/adapter/standard/capability/writing/operation.rb +32 -0
- data/lib/apiwork/adapter/standard/capability/writing/request_transformer.rb +37 -0
- data/lib/apiwork/adapter/standard/capability/writing.rb +17 -0
- data/lib/apiwork/adapter/standard/includes_resolver.rb +106 -0
- data/lib/apiwork/adapter/standard.rb +22 -0
- data/lib/apiwork/adapter/wrapper/base.rb +70 -0
- data/lib/apiwork/adapter/wrapper/collection/base.rb +60 -0
- data/lib/apiwork/adapter/wrapper/collection/default.rb +47 -0
- data/lib/apiwork/adapter/wrapper/error/base.rb +30 -0
- data/lib/apiwork/adapter/wrapper/error/default.rb +34 -0
- data/lib/apiwork/adapter/wrapper/member/base.rb +58 -0
- data/lib/apiwork/adapter/wrapper/member/default.rb +40 -0
- data/lib/apiwork/adapter/wrapper/shape.rb +203 -0
- data/lib/apiwork/adapter.rb +50 -0
- data/lib/apiwork/api/base.rb +802 -0
- data/lib/apiwork/api/element.rb +110 -0
- data/lib/apiwork/api/enum_registry/definition.rb +51 -0
- data/lib/apiwork/api/enum_registry.rb +98 -0
- data/lib/apiwork/api/info/contact.rb +67 -0
- data/lib/apiwork/api/info/license.rb +50 -0
- data/lib/apiwork/api/info/server.rb +50 -0
- data/lib/apiwork/api/info.rb +221 -0
- data/lib/apiwork/api/object.rb +235 -0
- data/lib/apiwork/api/registry.rb +33 -0
- data/lib/apiwork/api/representation_registry.rb +76 -0
- data/lib/apiwork/api/resource/action.rb +41 -0
- data/lib/apiwork/api/resource.rb +648 -0
- data/lib/apiwork/api/router.rb +104 -0
- data/lib/apiwork/api/type_registry/definition.rb +117 -0
- data/lib/apiwork/api/type_registry.rb +99 -0
- data/lib/apiwork/api/union.rb +49 -0
- data/lib/apiwork/api.rb +85 -0
- data/lib/apiwork/configurable.rb +71 -0
- data/lib/apiwork/configuration/option.rb +125 -0
- data/lib/apiwork/configuration/validatable.rb +25 -0
- data/lib/apiwork/configuration.rb +95 -0
- data/lib/apiwork/configuration_error.rb +6 -0
- data/lib/apiwork/constraint_error.rb +20 -0
- data/lib/apiwork/contract/action/request.rb +79 -0
- data/lib/apiwork/contract/action/response.rb +87 -0
- data/lib/apiwork/contract/action.rb +258 -0
- data/lib/apiwork/contract/base.rb +714 -0
- data/lib/apiwork/contract/element.rb +130 -0
- data/lib/apiwork/contract/object/coercer.rb +194 -0
- data/lib/apiwork/contract/object/deserializer.rb +101 -0
- data/lib/apiwork/contract/object/transformer.rb +95 -0
- data/lib/apiwork/contract/object/validator/result.rb +27 -0
- data/lib/apiwork/contract/object/validator.rb +734 -0
- data/lib/apiwork/contract/object.rb +566 -0
- data/lib/apiwork/contract/request_parser/result.rb +25 -0
- data/lib/apiwork/contract/request_parser.rb +72 -0
- data/lib/apiwork/contract/response_parser/result.rb +25 -0
- data/lib/apiwork/contract/response_parser.rb +35 -0
- data/lib/apiwork/contract/union.rb +56 -0
- data/lib/apiwork/contract_error.rb +9 -0
- data/lib/apiwork/controller.rb +300 -0
- data/lib/apiwork/domain_error.rb +13 -0
- data/lib/apiwork/element.rb +386 -0
- data/lib/apiwork/engine.rb +20 -0
- data/lib/apiwork/error.rb +6 -0
- data/lib/apiwork/error_code/definition.rb +63 -0
- data/lib/apiwork/error_code/registry.rb +18 -0
- data/lib/apiwork/error_code.rb +132 -0
- data/lib/apiwork/export/base.rb +291 -0
- data/lib/apiwork/export/open_api.rb +600 -0
- data/lib/apiwork/export/pipeline/writer.rb +66 -0
- data/lib/apiwork/export/pipeline.rb +84 -0
- data/lib/apiwork/export/registry.rb +16 -0
- data/lib/apiwork/export/surface_resolver.rb +189 -0
- data/lib/apiwork/export/type_analysis.rb +170 -0
- data/lib/apiwork/export/type_script.rb +23 -0
- data/lib/apiwork/export/type_script_mapper.rb +349 -0
- data/lib/apiwork/export/zod.rb +39 -0
- data/lib/apiwork/export/zod_mapper.rb +421 -0
- data/lib/apiwork/export.rb +80 -0
- data/lib/apiwork/http_error.rb +16 -0
- data/lib/apiwork/introspection/action/request.rb +66 -0
- data/lib/apiwork/introspection/action/response.rb +57 -0
- data/lib/apiwork/introspection/action.rb +124 -0
- data/lib/apiwork/introspection/api/info/contact.rb +59 -0
- data/lib/apiwork/introspection/api/info/license.rb +49 -0
- data/lib/apiwork/introspection/api/info/server.rb +50 -0
- data/lib/apiwork/introspection/api/info.rb +107 -0
- data/lib/apiwork/introspection/api/resource.rb +83 -0
- data/lib/apiwork/introspection/api.rb +92 -0
- data/lib/apiwork/introspection/contract.rb +63 -0
- data/lib/apiwork/introspection/dump/action.rb +101 -0
- data/lib/apiwork/introspection/dump/api.rb +119 -0
- data/lib/apiwork/introspection/dump/contract.rb +129 -0
- data/lib/apiwork/introspection/dump/param.rb +486 -0
- data/lib/apiwork/introspection/dump/resource.rb +112 -0
- data/lib/apiwork/introspection/dump/type.rb +339 -0
- data/lib/apiwork/introspection/dump.rb +17 -0
- data/lib/apiwork/introspection/enum.rb +63 -0
- data/lib/apiwork/introspection/error_code.rb +44 -0
- data/lib/apiwork/introspection/param/array.rb +88 -0
- data/lib/apiwork/introspection/param/base.rb +285 -0
- data/lib/apiwork/introspection/param/binary.rb +73 -0
- data/lib/apiwork/introspection/param/boolean.rb +73 -0
- data/lib/apiwork/introspection/param/date.rb +73 -0
- data/lib/apiwork/introspection/param/date_time.rb +73 -0
- data/lib/apiwork/introspection/param/decimal.rb +121 -0
- data/lib/apiwork/introspection/param/integer.rb +131 -0
- data/lib/apiwork/introspection/param/literal.rb +45 -0
- data/lib/apiwork/introspection/param/number.rb +121 -0
- data/lib/apiwork/introspection/param/object.rb +59 -0
- data/lib/apiwork/introspection/param/reference.rb +45 -0
- data/lib/apiwork/introspection/param/string.rb +122 -0
- data/lib/apiwork/introspection/param/time.rb +73 -0
- data/lib/apiwork/introspection/param/union.rb +57 -0
- data/lib/apiwork/introspection/param/unknown.rb +26 -0
- data/lib/apiwork/introspection/param/uuid.rb +73 -0
- data/lib/apiwork/introspection/param.rb +31 -0
- data/lib/apiwork/introspection/type.rb +129 -0
- data/lib/apiwork/introspection.rb +28 -0
- data/lib/apiwork/issue.rb +80 -0
- data/lib/apiwork/json_pointer.rb +21 -0
- data/lib/apiwork/object.rb +1618 -0
- data/lib/apiwork/reference_generator.rb +622 -0
- data/lib/apiwork/registry.rb +56 -0
- data/lib/apiwork/representation/association.rb +391 -0
- data/lib/apiwork/representation/attribute.rb +335 -0
- data/lib/apiwork/representation/base.rb +819 -0
- data/lib/apiwork/representation/deserializer.rb +95 -0
- data/lib/apiwork/representation/element.rb +128 -0
- data/lib/apiwork/representation/inheritance.rb +78 -0
- data/lib/apiwork/representation/model_detector.rb +75 -0
- data/lib/apiwork/representation/root_key.rb +35 -0
- data/lib/apiwork/representation/serializer.rb +127 -0
- data/lib/apiwork/request.rb +79 -0
- data/lib/apiwork/response.rb +56 -0
- data/lib/apiwork/union.rb +102 -0
- data/lib/apiwork/version.rb +2 -2
- data/lib/apiwork.rb +61 -3
- data/lib/generators/apiwork/api_generator.rb +38 -0
- data/lib/generators/apiwork/contract_generator.rb +25 -0
- data/lib/generators/apiwork/install_generator.rb +27 -0
- data/lib/generators/apiwork/representation_generator.rb +25 -0
- data/lib/generators/apiwork/templates/api/api.rb.tt +4 -0
- data/lib/generators/apiwork/templates/contract/contract.rb.tt +6 -0
- data/lib/generators/apiwork/templates/install/application_contract.rb.tt +5 -0
- data/lib/generators/apiwork/templates/install/application_representation.rb.tt +5 -0
- data/lib/generators/apiwork/templates/representation/representation.rb.tt +6 -0
- data/lib/tasks/apiwork.rake +102 -0
- metadata +319 -19
- data/.rubocop.yml +0 -8
- data/sig/apiwork.rbs +0 -4
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apiwork
|
|
4
|
+
module Introspection
|
|
5
|
+
module Param
|
|
6
|
+
class Base
|
|
7
|
+
def initialize(dump)
|
|
8
|
+
@dump = dump
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# @api public
|
|
12
|
+
# The type for this param.
|
|
13
|
+
#
|
|
14
|
+
# @return [Symbol]
|
|
15
|
+
def type
|
|
16
|
+
@dump[:type]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @api public
|
|
20
|
+
# Whether this param is nullable.
|
|
21
|
+
#
|
|
22
|
+
# @return [Boolean]
|
|
23
|
+
def nullable?
|
|
24
|
+
@dump[:nullable]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @api public
|
|
28
|
+
# Whether this param is optional.
|
|
29
|
+
#
|
|
30
|
+
# @return [Boolean]
|
|
31
|
+
def optional?
|
|
32
|
+
@dump[:optional]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# @api public
|
|
36
|
+
# Whether this param is deprecated.
|
|
37
|
+
#
|
|
38
|
+
# @return [Boolean]
|
|
39
|
+
def deprecated?
|
|
40
|
+
@dump[:deprecated]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @api public
|
|
44
|
+
# The description for this param.
|
|
45
|
+
#
|
|
46
|
+
# @return [String, nil]
|
|
47
|
+
def description
|
|
48
|
+
@dump[:description]
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# @api public
|
|
52
|
+
# The example for this param.
|
|
53
|
+
#
|
|
54
|
+
# @return [Object, nil]
|
|
55
|
+
def example
|
|
56
|
+
@dump[:example]
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# @api public
|
|
60
|
+
# The default for this param.
|
|
61
|
+
#
|
|
62
|
+
# @return [Object, nil]
|
|
63
|
+
def default
|
|
64
|
+
@dump[:default]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# @api public
|
|
68
|
+
# Whether this param has a default.
|
|
69
|
+
#
|
|
70
|
+
# @return [Boolean]
|
|
71
|
+
def default?
|
|
72
|
+
@dump.key?(:default)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# @api public
|
|
76
|
+
# The tag for this param.
|
|
77
|
+
#
|
|
78
|
+
# @return [String, nil]
|
|
79
|
+
def tag
|
|
80
|
+
@dump[:tag]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# @api public
|
|
84
|
+
# Whether this param is scalar.
|
|
85
|
+
#
|
|
86
|
+
# @return [Boolean]
|
|
87
|
+
def scalar?
|
|
88
|
+
false
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# @api public
|
|
92
|
+
# Whether this param is an array.
|
|
93
|
+
#
|
|
94
|
+
# @return [Boolean]
|
|
95
|
+
def array?
|
|
96
|
+
false
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# @api public
|
|
100
|
+
# Whether this param is an object.
|
|
101
|
+
#
|
|
102
|
+
# @return [Boolean]
|
|
103
|
+
def object?
|
|
104
|
+
false
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# @api public
|
|
108
|
+
# Whether this param is a union.
|
|
109
|
+
#
|
|
110
|
+
# @return [Boolean]
|
|
111
|
+
def union?
|
|
112
|
+
false
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# @api public
|
|
116
|
+
# Whether this param is a literal.
|
|
117
|
+
#
|
|
118
|
+
# @return [Boolean]
|
|
119
|
+
def literal?
|
|
120
|
+
false
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# @api public
|
|
124
|
+
# Whether this param is numeric.
|
|
125
|
+
#
|
|
126
|
+
# @return [Boolean]
|
|
127
|
+
def numeric?
|
|
128
|
+
false
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# @api public
|
|
132
|
+
# Whether this param is boundable.
|
|
133
|
+
#
|
|
134
|
+
# @return [Boolean]
|
|
135
|
+
def boundable?
|
|
136
|
+
false
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
# @api public
|
|
140
|
+
# Whether this param is a string.
|
|
141
|
+
#
|
|
142
|
+
# @return [Boolean]
|
|
143
|
+
def string?
|
|
144
|
+
false
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# @api public
|
|
148
|
+
# Whether this param is an integer.
|
|
149
|
+
#
|
|
150
|
+
# @return [Boolean]
|
|
151
|
+
def integer?
|
|
152
|
+
false
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# @api public
|
|
156
|
+
# Whether this param is a number.
|
|
157
|
+
#
|
|
158
|
+
# @return [Boolean]
|
|
159
|
+
def number?
|
|
160
|
+
false
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# @api public
|
|
164
|
+
# Whether this param is a decimal.
|
|
165
|
+
#
|
|
166
|
+
# @return [Boolean]
|
|
167
|
+
def decimal?
|
|
168
|
+
false
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# @api public
|
|
172
|
+
# Whether this param is a boolean.
|
|
173
|
+
#
|
|
174
|
+
# @return [Boolean]
|
|
175
|
+
def boolean?
|
|
176
|
+
false
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
# @api public
|
|
180
|
+
# Whether this param is a datetime.
|
|
181
|
+
#
|
|
182
|
+
# @return [Boolean]
|
|
183
|
+
def datetime?
|
|
184
|
+
false
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# @api public
|
|
188
|
+
# Whether this param is a date.
|
|
189
|
+
#
|
|
190
|
+
# @return [Boolean]
|
|
191
|
+
def date?
|
|
192
|
+
false
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# @api public
|
|
196
|
+
# Whether this param is a time.
|
|
197
|
+
#
|
|
198
|
+
# @return [Boolean]
|
|
199
|
+
def time?
|
|
200
|
+
false
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
# @api public
|
|
204
|
+
# Whether this param is a UUID.
|
|
205
|
+
#
|
|
206
|
+
# @return [Boolean]
|
|
207
|
+
def uuid?
|
|
208
|
+
false
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
# @api public
|
|
212
|
+
# Whether this param is binary data.
|
|
213
|
+
#
|
|
214
|
+
# @return [Boolean]
|
|
215
|
+
def binary?
|
|
216
|
+
false
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# @api public
|
|
220
|
+
# Whether this param is of unknown type.
|
|
221
|
+
#
|
|
222
|
+
# @return [Boolean]
|
|
223
|
+
def unknown?
|
|
224
|
+
false
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
# @api public
|
|
228
|
+
# Whether this param is a reference.
|
|
229
|
+
#
|
|
230
|
+
# @return [Boolean]
|
|
231
|
+
def reference?
|
|
232
|
+
false
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
# @api public
|
|
236
|
+
# Whether this param has an enum.
|
|
237
|
+
#
|
|
238
|
+
# @return [Boolean]
|
|
239
|
+
def enum?
|
|
240
|
+
false
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
# @api public
|
|
244
|
+
# Whether this param is an enum reference.
|
|
245
|
+
#
|
|
246
|
+
# @return [Boolean]
|
|
247
|
+
def enum_reference?
|
|
248
|
+
false
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
# @api public
|
|
252
|
+
# Whether this param is formattable.
|
|
253
|
+
#
|
|
254
|
+
# @return [Boolean]
|
|
255
|
+
def formattable?
|
|
256
|
+
false
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
# @api public
|
|
260
|
+
# Whether this param is partial.
|
|
261
|
+
#
|
|
262
|
+
# @return [Boolean]
|
|
263
|
+
def partial?
|
|
264
|
+
false
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
# @api public
|
|
268
|
+
# Converts this param to a hash.
|
|
269
|
+
#
|
|
270
|
+
# @return [Hash]
|
|
271
|
+
def to_h
|
|
272
|
+
{
|
|
273
|
+
default: default,
|
|
274
|
+
deprecated: deprecated?,
|
|
275
|
+
description: description,
|
|
276
|
+
example: example,
|
|
277
|
+
nullable: nullable?,
|
|
278
|
+
optional: optional?,
|
|
279
|
+
type: type,
|
|
280
|
+
}
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
end
|
|
285
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apiwork
|
|
4
|
+
module Introspection
|
|
5
|
+
module Param
|
|
6
|
+
# @api public
|
|
7
|
+
# Binary param representing base64-encoded binary data.
|
|
8
|
+
#
|
|
9
|
+
# @example Basic usage
|
|
10
|
+
# param.type # => :binary
|
|
11
|
+
# param.scalar? # => true
|
|
12
|
+
# param.binary? # => true
|
|
13
|
+
#
|
|
14
|
+
# @example Capabilities
|
|
15
|
+
# param.formattable? # => false
|
|
16
|
+
#
|
|
17
|
+
# @example Enum
|
|
18
|
+
# if param.enum?
|
|
19
|
+
# param.enum # => ["SGVsbG8=", "V29ybGQ="]
|
|
20
|
+
# param.enum_reference? # => false
|
|
21
|
+
# end
|
|
22
|
+
class Binary < Base
|
|
23
|
+
# @api public
|
|
24
|
+
# Whether this param is scalar.
|
|
25
|
+
#
|
|
26
|
+
# @return [Boolean]
|
|
27
|
+
def scalar?
|
|
28
|
+
true
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @api public
|
|
32
|
+
# Whether this param has an enum.
|
|
33
|
+
#
|
|
34
|
+
# @return [Boolean]
|
|
35
|
+
def enum?
|
|
36
|
+
@dump[:enum].present?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @api public
|
|
40
|
+
# The enum for this param.
|
|
41
|
+
#
|
|
42
|
+
# @return [Array<String>, Symbol, nil]
|
|
43
|
+
def enum
|
|
44
|
+
@dump[:enum]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @api public
|
|
48
|
+
# Whether this param is an enum reference.
|
|
49
|
+
#
|
|
50
|
+
# @return [Boolean]
|
|
51
|
+
def enum_reference?
|
|
52
|
+
@dump[:enum].is_a?(Symbol)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# @api public
|
|
56
|
+
# Whether this param is binary data.
|
|
57
|
+
#
|
|
58
|
+
# @return [Boolean]
|
|
59
|
+
def binary?
|
|
60
|
+
true
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# @api public
|
|
64
|
+
# Whether this param is formattable.
|
|
65
|
+
#
|
|
66
|
+
# @return [Boolean]
|
|
67
|
+
def formattable?
|
|
68
|
+
false
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apiwork
|
|
4
|
+
module Introspection
|
|
5
|
+
module Param
|
|
6
|
+
# @api public
|
|
7
|
+
# Boolean param representing true/false values.
|
|
8
|
+
#
|
|
9
|
+
# @example Basic usage
|
|
10
|
+
# param.type # => :boolean
|
|
11
|
+
# param.scalar? # => true
|
|
12
|
+
# param.boolean? # => true
|
|
13
|
+
#
|
|
14
|
+
# @example Capabilities
|
|
15
|
+
# param.formattable? # => false
|
|
16
|
+
#
|
|
17
|
+
# @example Enum
|
|
18
|
+
# if param.enum?
|
|
19
|
+
# param.enum # => [true]
|
|
20
|
+
# param.enum_reference? # => false
|
|
21
|
+
# end
|
|
22
|
+
class Boolean < Base
|
|
23
|
+
# @api public
|
|
24
|
+
# Whether this param is scalar.
|
|
25
|
+
#
|
|
26
|
+
# @return [Boolean]
|
|
27
|
+
def scalar?
|
|
28
|
+
true
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @api public
|
|
32
|
+
# Whether this param has an enum.
|
|
33
|
+
#
|
|
34
|
+
# @return [Boolean]
|
|
35
|
+
def enum?
|
|
36
|
+
@dump[:enum].present?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @api public
|
|
40
|
+
# The enum for this param.
|
|
41
|
+
#
|
|
42
|
+
# @return [Array<Boolean>, Symbol, nil]
|
|
43
|
+
def enum
|
|
44
|
+
@dump[:enum]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @api public
|
|
48
|
+
# Whether this param is an enum reference.
|
|
49
|
+
#
|
|
50
|
+
# @return [Boolean]
|
|
51
|
+
def enum_reference?
|
|
52
|
+
@dump[:enum].is_a?(Symbol)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# @api public
|
|
56
|
+
# Whether this param is a boolean.
|
|
57
|
+
#
|
|
58
|
+
# @return [Boolean]
|
|
59
|
+
def boolean?
|
|
60
|
+
true
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# @api public
|
|
64
|
+
# Whether this param is formattable.
|
|
65
|
+
#
|
|
66
|
+
# @return [Boolean]
|
|
67
|
+
def formattable?
|
|
68
|
+
false
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apiwork
|
|
4
|
+
module Introspection
|
|
5
|
+
module Param
|
|
6
|
+
# @api public
|
|
7
|
+
# Date param representing date values (year, month, day).
|
|
8
|
+
#
|
|
9
|
+
# @example Basic usage
|
|
10
|
+
# param.type # => :date
|
|
11
|
+
# param.scalar? # => true
|
|
12
|
+
# param.date? # => true
|
|
13
|
+
#
|
|
14
|
+
# @example Capabilities
|
|
15
|
+
# param.formattable? # => false
|
|
16
|
+
#
|
|
17
|
+
# @example Enum
|
|
18
|
+
# if param.enum?
|
|
19
|
+
# param.enum # => ["2024-01-01", "2024-12-31"]
|
|
20
|
+
# param.enum_reference? # => false
|
|
21
|
+
# end
|
|
22
|
+
class Date < Base
|
|
23
|
+
# @api public
|
|
24
|
+
# Whether this param is scalar.
|
|
25
|
+
#
|
|
26
|
+
# @return [Boolean]
|
|
27
|
+
def scalar?
|
|
28
|
+
true
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @api public
|
|
32
|
+
# Whether this param has an enum.
|
|
33
|
+
#
|
|
34
|
+
# @return [Boolean]
|
|
35
|
+
def enum?
|
|
36
|
+
@dump[:enum].present?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @api public
|
|
40
|
+
# The enum for this param.
|
|
41
|
+
#
|
|
42
|
+
# @return [Array<String>, Symbol, nil]
|
|
43
|
+
def enum
|
|
44
|
+
@dump[:enum]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @api public
|
|
48
|
+
# Whether this param is an enum reference.
|
|
49
|
+
#
|
|
50
|
+
# @return [Boolean]
|
|
51
|
+
def enum_reference?
|
|
52
|
+
@dump[:enum].is_a?(Symbol)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# @api public
|
|
56
|
+
# Whether this param is a date.
|
|
57
|
+
#
|
|
58
|
+
# @return [Boolean]
|
|
59
|
+
def date?
|
|
60
|
+
true
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# @api public
|
|
64
|
+
# Whether this param is formattable.
|
|
65
|
+
#
|
|
66
|
+
# @return [Boolean]
|
|
67
|
+
def formattable?
|
|
68
|
+
false
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apiwork
|
|
4
|
+
module Introspection
|
|
5
|
+
module Param
|
|
6
|
+
# @api public
|
|
7
|
+
# DateTime param representing date and time values with timezone.
|
|
8
|
+
#
|
|
9
|
+
# @example Basic usage
|
|
10
|
+
# param.type # => :datetime
|
|
11
|
+
# param.scalar? # => true
|
|
12
|
+
# param.datetime? # => true
|
|
13
|
+
#
|
|
14
|
+
# @example Capabilities
|
|
15
|
+
# param.formattable? # => false
|
|
16
|
+
#
|
|
17
|
+
# @example Enum
|
|
18
|
+
# if param.enum?
|
|
19
|
+
# param.enum # => ["2024-01-01T00:00:00Z"]
|
|
20
|
+
# param.enum_reference? # => false
|
|
21
|
+
# end
|
|
22
|
+
class DateTime < Base
|
|
23
|
+
# @api public
|
|
24
|
+
# Whether this param is scalar.
|
|
25
|
+
#
|
|
26
|
+
# @return [Boolean]
|
|
27
|
+
def scalar?
|
|
28
|
+
true
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @api public
|
|
32
|
+
# Whether this param has an enum.
|
|
33
|
+
#
|
|
34
|
+
# @return [Boolean]
|
|
35
|
+
def enum?
|
|
36
|
+
@dump[:enum].present?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @api public
|
|
40
|
+
# The enum for this param.
|
|
41
|
+
#
|
|
42
|
+
# @return [Array<String>, Symbol, nil]
|
|
43
|
+
def enum
|
|
44
|
+
@dump[:enum]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @api public
|
|
48
|
+
# Whether this param is an enum reference.
|
|
49
|
+
#
|
|
50
|
+
# @return [Boolean]
|
|
51
|
+
def enum_reference?
|
|
52
|
+
@dump[:enum].is_a?(Symbol)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# @api public
|
|
56
|
+
# Whether this param is a datetime.
|
|
57
|
+
#
|
|
58
|
+
# @return [Boolean]
|
|
59
|
+
def datetime?
|
|
60
|
+
true
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# @api public
|
|
64
|
+
# Whether this param is formattable.
|
|
65
|
+
#
|
|
66
|
+
# @return [Boolean]
|
|
67
|
+
def formattable?
|
|
68
|
+
false
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Apiwork
|
|
4
|
+
module Introspection
|
|
5
|
+
module Param
|
|
6
|
+
# @api public
|
|
7
|
+
# Decimal param representing precise decimal number values.
|
|
8
|
+
#
|
|
9
|
+
# @example Basic usage
|
|
10
|
+
# param.type # => :decimal
|
|
11
|
+
# param.scalar? # => true
|
|
12
|
+
# param.decimal? # => true
|
|
13
|
+
# param.numeric? # => true
|
|
14
|
+
#
|
|
15
|
+
# @example Constraints
|
|
16
|
+
# param.min # => 0.0 or nil
|
|
17
|
+
# param.max # => 100.0 or nil
|
|
18
|
+
# param.boundable? # => true
|
|
19
|
+
# param.formattable? # => false
|
|
20
|
+
#
|
|
21
|
+
# @example Enum
|
|
22
|
+
# if param.enum?
|
|
23
|
+
# param.enum # => [9.99, 19.99, 29.99]
|
|
24
|
+
# param.enum_reference? # => false
|
|
25
|
+
# end
|
|
26
|
+
class Decimal < Base
|
|
27
|
+
# @api public
|
|
28
|
+
# The minimum for this param.
|
|
29
|
+
#
|
|
30
|
+
# @return [Numeric, nil]
|
|
31
|
+
def min
|
|
32
|
+
@dump[:min]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# @api public
|
|
36
|
+
# The maximum for this param.
|
|
37
|
+
#
|
|
38
|
+
# @return [Numeric, nil]
|
|
39
|
+
def max
|
|
40
|
+
@dump[:max]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @api public
|
|
44
|
+
# Whether this param is scalar.
|
|
45
|
+
#
|
|
46
|
+
# @return [Boolean]
|
|
47
|
+
def scalar?
|
|
48
|
+
true
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# @api public
|
|
52
|
+
# Whether this param has an enum.
|
|
53
|
+
#
|
|
54
|
+
# @return [Boolean]
|
|
55
|
+
def enum?
|
|
56
|
+
@dump[:enum].present?
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# @api public
|
|
60
|
+
# The enum for this param.
|
|
61
|
+
#
|
|
62
|
+
# @return [Array<Numeric>, Symbol, nil]
|
|
63
|
+
def enum
|
|
64
|
+
@dump[:enum]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# @api public
|
|
68
|
+
# Whether this param is an enum reference.
|
|
69
|
+
#
|
|
70
|
+
# @return [Boolean]
|
|
71
|
+
def enum_reference?
|
|
72
|
+
@dump[:enum].is_a?(Symbol)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# @api public
|
|
76
|
+
# Whether this param is numeric.
|
|
77
|
+
#
|
|
78
|
+
# @return [Boolean]
|
|
79
|
+
def numeric?
|
|
80
|
+
true
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# @api public
|
|
84
|
+
# Whether this param is boundable.
|
|
85
|
+
#
|
|
86
|
+
# @return [Boolean]
|
|
87
|
+
def boundable?
|
|
88
|
+
true
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# @api public
|
|
92
|
+
# Whether this param is a decimal.
|
|
93
|
+
#
|
|
94
|
+
# @return [Boolean]
|
|
95
|
+
def decimal?
|
|
96
|
+
true
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# @api public
|
|
100
|
+
# Whether this param is formattable.
|
|
101
|
+
#
|
|
102
|
+
# @return [Boolean]
|
|
103
|
+
def formattable?
|
|
104
|
+
false
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# @api public
|
|
108
|
+
# Converts this param to a hash.
|
|
109
|
+
#
|
|
110
|
+
# @return [Hash]
|
|
111
|
+
def to_h
|
|
112
|
+
result = super
|
|
113
|
+
result[:enum] = enum if enum?
|
|
114
|
+
result[:max] = max
|
|
115
|
+
result[:min] = min
|
|
116
|
+
result
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|