in api-generator/main.go [440:481]
func buildMessageField(field *descriptor.FieldDescriptorProto) (*ptype.Field, error) {
var oneofIndex int32
if field.OneofIndex != nil {
oneofIndex = *field.OneofIndex + 1
}
var typeURL string
if field.TypeName != nil {
typeURL = fmt.Sprintf("type.googleapis.com/%s", *field.TypeName)
}
options := make([]*ptype.Option, 0)
options, err := buildFieldOptions(field.Options, options)
if err != nil {
return nil, errors.Wrap(err, "could not process field options")
}
kind := ptype.Field_TYPE_UNKNOWN
if field.Type != nil {
kind = ptype.Field_Kind(*field.Type)
}
cardinality := ptype.Field_CARDINALITY_UNKNOWN
if field.Label != nil {
cardinality = ptype.Field_Cardinality(*field.Label)
}
result := &ptype.Field{
Kind: kind,
Cardinality: cardinality,
Number: field.GetNumber(),
Name: field.GetName(),
TypeUrl: typeURL,
OneofIndex: oneofIndex,
Packed: field.Options.GetPacked(),
Options: options,
JsonName: field.GetJsonName(),
DefaultValue: field.GetDefaultValue(),
}
return result, nil
}