in oss/client.go [1186:1217]
func unmarshalHeaderLite(result any, output *OperationOutput) error {
val := reflect.ValueOf(result)
switch val.Kind() {
case reflect.Pointer, reflect.Interface:
if val.IsNil() {
return nil
}
val = val.Elem()
}
if val.Kind() != reflect.Struct || output == nil {
return nil
}
t := val.Type()
for k := 0; k < t.NumField(); k++ {
if tag := t.Field(k).Tag.Get("output"); tag != "" {
tokens := strings.Split(tag, ",")
if len(tokens) != 2 {
continue
}
switch tokens[0] {
case "header":
if src := output.Headers.Get(tokens[1]); src != "" {
if err := setReflectValue(val.Field(k), src); err != nil {
return err
}
}
}
}
}
return nil
}