// Package server implements the sync http server package server import ( "net/http" "github.com/micro/go-micro/v2/sync/lock" lkhttp "github.com/micro/go-micro/v2/sync/lock/http" ) func Handler(lk lock.Lock) http.Handler { mux := http.NewServeMux() mux.HandleFunc(lkhttp.DefaultPath, func(w http.ResponseWriter, r *http.Request) { r.ParseForm() id := r.Form.Get("id") if len(id) == 0 { return } switch r.Method { case "POST": err := lk.Acquire(id) if err != nil { http.Error(w, err.Error(), 500) } case "DELETE": err := lk.Release(id) if err != nil { http.Error(w, err.Error(), 500) } } }) return mux } func Server(lk lock.Lock) *http.Server { server := &http.Server{ Addr: lkhttp.DefaultAddress, Handler: Handler(lk), } return server }