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  }