[Go] Add multiple file upload support (#16956)

* add go echo api client github workflow

* add support for multi file upload in go client

* update go samples
This commit is contained in:
William Cheng 2023-11-01 11:35:25 +08:00 committed by GitHub
parent c2a4163bdb
commit 8d76ab9511
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 61 additions and 20 deletions

View File

@ -0,0 +1,32 @@
name: Go Client (Echo API)
on:
pull_request:
paths:
- samples/client/echo_api/go/**
- .github/workflows/samples-go-client-echo-api.yaml
jobs:
build:
name: Test Go client
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
sample:
# clients
- samples/client/echo_api/go
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: "stable"
- name: Setup node.js
uses: actions/setup-node@v4
- name: Run echo server
run: |
git clone https://github.com/wing328/http-echo-server -b openapi-generator-test-server
(cd http-echo-server && npm install && npm start &)
- run: go version
- name: Run test
working-directory: ${{ matrix.sample }}
run: go test -mod=mod -v

View File

@ -255,13 +255,32 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class
{{/headerParams}} {{/headerParams}}
{{#formParams}} {{#formParams}}
{{#isFile}} {{#isFile}}
{{#isArray}}
var {{paramName}}LocalVarFormFileName string var {{paramName}}LocalVarFormFileName string
var {{paramName}}LocalVarFileName string var {{paramName}}LocalVarFileName string
var {{paramName}}LocalVarFileBytes []byte var {{paramName}}LocalVarFileBytes []byte
{{paramName}}LocalVarFormFileName = "{{baseName}}" {{paramName}}LocalVarFormFileName = "{{{baseName}}}"
{{paramName}}LocalVarFile := r.{{paramName}}
if {{paramName}}LocalVarFile != nil {
// loop through the array to prepare multiple files upload
for _, {{paramName}}LocalVarFileValue := range {{paramName}}LocalVarFile {
fbs, _ := io.ReadAll({{paramName}}LocalVarFileValue)
{{paramName}}LocalVarFileBytes = fbs
{{paramName}}LocalVarFileName = {{paramName}}LocalVarFileValue.Name()
{{paramName}}LocalVarFileValue.Close()
formFiles = append(formFiles, formFile{fileBytes: {{paramName}}LocalVarFileBytes, fileName: {{paramName}}LocalVarFileName, formFileName: {{paramName}}LocalVarFormFileName})
}
}
{{/isArray}}
{{^isArray}}
var {{paramName}}LocalVarFormFileName string
var {{paramName}}LocalVarFileName string
var {{paramName}}LocalVarFileBytes []byte
{{paramName}}LocalVarFormFileName = "{{{baseName}}}"
{{paramName}}LocalVarFile := r.{{paramName}} {{paramName}}LocalVarFile := r.{{paramName}}
if {{paramName}}LocalVarFile != nil { if {{paramName}}LocalVarFile != nil {
@ -272,6 +291,7 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class
{{paramName}}LocalVarFile.Close() {{paramName}}LocalVarFile.Close()
formFiles = append(formFiles, formFile{fileBytes: {{paramName}}LocalVarFileBytes, fileName: {{paramName}}LocalVarFileName, formFileName: {{paramName}}LocalVarFormFileName}) formFiles = append(formFiles, formFile{fileBytes: {{paramName}}LocalVarFileBytes, fileName: {{paramName}}LocalVarFileName, formFileName: {{paramName}}LocalVarFormFileName})
} }
{{/isArray}}
{{/isFile}} {{/isFile}}
{{^isFile}} {{^isFile}}
{{#required}} {{#required}}

View File

@ -306,18 +306,19 @@ func (a *BodyAPIService) TestBodyMultipartFormdataArrayOfBinaryExecute(r ApiTest
var filesLocalVarFileBytes []byte var filesLocalVarFileBytes []byte
filesLocalVarFormFileName = "files" filesLocalVarFormFileName = "files"
filesLocalVarFile := r.files filesLocalVarFile := r.files
if filesLocalVarFile != nil { if filesLocalVarFile != nil {
fbs, _ := io.ReadAll(filesLocalVarFile) // loop through the array to prepare multiple files upload
for _, filesLocalVarFileValue := range filesLocalVarFile {
fbs, _ := io.ReadAll(filesLocalVarFileValue)
filesLocalVarFileBytes = fbs filesLocalVarFileBytes = fbs
filesLocalVarFileName = filesLocalVarFile.Name() filesLocalVarFileName = filesLocalVarFileValue.Name()
filesLocalVarFile.Close() filesLocalVarFileValue.Close()
formFiles = append(formFiles, formFile{fileBytes: filesLocalVarFileBytes, fileName: filesLocalVarFileName, formFileName: filesLocalVarFormFileName}) formFiles = append(formFiles, formFile{fileBytes: filesLocalVarFileBytes, fileName: filesLocalVarFileName, formFileName: filesLocalVarFormFileName})
} }
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil { if err != nil {
return localVarReturnValue, nil, err return localVarReturnValue, nil, err

View File

@ -1270,8 +1270,6 @@ func (a *FakeAPIService) TestEndpointParametersExecute(r ApiTestEndpointParamete
var binaryLocalVarFileBytes []byte var binaryLocalVarFileBytes []byte
binaryLocalVarFormFileName = "binary" binaryLocalVarFormFileName = "binary"
binaryLocalVarFile := r.binary binaryLocalVarFile := r.binary
if binaryLocalVarFile != nil { if binaryLocalVarFile != nil {

View File

@ -976,8 +976,6 @@ func (a *PetAPIService) UploadFileExecute(r ApiUploadFileRequest) (*ApiResponse,
var fileLocalVarFileBytes []byte var fileLocalVarFileBytes []byte
fileLocalVarFormFileName = "file" fileLocalVarFormFileName = "file"
fileLocalVarFile := r.file fileLocalVarFile := r.file
if fileLocalVarFile != nil { if fileLocalVarFile != nil {
@ -1114,8 +1112,6 @@ func (a *PetAPIService) UploadFileWithRequiredFileExecute(r ApiUploadFileWithReq
var requiredFileLocalVarFileBytes []byte var requiredFileLocalVarFileBytes []byte
requiredFileLocalVarFormFileName = "requiredFile" requiredFileLocalVarFormFileName = "requiredFile"
requiredFileLocalVarFile := r.requiredFile requiredFileLocalVarFile := r.requiredFile
if requiredFileLocalVarFile != nil { if requiredFileLocalVarFile != nil {

View File

@ -1451,8 +1451,6 @@ func (a *FakeAPIService) TestEndpointParametersExecute(r ApiTestEndpointParamete
var binaryLocalVarFileBytes []byte var binaryLocalVarFileBytes []byte
binaryLocalVarFormFileName = "binary" binaryLocalVarFormFileName = "binary"
binaryLocalVarFile := r.binary binaryLocalVarFile := r.binary
if binaryLocalVarFile != nil { if binaryLocalVarFile != nil {

View File

@ -999,8 +999,6 @@ func (a *PetAPIService) UploadFileExecute(r ApiUploadFileRequest) (*ApiResponse,
var fileLocalVarFileBytes []byte var fileLocalVarFileBytes []byte
fileLocalVarFormFileName = "file" fileLocalVarFormFileName = "file"
fileLocalVarFile := r.file fileLocalVarFile := r.file
if fileLocalVarFile != nil { if fileLocalVarFile != nil {
@ -1139,8 +1137,6 @@ func (a *PetAPIService) UploadFileWithRequiredFileExecute(r ApiUploadFileWithReq
var requiredFileLocalVarFileBytes []byte var requiredFileLocalVarFileBytes []byte
requiredFileLocalVarFormFileName = "requiredFile" requiredFileLocalVarFormFileName = "requiredFile"
requiredFileLocalVarFile := r.requiredFile requiredFileLocalVarFile := r.requiredFile
if requiredFileLocalVarFile != nil { if requiredFileLocalVarFile != nil {