Skip to content

Commit

Permalink
[Go] uses sanitized model name instead of the name (OpenAPITools#18644)
Browse files Browse the repository at this point in the history
* uses sanitized model name instead of the name

* commit sample

* samples updated

* update CI file to test the changes

* adds a pom.xml to the sample
  • Loading branch information
vvb authored and Renato Mameli committed May 17, 2024
1 parent b8a2729 commit b08959d
Show file tree
Hide file tree
Showing 25 changed files with 2,657 additions and 5 deletions.
1 change: 1 addition & 0 deletions CI/circle_parallel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ elif [ "$NODE_INDEX" = "2" ]; then
(cd samples/client/petstore/go && mvn integration-test)
(cd samples/openapi3/client/petstore/go && mvn integration-test)
(cd samples/openapi3/client/petstore/go-petstore-generateMarshalJSON-false && mvn integration-test)
(cd samples/client/others/go/allof_multiple_ref_and_discriminator && mvn integration-test)

elif [ "$NODE_INDEX" = "3" ]; then

Expand Down
5 changes: 5 additions & 0 deletions bin/configs/go-multiple-allof-ref-with-discriminator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
generatorName: go
outputDir: samples/client/others/go/allof_multiple_ref_and_discriminator
inputSpec: modules/openapi-generator/src/test/resources/3_0/go/allof_multiple_ref_and_discriminator.yaml
additionalProperties:
hideGenerationTimestamp: "true"
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ var _ MappedNullable = &{{classname}}{}
type {{classname}} struct {
{{#parentModel.name}}
{{^isArray}}
{{{parentModel.name}}}
{{{parentModel.classname}}}
{{/isArray}}
{{#isArray}}
Items {{{parentModel.name}}}
Items {{{parentModel.classname}}}
{{/isArray}}
{{/parentModel.name}}
{{#vars}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ components:
FinalItem:
type: object
allOf:
- $ref: '#/components/schemas/BaseItem'
- $ref: '#/components/schemas/base.item'
- $ref: '#/components/schemas/AdditionalData'
BaseItem:
base.item:
type: object
properties:
title:
Expand Down Expand Up @@ -51,4 +51,4 @@ components:
- prop1
- quantity
- unitPrice
- totalPrice
- totalPrice
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Compiled Object files, Static and Dynamic libs (Shared Objects)
*.o
*.a
*.so

# Folders
_obj
_test

# Architecture specific extensions/prefixes
*.[568vq]
[568vq].out

*.cgo1.go
*.cgo2.c
_cgo_defun.c
_cgo_gotypes.go
_cgo_export.*

_testmain.go

*.exe
*.test
*.prof
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator

# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.

# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs

# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux

# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux

# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
.gitignore
.travis.yml
README.md
api/openapi.yaml
client.go
configuration.go
docs/AdditionalData.md
docs/BaseItem.md
docs/FinalItem.md
git_push.sh
go.mod
go.sum
model_additional_data.go
model_base_item.go
model_final_item.go
response.go
utils.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7.6.0-SNAPSHOT
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
language: go

install:
- go get -d -v .

script:
- go build -v ./

Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# Go API client for openapi

No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

## Overview
This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [OpenAPI-spec](https://www.openapis.org/) from a remote server, you can easily generate an API client.

- API version: 1.0.0
- Package version: 1.0.0
- Generator version: 7.6.0-SNAPSHOT
- Build package: org.openapitools.codegen.languages.GoClientCodegen

## Installation

Install the following dependencies:

```sh
go get github.com/stretchr/testify/assert
go get golang.org/x/net/context
```

Put the package under your project folder and add the following in import:

```go
import openapi "github.com/GIT_USER_ID/GIT_REPO_ID"
```

To use a proxy, set the environment variable `HTTP_PROXY`:

```go
os.Setenv("HTTP_PROXY", "http://proxy_name:proxy_port")
```

## Configuration of Server URL

Default configuration comes with `Servers` field that contains server objects as defined in the OpenAPI specification.

### Select Server Configuration

For using other server than the one defined on index 0 set context value `openapi.ContextServerIndex` of type `int`.

```go
ctx := context.WithValue(context.Background(), openapi.ContextServerIndex, 1)
```

### Templated Server URL

Templated server URL is formatted using default variables from configuration or from context value `openapi.ContextServerVariables` of type `map[string]string`.

```go
ctx := context.WithValue(context.Background(), openapi.ContextServerVariables, map[string]string{
"basePath": "v2",
})
```

Note, enum values are always validated and all unused variables are silently ignored.

### URLs Configuration per Operation

Each operation can use different server URL defined using `OperationServers` map in the `Configuration`.
An operation is uniquely identified by `"{classname}Service.{nickname}"` string.
Similar rules for overriding default operation server index and variables applies by using `openapi.ContextOperationServerIndices` and `openapi.ContextOperationServerVariables` context maps.

```go
ctx := context.WithValue(context.Background(), openapi.ContextOperationServerIndices, map[string]int{
"{classname}Service.{nickname}": 2,
})
ctx = context.WithValue(context.Background(), openapi.ContextOperationServerVariables, map[string]map[string]string{
"{classname}Service.{nickname}": {
"port": "8443",
},
})
```

## Documentation for API Endpoints

All URIs are relative to *http://localhost*

Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------


## Documentation For Models

- [AdditionalData](docs/AdditionalData.md)
- [BaseItem](docs/BaseItem.md)
- [FinalItem](docs/FinalItem.md)


## Documentation For Authorization

Endpoints do not require authorization.


## Documentation for Utility Methods

Due to the fact that model structure members are all pointers, this package contains
a number of utility functions to easily obtain pointers to values of basic types.
Each of these functions takes a value of the given basic type and returns a pointer to it:

* `PtrBool`
* `PtrInt`
* `PtrInt32`
* `PtrInt64`
* `PtrFloat`
* `PtrFloat32`
* `PtrFloat64`
* `PtrString`
* `PtrTime`

## Author


Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
openapi: 3.0.0
info:
title: Test
version: 1.0.0
servers:
- url: /
paths: {}
components:
schemas:
FinalItem:
allOf:
- $ref: '#/components/schemas/base.item'
- $ref: '#/components/schemas/AdditionalData'
type: object
base.item:
discriminator:
mapping:
FINAL: '#/components/schemas/FinalItem'
propertyName: type
properties:
title:
type: string
type:
enum:
- FINAL
example: FINAL
type: string
required:
- title
- type
type: object
AdditionalData:
properties:
prop1:
type: string
quantity:
example: 1
format: int32
minimum: 1
type: integer
unitPrice:
example: 9.99
format: double
minimum: 0.0
type: number
totalPrice:
example: 9.99
format: double
minimum: 0.0
type: number
required:
- prop1
- quantity
- totalPrice
- unitPrice
type: object
Loading

0 comments on commit b08959d

Please sign in to comment.