1
0

ruleprovider.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package clashapi
  2. import (
  3. "net/http"
  4. "github.com/go-chi/chi/v5"
  5. "github.com/go-chi/render"
  6. )
  7. func ruleProviderRouter() http.Handler {
  8. r := chi.NewRouter()
  9. r.Get("/", getRuleProviders)
  10. r.Route("/{name}", func(r chi.Router) {
  11. r.Use(parseProviderName, findRuleProviderByName)
  12. r.Get("/", getRuleProvider)
  13. r.Put("/", updateRuleProvider)
  14. })
  15. return r
  16. }
  17. func getRuleProviders(w http.ResponseWriter, r *http.Request) {
  18. render.JSON(w, r, render.M{
  19. "providers": []string{},
  20. })
  21. }
  22. func getRuleProvider(w http.ResponseWriter, r *http.Request) {
  23. // provider := r.Context().Value(CtxKeyProvider).(provider.RuleProvider)
  24. // render.JSON(w, r, provider)
  25. render.NoContent(w, r)
  26. }
  27. func updateRuleProvider(w http.ResponseWriter, r *http.Request) {
  28. /*provider := r.Context().Value(CtxKeyProvider).(provider.RuleProvider)
  29. if err := provider.Update(); err != nil {
  30. render.Status(r, http.StatusServiceUnavailable)
  31. render.JSON(w, r, newError(err.Error()))
  32. return
  33. }*/
  34. render.NoContent(w, r)
  35. }
  36. func findRuleProviderByName(next http.Handler) http.Handler {
  37. return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  38. /*name := r.Context().Value(CtxKeyProviderName).(string)
  39. providers := tunnel.RuleProviders()
  40. provider, exist := providers[name]
  41. if !exist {*/
  42. render.Status(r, http.StatusNotFound)
  43. render.JSON(w, r, ErrNotFound)
  44. //return
  45. //}
  46. // ctx := context.WithValue(r.Context(), CtxKeyProvider, provider)
  47. // next.ServeHTTP(w, r.WithContext(ctx))
  48. })
  49. }