Skip to content

Commit

Permalink
Merge pull request #252 from freman/chi2gorilla
Browse files Browse the repository at this point in the history
Swap chi router for gorilla mux
  • Loading branch information
thrawn01 authored Feb 23, 2021
2 parents 7b5f684 + 0ca8db5 commit f61a680
Show file tree
Hide file tree
Showing 12 changed files with 123 additions and 122 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ require (
github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect
github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 // indirect
github.com/go-chi/chi v4.0.0+incompatible
github.com/gorilla/mux v1.8.0
github.com/json-iterator/go v1.1.10
github.com/pkg/errors v0.8.1
)
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojt
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg=
github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 h1:E2s37DuLxFhQDg5gKsWoLBOB0n+ZW8s599zru8FJ2/Y=
github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0=
github.com/go-chi/chi v4.0.0+incompatible h1:SiLLEDyAkqNnw+T/uDTf3aFB9T4FTrwMpuYrgaRcnW4=
github.com/go-chi/chi v4.0.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
Expand Down
8 changes: 4 additions & 4 deletions mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"strconv"
"strings"

"github.com/go-chi/chi"
"github.com/gorilla/mux"
)

// A mailgun api mock suitable for testing
Expand All @@ -32,9 +32,9 @@ func NewMockServer() MockServer {
ms := MockServer{}

// Add all our handlers
r := chi.NewRouter()
r := mux.NewRouter()

r.Route("/v3", func(r chi.Router) {
func(r *mux.Router) {
ms.addIPRoutes(r)
ms.addExportRoutes(r)
ms.addDomainRoutes(r)
Expand All @@ -43,7 +43,7 @@ func NewMockServer() MockServer {
ms.addMessagesRoutes(r)
ms.addRoutes(r)
ms.addWebhookRoutes(r)
})
}(r.PathPrefix("/v3").Subrouter())
ms.addValidationRoutes(r)

// Start the server
Expand Down
62 changes: 31 additions & 31 deletions mock_domains.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"net/http"
"time"

"github.com/go-chi/chi"
"github.com/gorilla/mux"
)

type domainContainer struct {
Expand All @@ -16,7 +16,7 @@ type domainContainer struct {
TagLimits *TagLimits `json:"limits,omitempty"`
}

func (ms *MockServer) addDomainRoutes(r chi.Router) {
func (ms *MockServer) addDomainRoutes(r *mux.Router) {

ms.domainList = append(ms.domainList, domainContainer{
Domain: Domain{
Expand Down Expand Up @@ -81,24 +81,24 @@ func (ms *MockServer) addDomainRoutes(r chi.Router) {
},
})

r.Get("/domains", ms.listDomains)
r.Post("/domains", ms.createDomain)
r.Get("/domains/{domain}", ms.getDomain)
r.Put("/domains/{domain}/verify", ms.getDomain)
r.Delete("/domains/{domain}", ms.deleteDomain)
//r.Get("/domains/{domain}/credentials", ms.getCredentials)
//r.Post("/domains/{domain}/credentials", ms.createCredentials)
//r.Put("/domains/{domain}/credentials/{login}", ms.updateCredentials)
//r.Delete("/domains/{domain}/credentials/{login}", ms.deleteCredentials)
r.Get("/domains/{domain}/connection", ms.getConnection)
r.Put("/domains/{domain}/connection", ms.updateConnection)
r.Get("/domains/{domain}/tracking", ms.getTracking)
r.Put("/domains/{domain}/tracking/click", ms.updateClickTracking)
r.Put("/domains/{domain}/tracking/open", ms.updateOpenTracking)
r.Put("/domains/{domain}/tracking/unsubscribe", ms.updateUnsubTracking)
r.Get("/domains/{domain}/limits/tag", ms.getTagLimits)
r.Put("/domains/{domain}/dkim_selector", ms.updateDKIMSelector)
r.Put("/domains/{domain}/web_prefix", ms.updateWebPrefix)
r.HandleFunc("/domains", ms.listDomains).Methods(http.MethodGet)
r.HandleFunc("/domains", ms.createDomain).Methods(http.MethodPost)
r.HandleFunc("/domains/{domain}", ms.getDomain).Methods(http.MethodGet)
r.HandleFunc("/domains/{domain}/verify", ms.getDomain).Methods(http.MethodPut)
r.HandleFunc("/domains/{domain}", ms.deleteDomain).Methods(http.MethodDelete)
//r.HandleFunc("/domains/{domain}/credentials", ms.getCredentials).Methods(http.MethodGet)
//r.HandleFunc("/domains/{domain}/credentials", ms.createCredentials).Methods(http.MethodPost)
//r.HandleFunc("/domains/{domain}/credentials/{login}", ms.updateCredentials).Methods(http.MethodPut)
//r.HandleFunc("/domains/{domain}/credentials/{login}", ms.deleteCredentials).Methods(http.MethodDelete)
r.HandleFunc("/domains/{domain}/connection", ms.getConnection).Methods(http.MethodGet)
r.HandleFunc("/domains/{domain}/connection", ms.updateConnection).Methods(http.MethodPut)
r.HandleFunc("/domains/{domain}/tracking", ms.getTracking).Methods(http.MethodGet)
r.HandleFunc("/domains/{domain}/tracking/click", ms.updateClickTracking).Methods(http.MethodPut)
r.HandleFunc("/domains/{domain}/tracking/open", ms.updateOpenTracking).Methods(http.MethodPut)
r.HandleFunc("/domains/{domain}/tracking/unsubscribe", ms.updateUnsubTracking).Methods(http.MethodPut)
r.HandleFunc("/domains/{domain}/limits/tag", ms.getTagLimits).Methods(http.MethodGet)
r.HandleFunc("/domains/{domain}/dkim_selector", ms.updateDKIMSelector).Methods(http.MethodPut)
r.HandleFunc("/domains/{domain}/web_prefix", ms.updateWebPrefix).Methods(http.MethodPut)
}

func (ms *MockServer) listDomains(w http.ResponseWriter, r *http.Request) {
Expand Down Expand Up @@ -139,7 +139,7 @@ func (ms *MockServer) listDomains(w http.ResponseWriter, r *http.Request) {

func (ms *MockServer) getDomain(w http.ResponseWriter, r *http.Request) {
for _, d := range ms.domainList {
if d.Domain.Name == chi.URLParam(r, "domain") {
if d.Domain.Name == mux.Vars(r)["domain"] {
d.Connection = nil
toJSON(w, d)
return
Expand Down Expand Up @@ -167,7 +167,7 @@ func (ms *MockServer) createDomain(w http.ResponseWriter, r *http.Request) {
func (ms *MockServer) deleteDomain(w http.ResponseWriter, r *http.Request) {
result := ms.domainList[:0]
for _, domain := range ms.domainList {
if domain.Domain.Name == chi.URLParam(r, "domain") {
if domain.Domain.Name == mux.Vars(r)["domain"] {
continue
}
result = append(result, domain)
Expand All @@ -185,7 +185,7 @@ func (ms *MockServer) deleteDomain(w http.ResponseWriter, r *http.Request) {

func (ms *MockServer) getConnection(w http.ResponseWriter, r *http.Request) {
for _, d := range ms.domainList {
if d.Domain.Name == chi.URLParam(r, "domain") {
if d.Domain.Name == mux.Vars(r)["domain"] {
resp := domainConnectionResponse{
Connection: *d.Connection,
}
Expand All @@ -199,7 +199,7 @@ func (ms *MockServer) getConnection(w http.ResponseWriter, r *http.Request) {

func (ms *MockServer) updateConnection(w http.ResponseWriter, r *http.Request) {
for i, d := range ms.domainList {
if d.Domain.Name == chi.URLParam(r, "domain") {
if d.Domain.Name == mux.Vars(r)["domain"] {
ms.domainList[i].Connection = &DomainConnection{
RequireTLS: stringToBool(r.FormValue("require_tls")),
SkipVerification: stringToBool(r.FormValue("skip_verification")),
Expand All @@ -214,7 +214,7 @@ func (ms *MockServer) updateConnection(w http.ResponseWriter, r *http.Request) {

func (ms *MockServer) getTracking(w http.ResponseWriter, r *http.Request) {
for _, d := range ms.domainList {
if d.Domain.Name == chi.URLParam(r, "domain") {
if d.Domain.Name == mux.Vars(r)["domain"] {
resp := domainTrackingResponse{
Tracking: *d.Tracking,
}
Expand All @@ -228,7 +228,7 @@ func (ms *MockServer) getTracking(w http.ResponseWriter, r *http.Request) {

func (ms *MockServer) updateClickTracking(w http.ResponseWriter, r *http.Request) {
for i, d := range ms.domainList {
if d.Domain.Name == chi.URLParam(r, "domain") {
if d.Domain.Name == mux.Vars(r)["domain"] {
ms.domainList[i].Tracking.Click.Active = stringToBool(r.FormValue("active"))
toJSON(w, okResp{Message: "Domain tracking settings have been updated"})
return
Expand All @@ -240,7 +240,7 @@ func (ms *MockServer) updateClickTracking(w http.ResponseWriter, r *http.Request

func (ms *MockServer) updateOpenTracking(w http.ResponseWriter, r *http.Request) {
for i, d := range ms.domainList {
if d.Domain.Name == chi.URLParam(r, "domain") {
if d.Domain.Name == mux.Vars(r)["domain"] {
ms.domainList[i].Tracking.Open.Active = stringToBool(r.FormValue("active"))
toJSON(w, okResp{Message: "Domain tracking settings have been updated"})
return
Expand All @@ -252,7 +252,7 @@ func (ms *MockServer) updateOpenTracking(w http.ResponseWriter, r *http.Request)

func (ms *MockServer) updateUnsubTracking(w http.ResponseWriter, r *http.Request) {
for i, d := range ms.domainList {
if d.Domain.Name == chi.URLParam(r, "domain") {
if d.Domain.Name == mux.Vars(r)["domain"] {
ms.domainList[i].Tracking.Unsubscribe.Active = stringToBool(r.FormValue("active"))
if len(r.FormValue("html_footer")) != 0 {
ms.domainList[i].Tracking.Unsubscribe.HTMLFooter = r.FormValue("html_footer")
Expand All @@ -270,7 +270,7 @@ func (ms *MockServer) updateUnsubTracking(w http.ResponseWriter, r *http.Request

func (ms *MockServer) getTagLimits(w http.ResponseWriter, r *http.Request) {
for _, d := range ms.domainList {
if d.Domain.Name == chi.URLParam(r, "domain") {
if d.Domain.Name == mux.Vars(r)["domain"] {
if d.TagLimits == nil {
w.WriteHeader(http.StatusNotFound)
toJSON(w, okResp{Message: "no limits defined for domain"})
Expand All @@ -286,7 +286,7 @@ func (ms *MockServer) getTagLimits(w http.ResponseWriter, r *http.Request) {

func (ms *MockServer) updateDKIMSelector(w http.ResponseWriter, r *http.Request) {
for _, d := range ms.domainList {
if d.Domain.Name == chi.URLParam(r, "domain") {
if d.Domain.Name == mux.Vars(r)["domain"] {
if r.FormValue("dkim_selector") == "" {
toJSON(w, okResp{Message: "dkim_selector param required"})
return
Expand All @@ -301,7 +301,7 @@ func (ms *MockServer) updateDKIMSelector(w http.ResponseWriter, r *http.Request)

func (ms *MockServer) updateWebPrefix(w http.ResponseWriter, r *http.Request) {
for _, d := range ms.domainList {
if d.Domain.Name == chi.URLParam(r, "domain") {
if d.Domain.Name == mux.Vars(r)["domain"] {
if r.FormValue("web_prefix") == "" {
toJSON(w, okResp{Message: "web_prefix param required"})
return
Expand Down
6 changes: 3 additions & 3 deletions mock_events.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ import (
"net/url"
"time"

"github.com/go-chi/chi"
"github.com/gorilla/mux"
"github.com/mailgun/mailgun-go/v4/events"
)

func (ms *MockServer) addEventRoutes(r chi.Router) {
r.Get("/{domain}/events", ms.listEvents)
func (ms *MockServer) addEventRoutes(r *mux.Router) {
r.HandleFunc("/{domain}/events", ms.listEvents).Methods(http.MethodGet)

var (
tags = []string{"tag1", "tag2"}
Expand Down
14 changes: 7 additions & 7 deletions mock_exports.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import (
"net/http"
"strconv"

"github.com/go-chi/chi"
"github.com/gorilla/mux"
)

func (ms *MockServer) addExportRoutes(r chi.Router) {
r.Post("/exports", ms.postExports)
r.Get("/exports", ms.listExports)
r.Get("/exports/{id}", ms.getExport)
r.Get("/exports/{id}/download_url", ms.getExportLink)
func (ms *MockServer) addExportRoutes(r *mux.Router) {
r.HandleFunc("/exports", ms.postExports).Methods(http.MethodPost)
r.HandleFunc("/exports", ms.listExports).Methods(http.MethodGet)
r.HandleFunc("/exports/{id}", ms.getExport).Methods(http.MethodGet)
r.HandleFunc("/exports/{id}/download_url", ms.getExportLink).Methods(http.MethodGet)
}

func (ms *MockServer) postExports(w http.ResponseWriter, r *http.Request) {
Expand All @@ -33,7 +33,7 @@ func (ms *MockServer) listExports(w http.ResponseWriter, _ *http.Request) {

func (ms *MockServer) getExport(w http.ResponseWriter, r *http.Request) {
for _, export := range ms.exportList {
if export.ID == chi.URLParam(r, "id") {
if export.ID == mux.Vars(r)["id"] {
toJSON(w, export)
return
}
Expand Down
24 changes: 12 additions & 12 deletions mock_ips.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@ package mailgun
import (
"net/http"

"github.com/go-chi/chi"
"github.com/gorilla/mux"
)

func (ms *MockServer) addIPRoutes(r chi.Router) {
r.Get("/ips", ms.listIPS)
r.Get("/ips/{ip}", ms.getIPAddress)
r.Route("/domains/{domain}/ips", func(r chi.Router) {
r.Get("/", ms.listDomainIPS)
r.Get("/{ip}", ms.getIPAddress)
r.Post("/", ms.postDomainIPS)
r.Delete("/{ip}", ms.deleteDomainIPS)
})
func (ms *MockServer) addIPRoutes(r *mux.Router) {
r.HandleFunc("/ips", ms.listIPS).Methods(http.MethodGet)
r.HandleFunc("/ips/{ip}", ms.getIPAddress).Methods(http.MethodGet)
func(r *mux.Router) {
r.HandleFunc("", ms.listDomainIPS).Methods(http.MethodGet)
r.HandleFunc("/{ip}", ms.getIPAddress).Methods(http.MethodGet)
r.HandleFunc("", ms.postDomainIPS).Methods(http.MethodPost)
r.HandleFunc("/{ip}", ms.deleteDomainIPS).Methods(http.MethodDelete)
}(r.PathPrefix("/domains/{domain}/ips").Subrouter())
}

func (ms *MockServer) listIPS(w http.ResponseWriter, _ *http.Request) {
Expand All @@ -26,7 +26,7 @@ func (ms *MockServer) listIPS(w http.ResponseWriter, _ *http.Request) {

func (ms *MockServer) getIPAddress(w http.ResponseWriter, r *http.Request) {
toJSON(w, IPAddress{
IP: chi.URLParam(r, "ip"),
IP: mux.Vars(r)["ip"],
RDNS: "luna.mailgun.net",
Dedicated: true,
})
Expand All @@ -47,7 +47,7 @@ func (ms *MockServer) postDomainIPS(w http.ResponseWriter, r *http.Request) {
func (ms *MockServer) deleteDomainIPS(w http.ResponseWriter, r *http.Request) {
result := ms.domainIPS[:0]
for _, ip := range ms.domainIPS {
if ip == chi.URLParam(r, "ip") {
if ip == mux.Vars(r)["ip"] {
continue
}
result = append(result, ip)
Expand Down
Loading

0 comments on commit f61a680

Please sign in to comment.