diff options
| author | Jeff Carr <[email protected]> | 2025-10-07 00:35:37 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-07 00:35:37 -0500 |
| commit | d94113ae104ad5d79302e74a11f5a309a82e34de (patch) | |
| tree | cfb751019f0f3c7c3b60c7e7a5f15464668c8932 /findFilename.go | |
| parent | b695089179b9003375a8c51ce45efeaffcc2e816 (diff) | |
send errors. also, check 'Filename' and 'filename'
Diffstat (limited to 'findFilename.go')
| -rw-r--r-- | findFilename.go | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/findFilename.go b/findFilename.go index d69b538..c99e289 100644 --- a/findFilename.go +++ b/findFilename.go @@ -1,6 +1,8 @@ package config import ( + "fmt" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" ) @@ -8,8 +10,8 @@ import ( // Gemini AI can help author some pretty good protobuf code. // I never remember the syntax for 'reflect' on these things. -// returns "Filename" if it exists in the protobuf -func GetFilename(pb proto.Message) (string, bool) { +// this will try both "filename" and "Filename" +func GetFilename(pb proto.Message) (string, error) { // 1. Get the protoreflect.Message interface from the message. // This is the entry point to the reflection API. msg := pb.ProtoReflect() @@ -19,18 +21,24 @@ func GetFilename(pb proto.Message) (string, bool) { // 3. Find the specific field descriptor by its protobuf name ("Filename"). // Note: The field name must match the name in the .proto file. - fieldName := protoreflect.Name("Filename") + fieldName := protoreflect.Name("filename") fieldDescriptor := descriptor.Fields().ByName(fieldName) + // try upper case + if fieldDescriptor == nil { + fieldName = protoreflect.Name("Filename") + fieldDescriptor = descriptor.Fields().ByName(fieldName) + } + // 4. Check if the field was found. If not, return false. if fieldDescriptor == nil { - return "", false + return "", fmt.Errorf("fieldDescriptor == nil") } // 5. (Optional but recommended) Verify the field is a string type. if fieldDescriptor.Kind() != protoreflect.StringKind { // The field exists but is not a string, so we can't return it as one. - return "", false + return "", fmt.Errorf("The field exists but is not a string") } // 6. If the field exists and is a string, get its value. @@ -38,7 +46,7 @@ func GetFilename(pb proto.Message) (string, bool) { value := msg.Get(fieldDescriptor) // 7. Convert the protoreflect.Value to a native Go string. - return value.String(), true + return value.String(), nil } // sets "Filename" if it exists in the protobuf |
