[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}}
{{#formParams}}
{{#isFile}}
{{#isArray}}
var {{paramName}}LocalVarFormFileName string
var {{paramName}}LocalVarFileName string
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}}
if {{paramName}}LocalVarFile != nil {
@ -272,6 +291,7 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class
{{paramName}}LocalVarFile.Close()
formFiles = append(formFiles, formFile{fileBytes: {{paramName}}LocalVarFileBytes, fileName: {{paramName}}LocalVarFileName, formFileName: {{paramName}}LocalVarFormFileName})
}
{{/isArray}}
{{/isFile}}
{{^isFile}}
{{#required}}

View File

@ -306,18 +306,19 @@ func (a *BodyAPIService) TestBodyMultipartFormdataArrayOfBinaryExecute(r ApiTest
var filesLocalVarFileBytes []byte
filesLocalVarFormFileName = "files"
filesLocalVarFile := r.files
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
filesLocalVarFileName = filesLocalVarFile.Name()
filesLocalVarFile.Close()
filesLocalVarFileName = filesLocalVarFileValue.Name()
filesLocalVarFileValue.Close()
formFiles = append(formFiles, formFile{fileBytes: filesLocalVarFileBytes, fileName: filesLocalVarFileName, formFileName: filesLocalVarFormFileName})
}
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err

View File

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

View File

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

View File

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

View File

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