forked from loafle/openapi-generator-original
* Instead of limiting a request to a single file when performing an upload, use a slice of files so an arbitrary number of files can be used in the form. * Remove commented out line of code * Update examples for multi-form file fix for multiple files * Convert spaces to tabs for indentation * Updated examples to have tabs instead of spaces * Add an example of a multipart/form-data OA3 schema that contains two files to be uploaded
173 lines
5.0 KiB
Go
173 lines
5.0 KiB
Go
/*
|
|
Multiple Files via form-data
|
|
|
|
This is a sample server with a single endpoint that accepts two files via a multipart/form-data POST request.
|
|
|
|
API version: 1.0.0
|
|
*/
|
|
|
|
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
|
|
|
|
package openapi
|
|
|
|
import (
|
|
"bytes"
|
|
_context "context"
|
|
_ioutil "io/ioutil"
|
|
_nethttp "net/http"
|
|
_neturl "net/url"
|
|
"os"
|
|
)
|
|
|
|
// Linger please
|
|
var (
|
|
_ _context.Context
|
|
)
|
|
|
|
// DefaultApiService DefaultApi service
|
|
type DefaultApiService service
|
|
|
|
type ApiUploadFilesRequest struct {
|
|
ctx _context.Context
|
|
ApiService *DefaultApiService
|
|
file **os.File
|
|
secondFile **os.File
|
|
}
|
|
|
|
// file to upload
|
|
func (r ApiUploadFilesRequest) File(file *os.File) ApiUploadFilesRequest {
|
|
r.file = &file
|
|
return r
|
|
}
|
|
// another file to upload
|
|
func (r ApiUploadFilesRequest) SecondFile(secondFile *os.File) ApiUploadFilesRequest {
|
|
r.secondFile = &secondFile
|
|
return r
|
|
}
|
|
|
|
func (r ApiUploadFilesRequest) Execute() (ApiResponse, *_nethttp.Response, error) {
|
|
return r.ApiService.UploadFilesExecute(r)
|
|
}
|
|
|
|
/*
|
|
UploadFiles uploads two files
|
|
|
|
@param ctx _context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
|
|
@return ApiUploadFilesRequest
|
|
*/
|
|
func (a *DefaultApiService) UploadFiles(ctx _context.Context) ApiUploadFilesRequest {
|
|
return ApiUploadFilesRequest{
|
|
ApiService: a,
|
|
ctx: ctx,
|
|
}
|
|
}
|
|
|
|
// Execute executes the request
|
|
// @return ApiResponse
|
|
func (a *DefaultApiService) UploadFilesExecute(r ApiUploadFilesRequest) (ApiResponse, *_nethttp.Response, error) {
|
|
var (
|
|
localVarHTTPMethod = _nethttp.MethodPost
|
|
localVarPostBody interface{}
|
|
formFiles []formFile
|
|
localVarReturnValue ApiResponse
|
|
)
|
|
|
|
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultApiService.UploadFiles")
|
|
if err != nil {
|
|
return localVarReturnValue, nil, GenericOpenAPIError{error: err.Error()}
|
|
}
|
|
|
|
localVarPath := localBasePath + "/uploadFiles"
|
|
|
|
localVarHeaderParams := make(map[string]string)
|
|
localVarQueryParams := _neturl.Values{}
|
|
localVarFormParams := _neturl.Values{}
|
|
|
|
// to determine the Content-Type header
|
|
localVarHTTPContentTypes := []string{"multipart/form-data"}
|
|
|
|
// set Content-Type header
|
|
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
|
|
if localVarHTTPContentType != "" {
|
|
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
|
|
}
|
|
|
|
// to determine the Accept header
|
|
localVarHTTPHeaderAccepts := []string{"application/json"}
|
|
|
|
// set Accept header
|
|
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
|
|
if localVarHTTPHeaderAccept != "" {
|
|
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
|
|
}
|
|
var fileLocalVarFormFileName string
|
|
var fileLocalVarFileName string
|
|
var fileLocalVarFileBytes []byte
|
|
|
|
fileLocalVarFormFileName = "file"
|
|
|
|
var fileLocalVarFile *os.File
|
|
if r.file != nil {
|
|
fileLocalVarFile = *r.file
|
|
}
|
|
if fileLocalVarFile != nil {
|
|
fbs, _ := _ioutil.ReadAll(fileLocalVarFile)
|
|
fileLocalVarFileBytes = fbs
|
|
fileLocalVarFileName = fileLocalVarFile.Name()
|
|
fileLocalVarFile.Close()
|
|
}
|
|
formFiles = append(formFiles, formFile{fileBytes: fileLocalVarFileBytes, fileName: fileLocalVarFileName, formFileName: fileLocalVarFormFileName})
|
|
var secondFileLocalVarFormFileName string
|
|
var secondFileLocalVarFileName string
|
|
var secondFileLocalVarFileBytes []byte
|
|
|
|
secondFileLocalVarFormFileName = "secondFile"
|
|
|
|
var secondFileLocalVarFile *os.File
|
|
if r.secondFile != nil {
|
|
secondFileLocalVarFile = *r.secondFile
|
|
}
|
|
if secondFileLocalVarFile != nil {
|
|
fbs, _ := _ioutil.ReadAll(secondFileLocalVarFile)
|
|
secondFileLocalVarFileBytes = fbs
|
|
secondFileLocalVarFileName = secondFileLocalVarFile.Name()
|
|
secondFileLocalVarFile.Close()
|
|
}
|
|
formFiles = append(formFiles, formFile{fileBytes: secondFileLocalVarFileBytes, fileName: secondFileLocalVarFileName, formFileName: secondFileLocalVarFormFileName})
|
|
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
|
|
if err != nil {
|
|
return localVarReturnValue, nil, err
|
|
}
|
|
|
|
localVarHTTPResponse, err := a.client.callAPI(req)
|
|
if err != nil || localVarHTTPResponse == nil {
|
|
return localVarReturnValue, localVarHTTPResponse, err
|
|
}
|
|
|
|
localVarBody, err := _ioutil.ReadAll(localVarHTTPResponse.Body)
|
|
localVarHTTPResponse.Body.Close()
|
|
localVarHTTPResponse.Body = _ioutil.NopCloser(bytes.NewBuffer(localVarBody))
|
|
if err != nil {
|
|
return localVarReturnValue, localVarHTTPResponse, err
|
|
}
|
|
|
|
if localVarHTTPResponse.StatusCode >= 300 {
|
|
newErr := GenericOpenAPIError{
|
|
body: localVarBody,
|
|
error: localVarHTTPResponse.Status,
|
|
}
|
|
return localVarReturnValue, localVarHTTPResponse, newErr
|
|
}
|
|
|
|
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
|
|
if err != nil {
|
|
newErr := GenericOpenAPIError{
|
|
body: localVarBody,
|
|
error: err.Error(),
|
|
}
|
|
return localVarReturnValue, localVarHTTPResponse, newErr
|
|
}
|
|
|
|
return localVarReturnValue, localVarHTTPResponse, nil
|
|
}
|