prepare_v4 (#199)
All checks were successful
test / test (push) Successful in 1m56s

move to v4 micro

Co-authored-by: Vasiliy Tolstov <v.tolstov@unistack.org>
Reviewed-on: #199
Co-authored-by: Evstigneev Denis <danteevstigneev@yandex.ru>
Co-committed-by: Evstigneev Denis <danteevstigneev@yandex.ru>
This commit was merged in pull request #199.
This commit is contained in:
2025-03-02 12:33:55 +03:00
parent 707476bbd4
commit 76bf0520c0
22 changed files with 225 additions and 537 deletions

55
util.go
View File

@@ -5,8 +5,8 @@ import (
"net/http"
"strings"
"go.unistack.org/micro/v3/metadata"
rutil "go.unistack.org/micro/v3/util/reflect"
"go.unistack.org/micro/v4/metadata"
rutil "go.unistack.org/micro/v4/util/reflect"
)
func FillRequest(ctx context.Context, req interface{}, opts ...FillRequestOption) error {
@@ -15,39 +15,52 @@ func FillRequest(ctx context.Context, req interface{}, opts ...FillRequestOption
for _, o := range opts {
o(&options)
}
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
return nil
}
for idx := 0; idx < len(options.headers)/2; idx += 2 {
k := http.CanonicalHeaderKey(options.headers[idx])
v, ok := md[k]
k := options.headers[idx]
v, ok := md.Get(k)
if !ok {
continue
}
if err = rutil.SetFieldByPath(req, v, k); err != nil {
if len(v) == 1 {
err = rutil.SetFieldByPath(req, v[0], k)
} else {
err = rutil.SetFieldByPath(req, v, k)
}
if err != nil {
return err
}
}
cookies := strings.Split(md["Cookie"], ";")
cmd := make(map[string]string, len(cookies))
for _, cookie := range cookies {
kv := strings.Split(cookie, "=")
if len(kv) != 2 {
continue
cookieVals, _ := md.Get("Cookie")
for i := range cookieVals {
cookies := strings.Split(cookieVals[i], ";")
cmd := make(map[string]string, len(cookies))
for _, cookie := range cookies {
kv := strings.Split(cookie, "=")
if len(kv) != 2 {
continue
}
cmd[strings.TrimSpace(kv[0])] = strings.TrimSpace(kv[1])
}
cmd[strings.TrimSpace(kv[0])] = strings.TrimSpace(kv[1])
}
for idx := 0; idx < len(options.cookies)/2; idx += 2 {
k := http.CanonicalHeaderKey(options.cookies[idx])
v, ok := cmd[k]
if !ok {
continue
}
if err = rutil.SetFieldByPath(req, v, k); err != nil {
return err
for idx := 0; idx < len(options.cookies)/2; idx += 2 {
k := http.CanonicalHeaderKey(options.cookies[idx])
v, ok := cmd[k]
if !ok {
continue
}
err = rutil.SetFieldByPath(req, v, k)
if err != nil {
return err
}
}
}