Skip to content

Commit d08f8db

Browse files
fix: Use type name instead of full type declaration (#5679)
* fix: Use type name instead of full type declaration * add response for standalone echo service to utilize fix
1 parent ddde420 commit d08f8db

File tree

12 files changed

+448
-15
lines changed

12 files changed

+448
-15
lines changed

examples/internal/clients/unannotatedecho/api/swagger.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,38 @@ paths:
427427
description: "An unexpected error response."
428428
schema:
429429
$ref: "#/definitions/rpcStatus"
430+
/v1/example/echo_nested:
431+
put:
432+
tags:
433+
- "UnannotatedEchoService"
434+
summary: "EchoNested method receives a simple message and returns it."
435+
operationId: "UnannotatedEchoService_EchoNested"
436+
parameters:
437+
- in: "body"
438+
name: "body"
439+
description: "A simple message with many types"
440+
required: true
441+
schema:
442+
$ref: "#/definitions/examplepbUnannotatedSimpleMessage"
443+
x-exportParamName: "Body"
444+
responses:
445+
200:
446+
description: ""
447+
schema:
448+
$ref: "#/definitions/examplepbUnannotatedNestedMessage"
449+
403:
450+
description: "Returned when the user does not have permission to access\
451+
\ the resource."
452+
schema: {}
453+
404:
454+
description: "Returned when the resource does not exist."
455+
schema:
456+
type: "string"
457+
format: "string"
458+
default:
459+
description: "An unexpected error response."
460+
schema:
461+
$ref: "#/definitions/rpcStatus"
430462
securityDefinitions:
431463
ApiKeyAuth:
432464
type: "apiKey"
@@ -459,6 +491,9 @@ definitions:
459491
type: "string"
460492
val:
461493
type: "string"
494+
example:
495+
val: "val"
496+
nId: "nId"
462497
x-go-type:
463498
import:
464499
package: "github.com/grpc-ecosystem/grpc-gateway/v2/examples/internal/proto/examplepb"

examples/internal/clients/unannotatedecho/api_unannotated_echo_service.go

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -776,3 +776,138 @@ func (a *UnannotatedEchoServiceApiService) UnannotatedEchoServiceEchoDelete(ctx
776776

777777
return localVarReturnValue, localVarHttpResponse, nil
778778
}
779+
780+
/*
781+
UnannotatedEchoServiceApiService EchoNested method receives a simple message and returns it.
782+
* @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
783+
* @param body A simple message with many types
784+
785+
@return ExamplepbUnannotatedNestedMessage
786+
*/
787+
func (a *UnannotatedEchoServiceApiService) UnannotatedEchoServiceEchoNested(ctx context.Context, body ExamplepbUnannotatedSimpleMessage) (ExamplepbUnannotatedNestedMessage, *http.Response, error) {
788+
var (
789+
localVarHttpMethod = strings.ToUpper("Put")
790+
localVarPostBody interface{}
791+
localVarFileName string
792+
localVarFileBytes []byte
793+
localVarReturnValue ExamplepbUnannotatedNestedMessage
794+
)
795+
796+
// create path and map variables
797+
localVarPath := a.client.cfg.BasePath + "/v1/example/echo_nested"
798+
799+
localVarHeaderParams := make(map[string]string)
800+
localVarQueryParams := url.Values{}
801+
localVarFormParams := url.Values{}
802+
803+
// to determine the Content-Type header
804+
localVarHttpContentTypes := []string{"application/json", "application/x-foo-mime"}
805+
806+
// set Content-Type header
807+
localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
808+
if localVarHttpContentType != "" {
809+
localVarHeaderParams["Content-Type"] = localVarHttpContentType
810+
}
811+
812+
// to determine the Accept header
813+
localVarHttpHeaderAccepts := []string{"application/json", "application/x-foo-mime"}
814+
815+
// set Accept header
816+
localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
817+
if localVarHttpHeaderAccept != "" {
818+
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
819+
}
820+
// body params
821+
localVarPostBody = &body
822+
if ctx != nil {
823+
// API Key Authentication
824+
if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
825+
var key string
826+
if auth.Prefix != "" {
827+
key = auth.Prefix + " " + auth.Key
828+
} else {
829+
key = auth.Key
830+
}
831+
localVarHeaderParams["X-API-Key"] = key
832+
833+
}
834+
}
835+
r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
836+
if err != nil {
837+
return localVarReturnValue, nil, err
838+
}
839+
840+
localVarHttpResponse, err := a.client.callAPI(r)
841+
if err != nil || localVarHttpResponse == nil {
842+
return localVarReturnValue, localVarHttpResponse, err
843+
}
844+
845+
localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body)
846+
localVarHttpResponse.Body.Close()
847+
if err != nil {
848+
return localVarReturnValue, localVarHttpResponse, err
849+
}
850+
851+
if localVarHttpResponse.StatusCode < 300 {
852+
// If we succeed, return the data, otherwise pass on to decode error.
853+
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
854+
if err == nil {
855+
return localVarReturnValue, localVarHttpResponse, err
856+
}
857+
}
858+
859+
if localVarHttpResponse.StatusCode >= 300 {
860+
newErr := GenericSwaggerError{
861+
body: localVarBody,
862+
error: localVarHttpResponse.Status,
863+
}
864+
865+
if localVarHttpResponse.StatusCode == 200 {
866+
var v ExamplepbUnannotatedNestedMessage
867+
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
868+
if err != nil {
869+
newErr.error = err.Error()
870+
return localVarReturnValue, localVarHttpResponse, newErr
871+
}
872+
newErr.model = v
873+
return localVarReturnValue, localVarHttpResponse, newErr
874+
}
875+
876+
if localVarHttpResponse.StatusCode == 403 {
877+
var v interface{}
878+
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
879+
if err != nil {
880+
newErr.error = err.Error()
881+
return localVarReturnValue, localVarHttpResponse, newErr
882+
}
883+
newErr.model = v
884+
return localVarReturnValue, localVarHttpResponse, newErr
885+
}
886+
887+
if localVarHttpResponse.StatusCode == 404 {
888+
var v string
889+
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
890+
if err != nil {
891+
newErr.error = err.Error()
892+
return localVarReturnValue, localVarHttpResponse, newErr
893+
}
894+
newErr.model = v
895+
return localVarReturnValue, localVarHttpResponse, newErr
896+
}
897+
898+
if localVarHttpResponse.StatusCode == 0 {
899+
var v RpcStatus
900+
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
901+
if err != nil {
902+
newErr.error = err.Error()
903+
return localVarReturnValue, localVarHttpResponse, newErr
904+
}
905+
newErr.model = v
906+
return localVarReturnValue, localVarHttpResponse, newErr
907+
}
908+
909+
return localVarReturnValue, localVarHttpResponse, newErr
910+
}
911+
912+
return localVarReturnValue, localVarHttpResponse, nil
913+
}

examples/internal/proto/examplepb/standalone_echo_service.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ http:
1515
body: "*"
1616
- selector: grpc.gateway.examples.internal.proto.examplepb.UnannotatedEchoService.EchoDelete
1717
delete: "/v2/example/echo_delete"
18+
- selector: grpc.gateway.examples.internal.proto.examplepb.UnannotatedEchoService.EchoNested
19+
put: "/v1/example/echo_nested"
20+
body: "*"
21+
response_body: "n_id"

examples/internal/proto/examplepb/unannotated_echo_service.pb.go

Lines changed: 26 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/internal/proto/examplepb/unannotated_echo_service.pb.gw.go

Lines changed: 75 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/internal/proto/examplepb/unannotated_echo_service.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,7 @@ service UnannotatedEchoService {
5959

6060
// EchoDelete method receives a simple message and returns it.
6161
rpc EchoDelete(UnannotatedSimpleMessage) returns (UnannotatedSimpleMessage);
62+
63+
// EchoNested method receives a simple message and returns it.
64+
rpc EchoNested(UnannotatedSimpleMessage) returns (UnannotatedSimpleMessage);
6265
}

0 commit comments

Comments
 (0)