From 3f0036a18a25a1e1b7a0ff4d59cd138921b2ea7f Mon Sep 17 00:00:00 2001 From: Ian Cubbon Date: Fri, 6 Oct 2023 10:21:05 -0700 Subject: [PATCH 1/4] Support for an endpoint returning a file to a client. --- .../main/resources/go-server/routers.mustache | 26 +++++++++++++++---- .../petstore/go/go-petstore/go/routers.go | 19 ++++++++++++++ .../petstore/go-api-server/go/routers.go | 19 ++++++++++++++ .../petstore/go-chi-server/go/routers.go | 19 ++++++++++++++ 4 files changed, 78 insertions(+), 5 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go-server/routers.mustache b/modules/openapi-generator/src/main/resources/go-server/routers.mustache index 166eb257f8a8..e9212573cc5d 100644 --- a/modules/openapi-generator/src/main/resources/go-server/routers.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/routers.mustache @@ -19,6 +19,7 @@ import ( {{/featureCORS}} {{/chi}} {{/routers}} + "io" "io/ioutil" "mime/multipart" "net/http" @@ -89,18 +90,33 @@ func NewRouter(routers ...Router) {{#routers}}{{#mux}}*mux.Router{{/mux}}{{#chi} // EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code func EncodeJSONResponse(i interface{}, status *int,{{#addResponseHeaders}} headers map[string][]string,{{/addResponseHeaders}} w http.ResponseWriter) error { - {{#addResponseHeaders}} wHeader := w.Header() + {{#addResponseHeaders}} for key, values := range headers { for _, value := range values { wHeader.Add(key, value) } } - wHeader.Set("Content-Type", "application/json; charset=UTF-8") - {{/addResponseHeaders}} - {{^addResponseHeaders}} - w.Header().Set("Content-Type", "application/json; charset=UTF-8") {{/addResponseHeaders}} + + f, ok := i.(*os.File) + if ok { + data, err := io.ReadAll(f) + if err != nil { + return err + } + wHeader.Set("Content-Type", http.DetectContentType(data)) + wHeader.Set("Content-Disposition", "attachment; filename="+f.Name()) + if status != nil { + w.WriteHeader(*status) + } else { + w.WriteHeader(http.StatusOK) + } + _, err = w.Write(data) + return err + } + wHeader.Set("Content-Type", "application/json; charset=UTF-8") + if status != nil { w.WriteHeader(*status) } else { diff --git a/samples/openapi3/server/petstore/go/go-petstore/go/routers.go b/samples/openapi3/server/petstore/go/go-petstore/go/routers.go index af326677bf45..65be290a30f6 100644 --- a/samples/openapi3/server/petstore/go/go-petstore/go/routers.go +++ b/samples/openapi3/server/petstore/go/go-petstore/go/routers.go @@ -14,6 +14,7 @@ import ( "errors" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" + "io" "io/ioutil" "mime/multipart" "net/http" @@ -64,7 +65,25 @@ func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, wHeader.Add(key, value) } } + + f, ok := i.(*os.File) + if ok { + data, err := io.ReadAll(f) + if err != nil { + return err + } + wHeader.Set("Content-Type", http.DetectContentType(data)) + wHeader.Set("Content-Disposition", "attachment; filename="+f.Name()) + if status != nil { + w.WriteHeader(*status) + } else { + w.WriteHeader(http.StatusOK) + } + _, err = w.Write(data) + return err + } wHeader.Set("Content-Type", "application/json; charset=UTF-8") + if status != nil { w.WriteHeader(*status) } else { diff --git a/samples/server/petstore/go-api-server/go/routers.go b/samples/server/petstore/go-api-server/go/routers.go index 1fb27970fdcc..dbce376626ac 100644 --- a/samples/server/petstore/go-api-server/go/routers.go +++ b/samples/server/petstore/go-api-server/go/routers.go @@ -13,6 +13,7 @@ import ( "encoding/json" "errors" "github.com/gorilla/mux" + "io" "io/ioutil" "mime/multipart" "net/http" @@ -68,7 +69,25 @@ func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, wHeader.Add(key, value) } } + + f, ok := i.(*os.File) + if ok { + data, err := io.ReadAll(f) + if err != nil { + return err + } + wHeader.Set("Content-Type", http.DetectContentType(data)) + wHeader.Set("Content-Disposition", "attachment; filename="+f.Name()) + if status != nil { + w.WriteHeader(*status) + } else { + w.WriteHeader(http.StatusOK) + } + _, err = w.Write(data) + return err + } wHeader.Set("Content-Type", "application/json; charset=UTF-8") + if status != nil { w.WriteHeader(*status) } else { diff --git a/samples/server/petstore/go-chi-server/go/routers.go b/samples/server/petstore/go-chi-server/go/routers.go index af326677bf45..65be290a30f6 100644 --- a/samples/server/petstore/go-chi-server/go/routers.go +++ b/samples/server/petstore/go-chi-server/go/routers.go @@ -14,6 +14,7 @@ import ( "errors" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" + "io" "io/ioutil" "mime/multipart" "net/http" @@ -64,7 +65,25 @@ func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, wHeader.Add(key, value) } } + + f, ok := i.(*os.File) + if ok { + data, err := io.ReadAll(f) + if err != nil { + return err + } + wHeader.Set("Content-Type", http.DetectContentType(data)) + wHeader.Set("Content-Disposition", "attachment; filename="+f.Name()) + if status != nil { + w.WriteHeader(*status) + } else { + w.WriteHeader(http.StatusOK) + } + _, err = w.Write(data) + return err + } wHeader.Set("Content-Type", "application/json; charset=UTF-8") + if status != nil { w.WriteHeader(*status) } else { From 23df01075cfc06598497db95143d6d54d549a4ff Mon Sep 17 00:00:00 2001 From: Ian Cubbon Date: Fri, 6 Oct 2023 10:32:04 -0700 Subject: [PATCH 2/4] Spaces to tabs conversion --- .../src/main/resources/go-server/routers.mustache | 6 +++--- .../openapi3/server/petstore/go/go-petstore/go/routers.go | 6 +++--- samples/server/petstore/go-api-server/go/routers.go | 6 +++--- samples/server/petstore/go-chi-server/go/routers.go | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/go-server/routers.mustache b/modules/openapi-generator/src/main/resources/go-server/routers.mustache index e9212573cc5d..378a67e45317 100644 --- a/modules/openapi-generator/src/main/resources/go-server/routers.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/routers.mustache @@ -99,8 +99,8 @@ func EncodeJSONResponse(i interface{}, status *int,{{#addResponseHeaders}} heade } {{/addResponseHeaders}} - f, ok := i.(*os.File) - if ok { + f, ok := i.(*os.File) + if ok { data, err := io.ReadAll(f) if err != nil { return err @@ -114,7 +114,7 @@ func EncodeJSONResponse(i interface{}, status *int,{{#addResponseHeaders}} heade } _, err = w.Write(data) return err - } + } wHeader.Set("Content-Type", "application/json; charset=UTF-8") if status != nil { diff --git a/samples/openapi3/server/petstore/go/go-petstore/go/routers.go b/samples/openapi3/server/petstore/go/go-petstore/go/routers.go index 65be290a30f6..08ba65a21e0a 100644 --- a/samples/openapi3/server/petstore/go/go-petstore/go/routers.go +++ b/samples/openapi3/server/petstore/go/go-petstore/go/routers.go @@ -66,8 +66,8 @@ func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, } } - f, ok := i.(*os.File) - if ok { + f, ok := i.(*os.File) + if ok { data, err := io.ReadAll(f) if err != nil { return err @@ -81,7 +81,7 @@ func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, } _, err = w.Write(data) return err - } + } wHeader.Set("Content-Type", "application/json; charset=UTF-8") if status != nil { diff --git a/samples/server/petstore/go-api-server/go/routers.go b/samples/server/petstore/go-api-server/go/routers.go index dbce376626ac..11c35c4f911d 100644 --- a/samples/server/petstore/go-api-server/go/routers.go +++ b/samples/server/petstore/go-api-server/go/routers.go @@ -70,8 +70,8 @@ func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, } } - f, ok := i.(*os.File) - if ok { + f, ok := i.(*os.File) + if ok { data, err := io.ReadAll(f) if err != nil { return err @@ -85,7 +85,7 @@ func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, } _, err = w.Write(data) return err - } + } wHeader.Set("Content-Type", "application/json; charset=UTF-8") if status != nil { diff --git a/samples/server/petstore/go-chi-server/go/routers.go b/samples/server/petstore/go-chi-server/go/routers.go index 65be290a30f6..08ba65a21e0a 100644 --- a/samples/server/petstore/go-chi-server/go/routers.go +++ b/samples/server/petstore/go-chi-server/go/routers.go @@ -66,8 +66,8 @@ func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, } } - f, ok := i.(*os.File) - if ok { + f, ok := i.(*os.File) + if ok { data, err := io.ReadAll(f) if err != nil { return err @@ -81,7 +81,7 @@ func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, } _, err = w.Write(data) return err - } + } wHeader.Set("Content-Type", "application/json; charset=UTF-8") if status != nil { From 00d3657e9848acda484f720f39323e83b67b2e41 Mon Sep 17 00:00:00 2001 From: Ian Cubbon Date: Wed, 11 Oct 2023 10:14:40 -0700 Subject: [PATCH 3/4] Add an example endpoint for download a file --- .../resources/3_0/go-server/petstore.yaml | 26 +++++++++++++++++ .../petstore/go-api-server/api/openapi.yaml | 28 +++++++++++++++++++ .../server/petstore/go-api-server/go/api.go | 2 ++ .../petstore/go-api-server/go/api_pet.go | 26 +++++++++++++++++ .../go-api-server/go/api_pet_service.go | 17 +++++++++++ .../petstore/go-chi-server/api/openapi.yaml | 28 +++++++++++++++++++ .../server/petstore/go-chi-server/go/api.go | 2 ++ .../petstore/go-chi-server/go/api_pet.go | 25 +++++++++++++++++ .../go-chi-server/go/api_pet_service.go | 17 +++++++++++ 9 files changed, 171 insertions(+) diff --git a/modules/openapi-generator/src/test/resources/3_0/go-server/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/go-server/petstore.yaml index fce2c52cbde4..b3c5d9513106 100644 --- a/modules/openapi-generator/src/test/resources/3_0/go-server/petstore.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/go-server/petstore.yaml @@ -286,6 +286,32 @@ paths: description: file to upload type: string format: binary + get: + tags: + - pet + summary: Returns the image for the Pet that has been previously uploaded + description: Returns the image for the Pet that has been previously uploaded + operationId: getPetImageById + parameters: + - name: petId + in: path + description: ID of pet to return + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + image/jpeg: + schema: + type: string + format: binary + '400': + description: Invalid ID supplied + '404': + description: Pet not found /store/inventory: get: tags: diff --git a/samples/server/petstore/go-api-server/api/openapi.yaml b/samples/server/petstore/go-api-server/api/openapi.yaml index cc433a6afd59..6c9f48626007 100644 --- a/samples/server/petstore/go-api-server/api/openapi.yaml +++ b/samples/server/petstore/go-api-server/api/openapi.yaml @@ -250,6 +250,34 @@ paths: tags: - pet /pet/{petId}/uploadImage: + get: + description: Returns the image for the Pet that has been previously uploaded + operationId: getPetImageById + parameters: + - description: ID of pet to return + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + responses: + "200": + content: + image/jpeg: + schema: + format: binary + type: string + description: successful operation + "400": + description: Invalid ID supplied + "404": + description: Pet not found + summary: Returns the image for the Pet that has been previously uploaded + tags: + - pet post: description: "" operationId: uploadFile diff --git a/samples/server/petstore/go-api-server/go/api.go b/samples/server/petstore/go-api-server/go/api.go index 0f6f14dea75f..4c5af3371330 100644 --- a/samples/server/petstore/go-api-server/go/api.go +++ b/samples/server/petstore/go-api-server/go/api.go @@ -27,6 +27,7 @@ type PetAPIRouter interface { // Deprecated FindPetsByTags(http.ResponseWriter, *http.Request) GetPetById(http.ResponseWriter, *http.Request) + GetPetImageById(http.ResponseWriter, *http.Request) UpdatePet(http.ResponseWriter, *http.Request) UpdatePetWithForm(http.ResponseWriter, *http.Request) UploadFile(http.ResponseWriter, *http.Request) @@ -66,6 +67,7 @@ type PetAPIServicer interface { // Deprecated FindPetsByTags(context.Context, []string) (ImplResponse, error) GetPetById(context.Context, int64) (ImplResponse, error) + GetPetImageById(context.Context, int64) (ImplResponse, error) UpdatePet(context.Context, Pet) (ImplResponse, error) UpdatePetWithForm(context.Context, int64, string, string) (ImplResponse, error) UploadFile(context.Context, int64, string, *os.File) (ImplResponse, error) diff --git a/samples/server/petstore/go-api-server/go/api_pet.go b/samples/server/petstore/go-api-server/go/api_pet.go index 0161ba41d6cf..285148b2faeb 100644 --- a/samples/server/petstore/go-api-server/go/api_pet.go +++ b/samples/server/petstore/go-api-server/go/api_pet.go @@ -75,6 +75,11 @@ func (c *PetAPIController) Routes() Routes { "/v2/pet/{petId}", c.GetPetById, }, + "GetPetImageById": Route{ + strings.ToUpper("Get"), + "/v2/pet/{petId}/uploadImage", + c.GetPetImageById, + }, "UpdatePet": Route{ strings.ToUpper("Put"), "/v2/pet", @@ -192,6 +197,27 @@ func (c *PetAPIController) GetPetById(w http.ResponseWriter, r *http.Request) { EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } +// GetPetImageById - Returns the image for the Pet that has been previously uploaded +func (c *PetAPIController) GetPetImageById(w http.ResponseWriter, r *http.Request) { + params := mux.Vars(r) + petIdParam, err := parseNumericParameter[int64]( + params["petId"], + WithRequire[int64](parseInt64), + ) + if err != nil { + c.errorHandler(w, r, &ParsingError{Err: err}, nil) + return + } + result, err := c.service.GetPetImageById(r.Context(), petIdParam) + // If an error occurred, encode the error with the status code + if err != nil { + c.errorHandler(w, r, err, &result) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) +} + // UpdatePet - Update an existing pet func (c *PetAPIController) UpdatePet(w http.ResponseWriter, r *http.Request) { petParam := Pet{} diff --git a/samples/server/petstore/go-api-server/go/api_pet_service.go b/samples/server/petstore/go-api-server/go/api_pet_service.go index bda4cd897526..89dda23e7a47 100644 --- a/samples/server/petstore/go-api-server/go/api_pet_service.go +++ b/samples/server/petstore/go-api-server/go/api_pet_service.go @@ -98,6 +98,23 @@ func (s *PetAPIService) GetPetById(ctx context.Context, petId int64) (ImplRespon return Response(http.StatusNotImplemented, nil), errors.New("GetPetById method not implemented") } +// GetPetImageById - Returns the image for the Pet that has been previously uploaded +func (s *PetAPIService) GetPetImageById(ctx context.Context, petId int64) (ImplResponse, error) { + // TODO - update GetPetImageById with the required logic for this service method. + // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + // TODO: Uncomment the next line to return response Response(200, *os.File{}) or use other options such as http.Ok ... + // return Response(200, *os.File{}), nil + + // TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + // return Response(400, nil),nil + + // TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ... + // return Response(404, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("GetPetImageById method not implemented") +} + // UpdatePet - Update an existing pet func (s *PetAPIService) UpdatePet(ctx context.Context, pet Pet) (ImplResponse, error) { // TODO - update UpdatePet with the required logic for this service method. diff --git a/samples/server/petstore/go-chi-server/api/openapi.yaml b/samples/server/petstore/go-chi-server/api/openapi.yaml index cc433a6afd59..6c9f48626007 100644 --- a/samples/server/petstore/go-chi-server/api/openapi.yaml +++ b/samples/server/petstore/go-chi-server/api/openapi.yaml @@ -250,6 +250,34 @@ paths: tags: - pet /pet/{petId}/uploadImage: + get: + description: Returns the image for the Pet that has been previously uploaded + operationId: getPetImageById + parameters: + - description: ID of pet to return + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + responses: + "200": + content: + image/jpeg: + schema: + format: binary + type: string + description: successful operation + "400": + description: Invalid ID supplied + "404": + description: Pet not found + summary: Returns the image for the Pet that has been previously uploaded + tags: + - pet post: description: "" operationId: uploadFile diff --git a/samples/server/petstore/go-chi-server/go/api.go b/samples/server/petstore/go-chi-server/go/api.go index 0f6f14dea75f..4c5af3371330 100644 --- a/samples/server/petstore/go-chi-server/go/api.go +++ b/samples/server/petstore/go-chi-server/go/api.go @@ -27,6 +27,7 @@ type PetAPIRouter interface { // Deprecated FindPetsByTags(http.ResponseWriter, *http.Request) GetPetById(http.ResponseWriter, *http.Request) + GetPetImageById(http.ResponseWriter, *http.Request) UpdatePet(http.ResponseWriter, *http.Request) UpdatePetWithForm(http.ResponseWriter, *http.Request) UploadFile(http.ResponseWriter, *http.Request) @@ -66,6 +67,7 @@ type PetAPIServicer interface { // Deprecated FindPetsByTags(context.Context, []string) (ImplResponse, error) GetPetById(context.Context, int64) (ImplResponse, error) + GetPetImageById(context.Context, int64) (ImplResponse, error) UpdatePet(context.Context, Pet) (ImplResponse, error) UpdatePetWithForm(context.Context, int64, string, string) (ImplResponse, error) UploadFile(context.Context, int64, string, *os.File) (ImplResponse, error) diff --git a/samples/server/petstore/go-chi-server/go/api_pet.go b/samples/server/petstore/go-chi-server/go/api_pet.go index 0efd81a77e9f..9c989cfc22fe 100644 --- a/samples/server/petstore/go-chi-server/go/api_pet.go +++ b/samples/server/petstore/go-chi-server/go/api_pet.go @@ -75,6 +75,11 @@ func (c *PetAPIController) Routes() Routes { "/v2/pet/{petId}", c.GetPetById, }, + "GetPetImageById": Route{ + strings.ToUpper("Get"), + "/v2/pet/{petId}/uploadImage", + c.GetPetImageById, + }, "UpdatePet": Route{ strings.ToUpper("Put"), "/v2/pet", @@ -190,6 +195,26 @@ func (c *PetAPIController) GetPetById(w http.ResponseWriter, r *http.Request) { EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } +// GetPetImageById - Returns the image for the Pet that has been previously uploaded +func (c *PetAPIController) GetPetImageById(w http.ResponseWriter, r *http.Request) { + petIdParam, err := parseNumericParameter[int64]( + chi.URLParam(r, "petId"), + WithRequire[int64](parseInt64), + ) + if err != nil { + c.errorHandler(w, r, &ParsingError{Err: err}, nil) + return + } + result, err := c.service.GetPetImageById(r.Context(), petIdParam) + // If an error occurred, encode the error with the status code + if err != nil { + c.errorHandler(w, r, err, &result) + return + } + // If no error, encode the body and the result code + EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) +} + // UpdatePet - Update an existing pet func (c *PetAPIController) UpdatePet(w http.ResponseWriter, r *http.Request) { petParam := Pet{} diff --git a/samples/server/petstore/go-chi-server/go/api_pet_service.go b/samples/server/petstore/go-chi-server/go/api_pet_service.go index bda4cd897526..89dda23e7a47 100644 --- a/samples/server/petstore/go-chi-server/go/api_pet_service.go +++ b/samples/server/petstore/go-chi-server/go/api_pet_service.go @@ -98,6 +98,23 @@ func (s *PetAPIService) GetPetById(ctx context.Context, petId int64) (ImplRespon return Response(http.StatusNotImplemented, nil), errors.New("GetPetById method not implemented") } +// GetPetImageById - Returns the image for the Pet that has been previously uploaded +func (s *PetAPIService) GetPetImageById(ctx context.Context, petId int64) (ImplResponse, error) { + // TODO - update GetPetImageById with the required logic for this service method. + // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. + + // TODO: Uncomment the next line to return response Response(200, *os.File{}) or use other options such as http.Ok ... + // return Response(200, *os.File{}), nil + + // TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... + // return Response(400, nil),nil + + // TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ... + // return Response(404, nil),nil + + return Response(http.StatusNotImplemented, nil), errors.New("GetPetImageById method not implemented") +} + // UpdatePet - Update an existing pet func (s *PetAPIService) UpdatePet(ctx context.Context, pet Pet) (ImplResponse, error) { // TODO - update UpdatePet with the required logic for this service method. From c37c812343ca73aa79e61b22b6f91b1677076979 Mon Sep 17 00:00:00 2001 From: Ian Cubbon Date: Mon, 16 Oct 2023 15:54:27 -0700 Subject: [PATCH 4/4] Regenerate after merging main --- .../server/petstore/go/go-petstore/go/routers.go | 11 +++++------ samples/server/petstore/go-api-server/go/routers.go | 9 ++++----- samples/server/petstore/go-chi-server/go/routers.go | 11 +++++------ 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/samples/openapi3/server/petstore/go/go-petstore/go/routers.go b/samples/openapi3/server/petstore/go/go-petstore/go/routers.go index cd88e4f38c1a..4e6f1007f44a 100644 --- a/samples/openapi3/server/petstore/go/go-petstore/go/routers.go +++ b/samples/openapi3/server/petstore/go/go-petstore/go/routers.go @@ -12,21 +12,20 @@ package petstoreserver import ( "encoding/json" "errors" + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" "io" "mime/multipart" "net/http" "os" "strconv" "strings" - - "github.com/go-chi/chi/v5" - "github.com/go-chi/chi/v5/middleware" ) // A Route defines the parameters for an api endpoint type Route struct { - Method string - Pattern string + Method string + Pattern string HandlerFunc http.HandlerFunc } @@ -147,7 +146,7 @@ func readFileHeaderToTempFile(fileHeader *multipart.FileHeader) (*os.File, error if err != nil { return nil, err } - + return file, nil } diff --git a/samples/server/petstore/go-api-server/go/routers.go b/samples/server/petstore/go-api-server/go/routers.go index 8978fb41e621..ec25be4df67e 100644 --- a/samples/server/petstore/go-api-server/go/routers.go +++ b/samples/server/petstore/go-api-server/go/routers.go @@ -12,20 +12,19 @@ package petstoreserver import ( "encoding/json" "errors" + "github.com/gorilla/mux" "io" "mime/multipart" "net/http" "os" "strconv" "strings" - - "github.com/gorilla/mux" ) // A Route defines the parameters for an api endpoint type Route struct { - Method string - Pattern string + Method string + Pattern string HandlerFunc http.HandlerFunc } @@ -151,7 +150,7 @@ func readFileHeaderToTempFile(fileHeader *multipart.FileHeader) (*os.File, error if err != nil { return nil, err } - + return file, nil } diff --git a/samples/server/petstore/go-chi-server/go/routers.go b/samples/server/petstore/go-chi-server/go/routers.go index cd88e4f38c1a..4e6f1007f44a 100644 --- a/samples/server/petstore/go-chi-server/go/routers.go +++ b/samples/server/petstore/go-chi-server/go/routers.go @@ -12,21 +12,20 @@ package petstoreserver import ( "encoding/json" "errors" + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" "io" "mime/multipart" "net/http" "os" "strconv" "strings" - - "github.com/go-chi/chi/v5" - "github.com/go-chi/chi/v5/middleware" ) // A Route defines the parameters for an api endpoint type Route struct { - Method string - Pattern string + Method string + Pattern string HandlerFunc http.HandlerFunc } @@ -147,7 +146,7 @@ func readFileHeaderToTempFile(fileHeader *multipart.FileHeader) (*os.File, error if err != nil { return nil, err } - + return file, nil }