Skip to content

Commit

Permalink
internal/descriptor: add support for proto3 optional
Browse files Browse the repository at this point in the history
  • Loading branch information
adambabik committed Feb 11, 2021
1 parent 756c77b commit 4700507
Show file tree
Hide file tree
Showing 12 changed files with 734 additions and 663 deletions.
25 changes: 15 additions & 10 deletions examples/internal/clients/abe/api/swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -403,11 +403,11 @@ paths:
type: "string"
x-exportParamName: "OutputOnlyStringViaFieldBehaviorAnnotation"
x-optionalDataType: "String"
- name: "optionalString"
- name: "optionalStringValue"
in: "query"
required: false
type: "string"
x-exportParamName: "OptionalString"
x-exportParamName: "OptionalStringValue"
x-optionalDataType: "String"
responses:
200:
Expand Down Expand Up @@ -720,11 +720,11 @@ paths:
type: "string"
x-exportParamName: "OutputOnlyStringViaFieldBehaviorAnnotation"
x-optionalDataType: "String"
- name: "optionalString"
- name: "optionalStringValue"
in: "query"
required: false
type: "string"
x-exportParamName: "OptionalString"
x-exportParamName: "OptionalStringValue"
x-optionalDataType: "String"
responses:
200:
Expand Down Expand Up @@ -1024,11 +1024,11 @@ paths:
type: "string"
x-exportParamName: "OutputOnlyStringViaFieldBehaviorAnnotation"
x-optionalDataType: "String"
- name: "optionalString"
- name: "optionalStringValue"
in: "query"
required: false
type: "string"
x-exportParamName: "OptionalString"
x-exportParamName: "OptionalStringValue"
x-optionalDataType: "String"
responses:
200:
Expand Down Expand Up @@ -1348,11 +1348,11 @@ paths:
type: "string"
x-exportParamName: "OutputOnlyStringViaFieldBehaviorAnnotation"
x-optionalDataType: "String"
- name: "optionalString"
- name: "optionalStringValue"
in: "query"
required: false
type: "string"
x-exportParamName: "OptionalString"
x-exportParamName: "OptionalStringValue"
x-optionalDataType: "String"
responses:
200:
Expand Down Expand Up @@ -1384,7 +1384,7 @@ paths:
description: "Find out more about GetQuery"
url: "https://github.com/grpc-ecosystem/grpc-gateway"
deprecated: true
? /v1/example/a_bit_of_everything/{floatValue}/{doubleValue}/{int64Value}/separator/{uint64Value}/{int32Value}/{fixed64Value}/{fixed32Value}/{boolValue}/{stringValue}/{uint32Value}/{sfixed32Value}/{sfixed64Value}/{sint32Value}/{sint64Value}/{nonConventionalNameValue}/{enumValue}/{pathEnumValue}/{nestedPathEnumValue}/{enumValueAnnotation}
? /v1/example/a_bit_of_everything/{floatValue}/{doubleValue}/{int64Value}/separator/{uint64Value}/{int32Value}/{fixed64Value}/{fixed32Value}/{boolValue}/{stringValue}/{uint32Value}/{sfixed32Value}/{sfixed64Value}/{sint32Value}/{sint64Value}/{nonConventionalNameValue}/{enumValue}/{pathEnumValue}/{nestedPathEnumValue}/{enumValueAnnotation}/{optionalStringValue}
: post:
tags:
- "ABitOfEverythingService"
Expand Down Expand Up @@ -1514,6 +1514,11 @@ paths:
- "ZERO"
- "ONE"
x-exportParamName: "EnumValueAnnotation"
- name: "optionalStringValue"
in: "path"
required: true
type: "string"
x-exportParamName: "OptionalStringValue"
responses:
200:
description: "A successful response."
Expand Down Expand Up @@ -2722,7 +2727,7 @@ definitions:
type: "string"
title: "mark a field as readonly in Open API definition"
readOnly: true
optionalString:
optionalStringValue:
type: "string"
externalDocs:
description: "Find out more about ABitOfEverything"
Expand Down
38 changes: 20 additions & 18 deletions examples/internal/clients/abe/api_a_bit_of_everything_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ ABitOfEverythingServiceApiService
* @param "NestedAnnotationOk" (optional.String) - DeepEnum description. - FALSE: FALSE is false. - TRUE: TRUE is true.
* @param "Int64OverrideType" (optional.Int64) -
* @param "OutputOnlyStringViaFieldBehaviorAnnotation" (optional.String) - mark a field as readonly in Open API definition.
* @param "OptionalString" (optional.String) -
* @param "OptionalStringValue" (optional.String) -
@return ExamplepbABitOfEverything
*/
Expand Down Expand Up @@ -260,7 +260,7 @@ type ABitOfEverythingServiceCheckGetQueryParamsOpts struct {
NestedAnnotationOk optional.String
Int64OverrideType optional.Int64
OutputOnlyStringViaFieldBehaviorAnnotation optional.String
OptionalString optional.String
OptionalStringValue optional.String
}

