prepare_v4 #199
20
util.go
20
util.go
@@ -15,23 +15,30 @@ func FillRequest(ctx context.Context, req interface{}, opts ...FillRequestOption
|
|||||||
for _, o := range opts {
|
for _, o := range opts {
|
||||||
o(&options)
|
o(&options)
|
||||||
}
|
}
|
||||||
|
|
||||||
md, ok := metadata.FromIncomingContext(ctx)
|
md, ok := metadata.FromIncomingContext(ctx)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
for idx := 0; idx < len(options.headers)/2; idx += 2 {
|
for idx := 0; idx < len(options.headers)/2; idx += 2 {
|
||||||
k := http.CanonicalHeaderKey(options.headers[idx])
|
k := options.headers[idx]
|
||||||
v, ok := md[k]
|
v, ok := md.Get(k)
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
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
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cookieVals, _ := md["Cookie"]
|
cookieVals, _ := md.Get("Cookie")
|
||||||
for i := range cookieVals {
|
for i := range cookieVals {
|
||||||
cookies := strings.Split(cookieVals[i], ";")
|
cookies := strings.Split(cookieVals[i], ";")
|
||||||
cmd := make(map[string]string, len(cookies))
|
cmd := make(map[string]string, len(cookies))
|
||||||
@@ -45,10 +52,13 @@ func FillRequest(ctx context.Context, req interface{}, opts ...FillRequestOption
|
|||||||
for idx := 0; idx < len(options.cookies)/2; idx += 2 {
|
for idx := 0; idx < len(options.cookies)/2; idx += 2 {
|
||||||
k := http.CanonicalHeaderKey(options.cookies[idx])
|
k := http.CanonicalHeaderKey(options.cookies[idx])
|
||||||
v, ok := cmd[k]
|
v, ok := cmd[k]
|
||||||
|
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if err = rutil.SetFieldByPath(req, v, k); err != nil {
|
|
||||||
|
err = rutil.SetFieldByPath(req, v, k)
|
||||||
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user