github.com/mailgun/mailgun-go/v3@v3.6.4/mock_exports.go (about) 1 package mailgun 2 3 import ( 4 "net/http" 5 "strconv" 6 7 "github.com/go-chi/chi" 8 ) 9 10 func (ms *MockServer) addExportRoutes(r chi.Router) { 11 r.Post("/exports", ms.postExports) 12 r.Get("/exports", ms.listExports) 13 r.Get("/exports/{id}", ms.getExport) 14 r.Get("/exports/{id}/download_url", ms.getExportLink) 15 } 16 17 func (ms *MockServer) postExports(w http.ResponseWriter, r *http.Request) { 18 e := Export{ 19 ID: strconv.Itoa(len(ms.exportList)), 20 URL: r.FormValue("url"), 21 Status: "complete", 22 } 23 24 ms.exportList = append(ms.exportList, e) 25 toJSON(w, okResp{Message: "success"}) 26 } 27 28 func (ms *MockServer) listExports(w http.ResponseWriter, _ *http.Request) { 29 toJSON(w, ExportList{ 30 Items: ms.exportList, 31 }) 32 } 33 34 func (ms *MockServer) getExport(w http.ResponseWriter, r *http.Request) { 35 for _, export := range ms.exportList { 36 if export.ID == chi.URLParam(r, "id") { 37 toJSON(w, export) 38 return 39 } 40 } 41 w.WriteHeader(http.StatusNotFound) 42 toJSON(w, okResp{Message: "export not found"}) 43 } 44 45 func (ms *MockServer) getExportLink(w http.ResponseWriter, r *http.Request) { 46 w.Header().Set("Location", "/some/s3/url") 47 w.WriteHeader(http.StatusFound) 48 }