gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/sync/lock/http/server/server.go (about) 1 // Package server implements the sync http server 2 package server 3 4 import ( 5 "net/http" 6 7 "gitee.com/liuxuezhan/go-micro-v1.18.0/sync/lock" 8 lkhttp "gitee.com/liuxuezhan/go-micro-v1.18.0/sync/lock/http" 9 ) 10 11 func Handler(lk lock.Lock) http.Handler { 12 mux := http.NewServeMux() 13 14 mux.HandleFunc(lkhttp.DefaultPath, func(w http.ResponseWriter, r *http.Request) { 15 r.ParseForm() 16 17 id := r.Form.Get("id") 18 if len(id) == 0 { 19 return 20 } 21 22 switch r.Method { 23 case "POST": 24 err := lk.Acquire(id) 25 if err != nil { 26 http.Error(w, err.Error(), 500) 27 } 28 case "DELETE": 29 err := lk.Release(id) 30 if err != nil { 31 http.Error(w, err.Error(), 500) 32 } 33 } 34 }) 35 36 return mux 37 } 38 39 func Server(lk lock.Lock) *http.Server { 40 server := &http.Server{ 41 Addr: lkhttp.DefaultAddress, 42 Handler: Handler(lk), 43 } 44 return server 45 }