Skip to content

Commit

Permalink
Add Xojo client generator (OpenAPITools#15194)
Browse files Browse the repository at this point in the history
* Add Xojo client

* Add Xojo client generator

* Add Xojo client generator

* hide generation timestamp for xojo samples

---------

Co-authored-by: William Cheng <[email protected]>
  • Loading branch information
Topheee and wing328 authored May 3, 2023
1 parent 61aadb3 commit 45a3fe0
Show file tree
Hide file tree
Showing 100 changed files with 12,435 additions and 7 deletions.
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ Code change should conform to the programming style guide of the respective lang
- Scala: http://docs.scala-lang.org/style/
- Swift: [Apple Developer](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html)
- TypeScript: https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines
- Xojo: https://documentation.xojo.com/topics/code_management/coding_guidelines.html

For other languages, feel free to suggest.

Expand Down
14 changes: 8 additions & 6 deletions README.md

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions bin/configs/xojo-client-petstore-synchronous.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
generatorName: xojo-client
outputDir: samples/client/petstore/xojo/client-synchronous
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/xojo-client
additionalProperties:
hideGenerationTimestamp: "true"
supportsAsync: "false"
projectName: "XojoOpenAPIClientSynchronous"
7 changes: 7 additions & 0 deletions bin/configs/xojo-client-petstore.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
generatorName: xojo-client
outputDir: samples/client/petstore/xojo/client
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/xojo-client
additionalProperties:
hideGenerationTimestamp: "true"
supportsAsync: "true"
1 change: 1 addition & 0 deletions docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ Code change should conform to the programming style guide of the respective lang
- Scala: http://docs.scala-lang.org/style/
- Swift: [Apple Developer](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html)
- TypeScript: https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines
- Xojo: https://documentation.xojo.com/topics/code_management/coding_guidelines.html

For other languages, feel free to suggest.

Expand Down
1 change: 1 addition & 0 deletions docs/generators.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ The following generators are available:
* [typescript-node](generators/typescript-node.md)
* [typescript-redux-query](generators/typescript-redux-query.md)
* [typescript-rxjs](generators/typescript-rxjs.md)
* [xojo-client](generators/xojo-client.md)


## SERVER generators
Expand Down
297 changes: 297 additions & 0 deletions docs/generators/xojo-client.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,297 @@
---
title: Documentation for the xojo-client Generator
---

## METADATA

| Property | Value | Notes |
| -------- | ----- | ----- |
| generator name | xojo-client | pass this to the generate command after -g |
| generator stability | STABLE | |
| generator type | CLIENT | |
| generator language | Xojo | |
| generator default templating engine | mustache | |
| helpTxt | Generates a Xojo client module. | |

## CONFIG OPTIONS
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.

| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
|apiNamePrefix|Prefix that will be appended to all API classes. Default: empty string.| |null|
|apiPackage|package for generated api classes| |null|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|<dl><dt>**false**</dt><dd>The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.</dd><dt>**true**</dt><dd>Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.</dd></dl>|true|
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|library|library template (sub-template)|<dl><dt>**httpsocket**</dt><dd>[DEFAULT] HTTP client: HTTPSocket</dd></dl>|httpsocket|
|modelPackage|package for generated models| |null|
|nonPublicApi|Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.| |null|
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|projectName|Project name in Xojo| |null|
|serializationLibrary|What serialization library to use: 'xoson' (default).| |xoson|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|supportsAsync|Generate code that supports async operations.| |null|

## IMPORT MAPPING

| Type/Alias | Imports |
| ---------- | ------- |


## INSTANTIATION TYPES

| Type/Alias | Instantiated By |
| ---------- | --------------- |


## LANGUAGE PRIMITIVES

<ul class="column-ul">
<li>Boolean</li>
<li>Color</li>
<li>Currency</li>
<li>Double</li>
<li>Int16</li>
<li>Int32</li>
<li>Int64</li>
<li>Int8</li>
<li>Integer</li>
<li>Single</li>
<li>String</li>
<li>UInt16</li>
<li>UInt32</li>
<li>UInt64</li>
<li>UInt8</li>
<li>UInteger</li>
</ul>

## RESERVED WORDS

<ul class="column-ul">
<li>#bad</li>
<li>#else</li>
<li>#elseif</li>
<li>#endif</li>
<li>#if</li>
<li>#pragma</li>
<li>#tag</li>
<li>addhandler</li>
<li>addressof</li>
<li>aggregates</li>
<li>and</li>
<li>apis</li>
<li>array</li>
<li>as</li>
<li>assigns</li>
<li>async</li>
<li>attributes</li>
<li>await</li>
<li>break</li>
<li>byref</li>
<li>byval</li>
<li>call</li>
<li>case</li>
<li>catch</li>
<li>class</li>
<li>column</li>
<li>const</li>
<li>continue</li>
<li>ctype</li>
<li>declare</li>
<li>delegate</li>
<li>dim</li>
<li>do</li>
<li>downto</li>
<li>each</li>
<li>else</li>
<li>elseif</li>
<li>end</li>
<li>enum</li>
<li>event</li>
<li>exception</li>
<li>exit</li>
<li>extends</li>
<li>false</li>
<li>file</li>
<li>finally</li>
<li>for</li>
<li>function</li>
<li>global</li>
<li>goto</li>
<li>handles</li>
<li>if</li>
<li>implements</li>
<li>in</li>
<li>inherits</li>
<li>interface</li>
<li>is</li>
<li>isa</li>
<li>lib</li>
<li>line</li>
<li>loop</li>
<li>me</li>
<li>mod</li>
<li>models</li>
<li>module</li>
<li>namespace</li>
<li>new</li>
<li>next</li>
<li>nil</li>
<li>not</li>
<li>of</li>
<li>optional</li>
<li>or</li>
<li>paramarray</li>
<li>private</li>
<li>property</li>
<li>protected</li>
<li>public</li>
<li>raise</li>
<li>raiseevent</li>
<li>redim</li>
<li>rem</li>
<li>removehandler</li>
<li>return</li>
<li>select</li>
<li>self</li>
<li>shared</li>
<li>soft</li>
<li>static</li>
<li>step</li>
<li>structure</li>
<li>sub</li>
<li>super</li>
<li>then</li>
<li>to</li>
<li>true</li>
<li>try</li>
<li>until</li>
<li>using</li>
<li>var</li>
<li>void</li>
<li>weakaddressof</li>
<li>wend</li>
<li>while</li>
<li>with</li>
<li>xor</li>
</ul>

## FEATURE SET


### Client Modification Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|BasePath|✗|ToolingExtension
|Authorizations|✗|ToolingExtension
|UserAgent|✗|ToolingExtension
|MockServer|✗|ToolingExtension

### Data Type Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Custom|✗|OAS2,OAS3
|Int32|✓|OAS2,OAS3
|Int64|✓|OAS2,OAS3
|Float|✓|OAS2,OAS3
|Double|✓|OAS2,OAS3
|Decimal|✓|ToolingExtension
|String|✓|OAS2,OAS3
|Byte|✓|OAS2,OAS3
|Binary|✓|OAS2,OAS3
|Boolean|✓|OAS2,OAS3
|Date|✓|OAS2,OAS3
|DateTime|✓|OAS2,OAS3
|Password|✓|OAS2,OAS3
|File|✓|OAS2
|Uuid||
|Array|✓|OAS2,OAS3
|Null|✗|OAS3
|AnyType|✗|OAS2,OAS3
|Object|✓|OAS2,OAS3
|Maps|✓|ToolingExtension
|CollectionFormat|✓|OAS2
|CollectionFormatMulti|✓|OAS2
|Enum|✓|OAS2,OAS3
|ArrayOfEnum|✓|ToolingExtension
|ArrayOfModel|✓|ToolingExtension
|ArrayOfCollectionOfPrimitives|✓|ToolingExtension
|ArrayOfCollectionOfModel|✓|ToolingExtension
|ArrayOfCollectionOfEnum|✓|ToolingExtension
|MapOfEnum|✓|ToolingExtension
|MapOfModel|✓|ToolingExtension
|MapOfCollectionOfPrimitives|✓|ToolingExtension
|MapOfCollectionOfModel|✓|ToolingExtension
|MapOfCollectionOfEnum|✓|ToolingExtension

### Documentation Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Readme|✗|ToolingExtension
|Model|✓|ToolingExtension
|Api|✓|ToolingExtension

### Global Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Host|✓|OAS2,OAS3
|BasePath|✓|OAS2,OAS3
|Info|✓|OAS2,OAS3
|Schemes|✗|OAS2,OAS3
|PartialSchemes|✓|OAS2,OAS3
|Consumes|✓|OAS2
|Produces|✓|OAS2
|ExternalDocumentation|✓|OAS2,OAS3
|Examples|✓|OAS2,OAS3
|XMLStructureDefinitions|✗|OAS2,OAS3
|MultiServer|✗|OAS3
|ParameterizedServer|✗|OAS3
|ParameterStyling|✗|OAS3
|Callbacks|✓|OAS3
|LinkObjects|✗|OAS3

### Parameter Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Path|✓|OAS2,OAS3
|Query|✓|OAS2,OAS3
|Header|✓|OAS2,OAS3
|Body|✓|OAS2
|FormUnencoded|✓|OAS2
|FormMultipart|✓|OAS2
|Cookie|✓|OAS3

### Schema Support Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|Simple|✓|OAS2,OAS3
|Composite|✓|OAS2,OAS3
|Polymorphism|✓|OAS2,OAS3
|Union|✗|OAS3
|allOf|✗|OAS2,OAS3
|anyOf|✗|OAS3
|oneOf|✗|OAS3
|not|✗|OAS3

### Security Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|BasicAuth|✓|OAS2,OAS3
|ApiKey|✓|OAS2,OAS3
|OpenIDConnect|✗|OAS3
|BearerToken|✓|OAS3
|OAuth2_Implicit|✓|OAS2,OAS3
|OAuth2_Password|✓|OAS2,OAS3
|OAuth2_ClientCredentials|✓|OAS2,OAS3
|OAuth2_AuthorizationCode|✓|OAS2,OAS3

### Wire Format Feature
| Name | Supported | Defined By |
| ---- | --------- | ---------- |
|JSON|✓|OAS2,OAS3
|XML|✓|OAS2,OAS3
|PROTOBUF|✗|ToolingExtension
|Custom|✗|OAS2,OAS3
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public enum GeneratorLanguage {
OBJECTIVE_C("Objective-C"), OCAML("OCaml"), PERL("Perl"), PHP("PHP"),
POWERSHELL("PowerShell"), PROTOBUF("Protocol Buffers (Protobuf)"), PYTHON("Python"),
R("R"), RUBY("Ruby"), RUST("Rust"), SCALA("Scala"), SWIFT("Swift"),
WSDL("Web Services Description Language (WSDL)"), JULIA("Julia");
WSDL("Web Services Description Language (WSDL)"), JULIA("Julia"), XOJO("Xojo");

private final String label;

Expand Down
Loading

0 comments on commit 45a3fe0

Please sign in to comment.