more cart
This commit is contained in:
+30
-3
@@ -1,6 +1,10 @@
|
||||
package ucp
|
||||
|
||||
import "net/http"
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"git.k6n.net/mats/go-cart-actor/pkg/profile"
|
||||
)
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Order HTTP handler mounting
|
||||
@@ -86,11 +90,33 @@ func CheckoutHandler(applier CheckoutApplier, orderSvc ...OrderApplier) http.Han
|
||||
// To sign responses with RFC 9421 HTTP Message Signatures, wrap with WithSigning:
|
||||
//
|
||||
// mux.Handle("/ucp/v1/customers", ucp.WithSigning(ucp.CustomerHandler(pool), signer))
|
||||
func CustomerHandler(applier ProfileApplier, auditLogPath string, deleter ...CredentialDeleter) http.Handler {
|
||||
s := NewCustomerServer(applier, auditLogPath, deleter...)
|
||||
// CustomerHandlerOption configures a CustomerHandler with optional dependencies.
|
||||
type CustomerHandlerOption func(s *CustomerServer)
|
||||
|
||||
// WithEmailIndex attaches a ProfileEmailIndex that the customer handler
|
||||
// updates on every mutation and uses for the GET /by-email/{email} route.
|
||||
func WithEmailIndex(ix *profile.ProfileEmailIndex) CustomerHandlerOption {
|
||||
return func(s *CustomerServer) {
|
||||
s.SetEmailIndex(ix)
|
||||
}
|
||||
}
|
||||
|
||||
// WithCredentialDeleter attaches a credential deleter for GDPR erasure.
|
||||
func WithCredentialDeleter(deleter CredentialDeleter) CustomerHandlerOption {
|
||||
return func(s *CustomerServer) {
|
||||
s.deleter = deleter
|
||||
}
|
||||
}
|
||||
|
||||
func CustomerHandler(applier ProfileApplier, auditLogPath string, opts ...CustomerHandlerOption) http.Handler {
|
||||
s := NewCustomerServer(applier, auditLogPath)
|
||||
for _, opt := range opts {
|
||||
opt(s)
|
||||
}
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("POST /", s.handleCreateCustomer)
|
||||
mux.HandleFunc("GET /{id}", s.handleGetCustomer)
|
||||
mux.HandleFunc("GET /by-email/{email}", s.handleGetCustomerByEmail)
|
||||
mux.HandleFunc("PUT /{id}", s.handleUpdateCustomer)
|
||||
mux.HandleFunc("DELETE /{id}", s.handleDeleteCustomer)
|
||||
mux.HandleFunc("POST /{id}/addresses", s.handleAddAddress)
|
||||
@@ -154,6 +180,7 @@ func Handler(cartApplier CartApplier, opts Options) http.Handler {
|
||||
customerSrv := NewCustomerServer(opts.ProfileApplier, opts.ProfileAuditLog, opts.CredentialDeleter)
|
||||
mux.HandleFunc("POST /customers", customerSrv.handleCreateCustomer)
|
||||
mux.HandleFunc("GET /customers/{id}", customerSrv.handleGetCustomer)
|
||||
mux.HandleFunc("GET /customers/by-email/{email}", customerSrv.handleGetCustomerByEmail)
|
||||
mux.HandleFunc("PUT /customers/{id}", customerSrv.handleUpdateCustomer)
|
||||
mux.HandleFunc("DELETE /customers/{id}", customerSrv.handleDeleteCustomer)
|
||||
mux.HandleFunc("POST /customers/{id}/addresses", customerSrv.handleAddAddress)
|
||||
|
||||
Reference in New Issue
Block a user