some cleanup and annonce expiry
This commit is contained in:
@@ -265,14 +265,6 @@ func (s *PoolServer) HandleCheckout(w http.ResponseWriter, r *http.Request, id C
|
||||
return json.NewEncoder(w).Encode(klarnaOrder)
|
||||
}
|
||||
|
||||
/*
|
||||
Legacy wrapper NewCartId removed.
|
||||
Use the unified generator in cart_id.go:
|
||||
id, err := NewCartId()
|
||||
or panic-on-error helper:
|
||||
id := MustNewCartId()
|
||||
*/
|
||||
|
||||
func CookieCartIdHandler(fn func(cartId CartId, w http.ResponseWriter, r *http.Request) error) func(w http.ResponseWriter, r *http.Request) error {
|
||||
return func(w http.ResponseWriter, r *http.Request) error {
|
||||
var id CartId
|
||||
@@ -307,11 +299,7 @@ func CookieCartIdHandler(fn func(cartId CartId, w http.ResponseWriter, r *http.R
|
||||
id = parsed
|
||||
}
|
||||
}
|
||||
// if ownershipProxyAfterExtraction != nil {
|
||||
// if handled, err := ownershipProxyAfterExtraction(id, w, r); handled || err != nil {
|
||||
// return err
|
||||
// }
|
||||
// }
|
||||
|
||||
return fn(id, w, r)
|
||||
}
|
||||
}
|
||||
@@ -356,11 +344,11 @@ func CartIdHandler(fn func(cartId CartId, w http.ResponseWriter, r *http.Request
|
||||
func (s *PoolServer) ProxyHandler(fn func(w http.ResponseWriter, r *http.Request, cartId CartId) error) func(cartId CartId, w http.ResponseWriter, r *http.Request) error {
|
||||
return func(cartId CartId, w http.ResponseWriter, r *http.Request) error {
|
||||
if ownerHost, ok := s.pool.OwnerHost(cartId); ok {
|
||||
ok, err := ownerHost.Proxy(cartId, w, r)
|
||||
if ok || err != nil {
|
||||
log.Printf("proxy failed: %v", err)
|
||||
// todo take ownership!!
|
||||
} else {
|
||||
handled, err := ownerHost.Proxy(cartId, w, r)
|
||||
if err != nil {
|
||||
log.Printf("proxy failed: %v, taking ownership", err)
|
||||
s.pool.TakeOwnership(cartId)
|
||||
} else if handled {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
@@ -371,75 +359,7 @@ func (s *PoolServer) ProxyHandler(fn func(w http.ResponseWriter, r *http.Request
|
||||
}
|
||||
}
|
||||
|
||||
//var ownershipProxyAfterExtraction func(cartId CartId, w http.ResponseWriter, r *http.Request) (handled bool, err error)
|
||||
|
||||
func (s *PoolServer) Serve() *http.ServeMux {
|
||||
// // Install ownership proxy hook that runs AFTER id extraction (cookie OR path)
|
||||
// ownershipProxyAfterExtraction = func(cartId CartId, w http.ResponseWriter, r *http.Request) (bool, error) {
|
||||
// if cartId.String() == "" {
|
||||
// return false, nil
|
||||
// }
|
||||
// owner := s.pool.OwnerHost(cartId)
|
||||
// if owner == "" || owner == s.pool.Hostname() {
|
||||
// // Set / refresh cartowner cookie pointing to the local host (claim or already owned).
|
||||
// localHost := owner
|
||||
// if localHost == "" {
|
||||
// localHost = s.pool.Hostname()
|
||||
// }
|
||||
// http.SetCookie(w, &http.Cookie{
|
||||
// Name: "cartowner",
|
||||
// Value: localHost,
|
||||
// Path: "/",
|
||||
// HttpOnly: true,
|
||||
// SameSite: http.SameSiteLaxMode,
|
||||
// })
|
||||
// return false, nil
|
||||
// }
|
||||
// // For remote ownership set cartowner cookie to remote host for sticky sessions.
|
||||
// http.SetCookie(w, &http.Cookie{
|
||||
// Name: "cartowner",
|
||||
// Value: owner,
|
||||
// Path: "/",
|
||||
// HttpOnly: true,
|
||||
// SameSite: http.SameSiteLaxMode,
|
||||
// })
|
||||
// // Proxy logic (simplified): reuse existing request to owning host on same port.
|
||||
// target := "http://" + owner + r.URL.Path
|
||||
// if q := r.URL.RawQuery; q != "" {
|
||||
// target += "?" + q
|
||||
// }
|
||||
// req, err := http.NewRequestWithContext(r.Context(), r.Method, target, r.Body)
|
||||
// if err != nil {
|
||||
// http.Error(w, "proxy build error", http.StatusBadGateway)
|
||||
// return true, err
|
||||
// }
|
||||
// for k, v := range r.Header {
|
||||
// for _, vv := range v {
|
||||
// req.Header.Add(k, vv)
|
||||
// }
|
||||
// }
|
||||
// req.Header.Set("X-Forwarded-Host", r.Host)
|
||||
// req.Header.Set("X-Cart-Id", cartId.String())
|
||||
// req.Header.Set("X-Cart-Owner", owner)
|
||||
// resp, err := http.DefaultClient.Do(req)
|
||||
// if err != nil {
|
||||
// http.Error(w, "proxy upstream error", http.StatusBadGateway)
|
||||
// return true, err
|
||||
// }
|
||||
// defer resp.Body.Close()
|
||||
// for k, v := range resp.Header {
|
||||
// for _, vv := range v {
|
||||
// w.Header().Add(k, vv)
|
||||
// }
|
||||
// }
|
||||
// w.Header().Set("X-Cart-Owner-Routed", "true")
|
||||
// w.WriteHeader(resp.StatusCode)
|
||||
// _, copyErr := io.Copy(w, resp.Body)
|
||||
// if copyErr != nil {
|
||||
// return true, copyErr
|
||||
// }
|
||||
// return true, nil
|
||||
// }
|
||||
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("OPTIONS /", func(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
Reference in New Issue
Block a user