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  }