func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckGetQueryParams(ctx context.Context, singleNestedName string, floatValue float32, requiredStringViaFieldBehaviorAnnotation string, localVarOptionals *ABitOfEverythingServiceCheckGetQueryParamsOpts) (ExamplepbABitOfEverything, *http.Response, error) {
Expand Down Expand Up @@ -378,8 +378,8 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckGetQuery
if localVarOptionals != nil && localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.IsSet() {
localVarQueryParams.Add("outputOnlyStringViaFieldBehaviorAnnotation", parameterToString(localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.Value(), ""))
}
if localVarOptionals != nil && localVarOptionals.OptionalString.IsSet() {
localVarQueryParams.Add("optionalString", parameterToString(localVarOptionals.OptionalString.Value(), ""))
if localVarOptionals != nil && localVarOptionals.OptionalStringValue.IsSet() {
localVarQueryParams.Add("optionalStringValue", parameterToString(localVarOptionals.OptionalStringValue.Value(), ""))
}
// to determine the Content-Type header
localVarHttpContentTypes := []string{"application/json", "application/x-foo-mime"}
Expand Down Expand Up @@ -552,7 +552,7 @@ ABitOfEverythingServiceApiService
* @param "NestedAnnotationAmount" (optional.Int64) -
* @param "Int64OverrideType" (optional.Int64) -
* @param "OutputOnlyStringViaFieldBehaviorAnnotation" (optional.String) - mark a field as readonly in Open API definition.
* @param "OptionalString" (optional.String) -
* @param "OptionalStringValue" (optional.String) -
@return ExamplepbABitOfEverything
*/
Expand Down Expand Up @@ -590,7 +590,7 @@ type ABitOfEverythingServiceCheckNestedEnumGetQueryParamsOpts struct {
NestedAnnotationAmount optional.Int64
Int64OverrideType optional.Int64
OutputOnlyStringViaFieldBehaviorAnnotation optional.String
OptionalString optional.String
OptionalStringValue optional.String
}

func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckNestedEnumGetQueryParams(ctx context.Context, singleNestedOk string, floatValue float32, requiredStringViaFieldBehaviorAnnotation string, localVarOptionals *ABitOfEverythingServiceCheckNestedEnumGetQueryParamsOpts) (ExamplepbABitOfEverything, *http.Response, error) {
Expand Down Expand Up @@ -708,8 +708,8 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckNestedEn
if localVarOptionals != nil && localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.IsSet() {
localVarQueryParams.Add("outputOnlyStringViaFieldBehaviorAnnotation", parameterToString(localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.Value(), ""))
}
if localVarOptionals != nil && localVarOptionals.OptionalString.IsSet() {
localVarQueryParams.Add("optionalString", parameterToString(localVarOptionals.OptionalString.Value(), ""))
if localVarOptionals != nil && localVarOptionals.OptionalStringValue.IsSet() {
localVarQueryParams.Add("optionalStringValue", parameterToString(localVarOptionals.OptionalStringValue.Value(), ""))
}
// to determine the Content-Type header
localVarHttpContentTypes := []string{"application/json", "application/x-foo-mime"}
Expand Down Expand Up @@ -881,7 +881,7 @@ ABitOfEverythingServiceApiService
* @param "NestedAnnotationOk" (optional.String) - DeepEnum description. - FALSE: FALSE is false. - TRUE: TRUE is true.
* @param "Int64OverrideType" (optional.Int64) -
* @param "OutputOnlyStringViaFieldBehaviorAnnotation" (optional.String) - mark a field as readonly in Open API definition.
* @param "OptionalString" (optional.String) -
* @param "OptionalStringValue" (optional.String) -
@return ExamplepbABitOfEverything
*/
Expand Down Expand Up @@ -917,7 +917,7 @@ type ABitOfEverythingServiceCheckPostQueryParamsOpts struct {
NestedAnnotationOk optional.String
Int64OverrideType optional.Int64
OutputOnlyStringViaFieldBehaviorAnnotation optional.String
OptionalString optional.String
OptionalStringValue optional.String
}

func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckPostQueryParams(ctx context.Context, stringValue string, body ABitOfEverythingNested, floatValue float32, requiredStringViaFieldBehaviorAnnotation string, localVarOptionals *ABitOfEverythingServiceCheckPostQueryParamsOpts) (ExamplepbABitOfEverything, *http.Response, error) {
Expand Down Expand Up @@ -1029,8 +1029,8 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckPostQuer
if localVarOptionals != nil && localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.IsSet() {
localVarQueryParams.Add("outputOnlyStringViaFieldBehaviorAnnotation", parameterToString(localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.Value(), ""))
}
if localVarOptionals != nil && localVarOptionals.OptionalString.IsSet() {
localVarQueryParams.Add("optionalString", parameterToString(localVarOptionals.OptionalString.Value(), ""))
if localVarOptionals != nil && localVarOptionals.OptionalStringValue.IsSet() {
localVarQueryParams.Add("optionalStringValue", parameterToString(localVarOptionals.OptionalStringValue.Value(), ""))
}
// to determine the Content-Type header
localVarHttpContentTypes := []string{"application/json", "application/x-foo-mime"}
Expand Down Expand Up @@ -1343,10 +1343,11 @@ This API creates a new ABitOfEverything
* @param pathEnumValue
* @param nestedPathEnumValue
* @param enumValueAnnotation Numeric enum description.
* @param optionalStringValue
@return ExamplepbABitOfEverything
*/
func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCreate(ctx context.Context, floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string, enumValue string, pathEnumValue string, nestedPathEnumValue string, enumValueAnnotation string) (ExamplepbABitOfEverything, *http.Response, error) {
func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCreate(ctx context.Context, floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string, enumValue string, pathEnumValue string, nestedPathEnumValue string, enumValueAnnotation string, optionalStringValue string) (ExamplepbABitOfEverything, *http.Response, error) {
var (
localVarHttpMethod = strings.ToUpper("Post")
localVarPostBody interface{}
Expand All @@ -1356,7 +1357,7 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCreate(ctx co
)

// create path and map variables
localVarPath := a.client.cfg.BasePath + "/v1/example/a_bit_of_everything/{floatValue}/{doubleValue}/{int64Value}/separator/{uint64Value}/{int32Value}/{fixed64Value}/{fixed32Value}/{boolValue}/{stringValue}/{uint32Value}/{sfixed32Value}/{sfixed64Value}/{sint32Value}/{sint64Value}/{nonConventionalNameValue}/{enumValue}/{pathEnumValue}/{nestedPathEnumValue}/{enumValueAnnotation}"
localVarPath := a.client.cfg.BasePath + "/v1/example/a_bit_of_everything/{floatValue}/{doubleValue}/{int64Value}/separator/{uint64Value}/{int32Value}/{fixed64Value}/{fixed32Value}/{boolValue}/{stringValue}/{uint32Value}/{sfixed32Value}/{sfixed64Value}/{sint32Value}/{sint64Value}/{nonConventionalNameValue}/{enumValue}/{pathEnumValue}/{nestedPathEnumValue}/{enumValueAnnotation}/{optionalStringValue}"
localVarPath = strings.Replace(localVarPath, "{"+"floatValue"+"}", fmt.Sprintf("%v", floatValue), -1)
localVarPath = strings.Replace(localVarPath, "{"+"doubleValue"+"}", fmt.Sprintf("%v", doubleValue), -1)
localVarPath = strings.Replace(localVarPath, "{"+"int64Value"+"}", fmt.Sprintf("%v", int64Value), -1)
Expand All @@ -1376,6 +1377,7 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCreate(ctx co
localVarPath = strings.Replace(localVarPath, "{"+"pathEnumValue"+"}", fmt.Sprintf("%v", pathEnumValue), -1)
localVarPath = strings.Replace(localVarPath, "{"+"nestedPathEnumValue"+"}", fmt.Sprintf("%v", nestedPathEnumValue), -1)
localVarPath = strings.Replace(localVarPath, "{"+"enumValueAnnotation"+"}", fmt.Sprintf("%v", enumValueAnnotation), -1)
localVarPath = strings.Replace(localVarPath, "{"+"optionalStringValue"+"}", fmt.Sprintf("%v", optionalStringValue), -1)

localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
Expand Down Expand Up @@ -2507,7 +2509,7 @@ ABitOfEverythingServiceApiService
* @param "NestedAnnotationOk" (optional.String) - DeepEnum description. - FALSE: FALSE is false. - TRUE: TRUE is true.
* @param "Int64OverrideType" (optional.Int64) -
* @param "OutputOnlyStringViaFieldBehaviorAnnotation" (optional.String) - mark a field as readonly in Open API definition.
* @param "OptionalString" (optional.String) -
* @param "OptionalStringValue" (optional.String) -
@return interface{}
*/
Expand Down Expand Up @@ -2546,7 +2548,7 @@ type ABitOfEverythingServiceGetQueryOpts struct {
NestedAnnotationOk optional.String
Int64OverrideType optional.Int64
OutputOnlyStringViaFieldBehaviorAnnotation optional.String
OptionalString optional.String
OptionalStringValue optional.String
}

func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceGetQuery(ctx context.Context, uuid string, floatValue float32, requiredStringViaFieldBehaviorAnnotation string, localVarOptionals *ABitOfEverythingServiceGetQueryOpts) (interface{}, *http.Response, error) {
Expand Down Expand Up @@ -2667,8 +2669,8 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceGetQuery(ctx
if localVarOptionals != nil && localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.IsSet() {
localVarQueryParams.Add("outputOnlyStringViaFieldBehaviorAnnotation", parameterToString(localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.Value(), ""))
}
if localVarOptionals != nil && localVarOptionals.OptionalString.IsSet() {
localVarQueryParams.Add("optionalString", parameterToString(localVarOptionals.OptionalString.Value(), ""))
if localVarOptionals != nil && localVarOptionals.OptionalStringValue.IsSet() {
localVarQueryParams.Add("optionalStringValue", parameterToString(localVarOptionals.OptionalStringValue.Value(), ""))
}
// to determine the Content-Type header
localVarHttpContentTypes := []string{"application/json", "application/x-foo-mime"}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,5 @@ type ExamplepbABitOfEverything struct {
Int64OverrideType int64 `json:"int64OverrideType,omitempty"`
RequiredStringViaFieldBehaviorAnnotation string `json:"requiredStringViaFieldBehaviorAnnotation"`
OutputOnlyStringViaFieldBehaviorAnnotation string `json:"outputOnlyStringViaFieldBehaviorAnnotation,omitempty"`
OptionalString string `json:"optionalString,omitempty"`
OptionalStringValue string `json:"optionalStringValue,omitempty"`
}
1 change: 1 addition & 0 deletions examples/internal/integration/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ func testABEClientCreate(t *testing.T, cl *abe.APIClient) {
want.PathEnumValue.String(),
want.NestedPathEnumValue.String(),
want.EnumValueAnnotation.String(),
want.OptionalStringValue,
)
if err != nil {
t.Fatalf("cl.Create(%#v) failed with %v; want success", want, err)
Expand Down
Loading

0 comments on commit 4700507

Please sign in to comment.