github.com/mailgun/mailgun-go/v3@v3.6.4/mock_webhooks.go (about) 1 package mailgun 2 3 import ( 4 "net/http" 5 6 "github.com/go-chi/chi" 7 ) 8 9 func (ms *MockServer) addWebhookRoutes(r chi.Router) { 10 r.Route("/domains/{domain}/webhooks", func(r chi.Router) { 11 r.Get("/", ms.listWebHooks) 12 r.Post("/", ms.postWebHook) 13 r.Get("/{webhook}", ms.getWebHook) 14 r.Put("/{webhook}", ms.putWebHook) 15 r.Delete("/{webhook}", ms.deleteWebHook) 16 }) 17 ms.webhooks = WebHooksListResponse{ 18 Webhooks: map[string]UrlOrUrls{ 19 "new-webhook": { 20 Urls: []string{"http://example.com/new"}, 21 }, 22 "legacy-webhook": { 23 Url: "http://example.com/legacy", 24 }, 25 }, 26 } 27 } 28 29 func (ms *MockServer) listWebHooks(w http.ResponseWriter, _ *http.Request) { 30 toJSON(w, ms.webhooks) 31 } 32 33 func (ms *MockServer) getWebHook(w http.ResponseWriter, r *http.Request) { 34 resp := WebHookResponse{ 35 Webhook: UrlOrUrls{ 36 Urls: ms.webhooks.Webhooks[chi.URLParam(r, "webhook")].Urls, 37 }, 38 } 39 toJSON(w, resp) 40 } 41 42 func (ms *MockServer) postWebHook(w http.ResponseWriter, r *http.Request) { 43 if err := r.ParseForm(); err != nil { 44 w.WriteHeader(http.StatusBadRequest) 45 toJSON(w, okResp{Message: err.Error()}) 46 return 47 } 48 49 var urls []string 50 for _, url := range r.Form["url"] { 51 urls = append(urls, url) 52 } 53 ms.webhooks.Webhooks[r.FormValue("id")] = UrlOrUrls{Urls: urls} 54 55 toJSON(w, okResp{Message: "success"}) 56 } 57 58 func (ms *MockServer) putWebHook(w http.ResponseWriter, r *http.Request) { 59 if err := r.ParseForm(); err != nil { 60 w.WriteHeader(http.StatusBadRequest) 61 toJSON(w, okResp{Message: err.Error()}) 62 return 63 } 64 65 var urls []string 66 for _, url := range r.Form["url"] { 67 urls = append(urls, url) 68 } 69 ms.webhooks.Webhooks[chi.URLParam(r, "webhook")] = UrlOrUrls{Urls: urls} 70 71 toJSON(w, okResp{Message: "success"}) 72 } 73 74 func (ms *MockServer) deleteWebHook(w http.ResponseWriter, r *http.Request) { 75 _, ok := ms.webhooks.Webhooks[chi.URLParam(r, "webhook")] 76 if !ok { 77 w.WriteHeader(http.StatusNotFound) 78 toJSON(w, okResp{Message: "webhook not found"}) 79 } 80 81 delete(ms.webhooks.Webhooks, chi.URLParam(r, "webhook")) 82 toJSON(w, okResp{Message: "success"}) 83 }