Swap out the rest of chi

We're now chi-free.

Not bug-free.
This commit is contained in:
Eli Ribble 2026-04-01 16:57:33 +00:00
parent 6c311c76e3
commit ab519020fc
No known key found for this signature in database
24 changed files with 172 additions and 139 deletions

View file

@ -10,15 +10,59 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/db"
"github.com/Gleipnir-Technology/nidus-sync/platform"
"github.com/go-chi/render"
//"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
)
/*
type renderer struct {
}
func (ren *renderer) Render(w http.ResponseWriter, r *http.Request) error {
return nil
}
*/
// In the best case scenario, the excellent github.com/pkg/errors package
// helps reveal information on the error, setting it on Err, and in the Render()
// method, using it to set the application-specific error code in AppCode.
type ResponseErr struct {
Error error `json:"-"` // low-level runtime error
HTTPStatusCode int `json:"-"` // http response status code
StatusText string `json:"status"` // user-level status message
AppCode int64 `json:"code,omitempty"` // application-specific error code
ErrorText string `json:"error,omitempty"` // application-level error message, for debugging
}
func (e *ResponseErr) Render(w http.ResponseWriter, r *http.Request) error {
http.Error(w, e.StatusText, e.HTTPStatusCode)
return nil
}
func errRender(err error) *ResponseErr {
log.Error().Err(err).Msg("Rendering error")
return &ResponseErr{
Error: err,
HTTPStatusCode: 500,
StatusText: "Error rendering response",
ErrorText: err.Error(),
}
}
type Renderable interface {
Render(http.ResponseWriter, *http.Request) error
}
func renderShim(w http.ResponseWriter, r *http.Request, renderer Renderable) error {
return renderer.Render(w, r)
}
func renderList(w http.ResponseWriter, r *http.Request, data []Renderable) error {
return nil
}
func handleClientIos(w http.ResponseWriter, r *http.Request, u platform.User) {
var sinceStr string
err := r.ParseForm()
if err != nil {
render.Render(w, r, errRender(fmt.Errorf("Failed to parse GET form: %w", err)))
renderShim(w, r, errRender(fmt.Errorf("Failed to parse GET form: %w", err)))
return
} else {
sinceStr = r.FormValue("since")
@ -30,14 +74,14 @@ func handleClientIos(w http.ResponseWriter, r *http.Request, u platform.User) {
} else {
since, err = parseTime(sinceStr)
if err != nil {
render.Render(w, r, errRender(fmt.Errorf("Failed to parse 'since' value: %w", err)))
renderShim(w, r, errRender(fmt.Errorf("Failed to parse 'since' value: %w", err)))
return
}
}
csync, err := platform.ContentClientIos(r.Context(), u, since)
if err != nil {
render.Render(w, r, errRender(err))
renderShim(w, r, errRender(err))
return
}
@ -51,8 +95,8 @@ func handleClientIos(w http.ResponseWriter, r *http.Request, u platform.User) {
Fieldseeker: toResponseFieldseeker(csync.Fieldseeker),
Since: since_used,
}
if err := render.Render(w, r, response); err != nil {
render.Render(w, r, errRender(err))
if err := renderShim(w, r, response); err != nil {
renderShim(w, r, errRender(err))
return
}
}
@ -60,7 +104,7 @@ func handleClientIos(w http.ResponseWriter, r *http.Request, u platform.User) {
func apiMosquitoSource(w http.ResponseWriter, r *http.Request, u platform.User) {
bounds, err := parseBounds(r)
if err != nil {
render.Render(w, r, errRender(err))
renderShim(w, r, errRender(err))
return
}
@ -69,23 +113,23 @@ func apiMosquitoSource(w http.ResponseWriter, r *http.Request, u platform.User)
query.Limit = 100
sources, err := platform.MosquitoSourceQuery()
if err != nil {
render.Render(w, r, errRender(err))
renderShim(w, r, errRender(err))
return
}
data := []render.Renderer{}
data := []Renderable{}
for _, s := range sources {
data = append(data, NewResponseMosquitoSource(s))
}
if err := render.RenderList(w, r, data); err != nil {
render.Render(w, r, errRender(err))
if err := renderList(w, r, data); err != nil {
renderShim(w, r, errRender(err))
}
}
func apiTrapData(w http.ResponseWriter, r *http.Request, u platform.User) {
bounds, err := parseBounds(r)
if err != nil {
render.Render(w, r, errRender(err))
renderShim(w, r, errRender(err))
return
}
@ -94,23 +138,23 @@ func apiTrapData(w http.ResponseWriter, r *http.Request, u platform.User) {
query.Limit = 100
trap_data, err := platform.TrapDataQuery()
if err != nil {
render.Render(w, r, errRender(err))
renderShim(w, r, errRender(err))
return
}
data := []render.Renderer{}
data := []Renderable{}
for _, td := range trap_data {
data = append(data, NewResponseTrapDatum(td))
}
if err := render.RenderList(w, r, data); err != nil {
render.Render(w, r, errRender(err))
if err := renderList(w, r, data); err != nil {
renderShim(w, r, errRender(err))
}
}
func apiServiceRequest(w http.ResponseWriter, r *http.Request, u platform.User) {
bounds, err := parseBounds(r)
if err != nil {
render.Render(w, r, errRender(err))
renderShim(w, r, errRender(err))
return
}
query := db.NewGeoQuery()
@ -118,16 +162,16 @@ func apiServiceRequest(w http.ResponseWriter, r *http.Request, u platform.User)
query.Limit = 100
requests, err := platform.ServiceRequestQuery()
if err != nil {
render.Render(w, r, errRender(err))
renderShim(w, r, errRender(err))
return
}
data := []render.Renderer{}
data := []Renderable{}
for _, sr := range requests {
data = append(data, NewResponseServiceRequest(sr))
}
if err := render.RenderList(w, r, data); err != nil {
render.Render(w, r, errRender(err))
if err := renderList(w, r, data); err != nil {
renderShim(w, r, errRender(err))
}
}
@ -168,16 +212,6 @@ func parseBounds(r *http.Request) (*db.GeoBounds, error) {
return &bounds, nil
}
func errRender(err error) render.Renderer {
log.Error().Err(err).Msg("Rendering error")
return &ResponseErr{
Error: err,
HTTPStatusCode: 500,
StatusText: "Error rendering response",
ErrorText: err.Error(),
}
}
func webhookFieldseeker(w http.ResponseWriter, r *http.Request) {
// Create or open the log file
file, err := os.OpenFile("webhook/request.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)

View file

@ -12,14 +12,14 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/platform/file"
"github.com/aarondl/opt/omit"
"github.com/aarondl/opt/omitnull"
"github.com/go-chi/chi/v5"
"github.com/go-chi/render"
"github.com/google/uuid"
"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
)
func apiAudioPost(w http.ResponseWriter, r *http.Request, u platform.User) {
id := chi.URLParam(r, "uuid")
vars := mux.Vars(r)
id := vars["uuid"]
noteUUID, err := uuid.Parse(id)
if err != nil {
http.Error(w, "Failed to decode the uuid", http.StatusBadRequest)
@ -51,14 +51,15 @@ func apiAudioPost(w http.ResponseWriter, r *http.Request, u platform.User) {
UUID: omit.From(noteUUID),
}
if err := platform.NoteAudioCreate(ctx, u, setter); err != nil {
render.Render(w, r, errRender(err))
renderShim(w, r, errRender(err))
return
}
w.WriteHeader(http.StatusAccepted)
}
func apiAudioContentPost(w http.ResponseWriter, r *http.Request, user platform.User) {
u_str := chi.URLParam(r, "uuid")
vars := mux.Vars(r)
u_str := vars["uuid"]
u, err := uuid.Parse(u_str)
if err != nil {
http.Error(w, "Failed to parse image UUID", http.StatusBadRequest)

View file

@ -13,14 +13,15 @@ import (
"github.com/Gleipnir-Technology/bob/dialect/psql/sm"
"github.com/Gleipnir-Technology/nidus-sync/db"
"github.com/Gleipnir-Technology/nidus-sync/platform"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
"github.com/paulmach/orb/geojson"
"github.com/rs/zerolog/log"
"github.com/stephenafamo/scan"
)
func getComplianceRequestImagePool(w http.ResponseWriter, r *http.Request) {
code := chi.URLParam(r, "public_id")
vars := mux.Vars(r)
code := vars["public_id"]
if code == "" {
http.Error(w, "empty public_id", http.StatusBadRequest)
return

View file

@ -9,15 +9,14 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/db/models"
"github.com/Gleipnir-Technology/nidus-sync/platform"
"github.com/Gleipnir-Technology/nidus-sync/platform/file"
"github.com/go-chi/chi/v5"
"github.com/go-chi/render"
"github.com/gorilla/mux"
)
func apiGetDistrict(w http.ResponseWriter, r *http.Request) {
var latStr, lngStr string
err := r.ParseForm()
if err != nil {
render.Render(w, r, errRender(fmt.Errorf("Failed to parse GET form: %w", err)))
renderShim(w, r, errRender(fmt.Errorf("Failed to parse GET form: %w", err)))
return
} else {
latStr = r.FormValue("lat")
@ -25,17 +24,17 @@ func apiGetDistrict(w http.ResponseWriter, r *http.Request) {
}
lat, err := strconv.ParseFloat(latStr, 64)
if err != nil {
render.Render(w, r, errRender(fmt.Errorf("Failed to parse lat as float: %w", err)))
renderShim(w, r, errRender(fmt.Errorf("Failed to parse lat as float: %w", err)))
return
}
lng, err := strconv.ParseFloat(lngStr, 64)
if err != nil {
render.Render(w, r, errRender(fmt.Errorf("Failed to parse lng as float: %w", err)))
renderShim(w, r, errRender(fmt.Errorf("Failed to parse lng as float: %w", err)))
return
}
org, err := platform.DistrictForLocation(r.Context(), lng, lat)
if err != nil {
render.Render(w, r, errRender(fmt.Errorf("Failed to get district: %w", err)))
renderShim(w, r, errRender(fmt.Errorf("Failed to get district: %w", err)))
return
}
if org == nil {
@ -48,13 +47,14 @@ func apiGetDistrict(w http.ResponseWriter, r *http.Request) {
Phone: org.OfficePhone.GetOr(""),
Website: org.Website.GetOr(""),
}
if err := render.Render(w, r, d); err != nil {
render.Render(w, r, errRender(err))
if err := renderShim(w, r, d); err != nil {
renderShim(w, r, errRender(err))
}
}
func apiGetDistrictLogo(w http.ResponseWriter, r *http.Request) {
slug := chi.URLParam(r, "slug")
vars := mux.Vars(r)
slug := vars["slug"]
ctx := r.Context()
rows, err := models.Organizations.Query(
models.SelectWhere.Organizations.Slug.EQ(slug),

View file

@ -11,14 +11,14 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/platform/file"
"github.com/aarondl/opt/omit"
"github.com/aarondl/opt/omitnull"
"github.com/go-chi/chi/v5"
"github.com/go-chi/render"
"github.com/google/uuid"
"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
)
func apiImagePost(w http.ResponseWriter, r *http.Request, u platform.User) {
id := chi.URLParam(r, "uuid")
vars := mux.Vars(r)
id := vars["uuid"]
noteUUID, err := uuid.Parse(id)
if err != nil {
http.Error(w, "Failed to decode the uuid", http.StatusBadRequest)
@ -48,14 +48,15 @@ func apiImagePost(w http.ResponseWriter, r *http.Request, u platform.User) {
}
err = platform.NoteImageCreate(ctx, u, setter)
if err != nil {
render.Render(w, r, errRender(err))
renderShim(w, r, errRender(err))
return
}
w.WriteHeader(http.StatusAccepted)
}
func apiImageContentGet(w http.ResponseWriter, r *http.Request, u platform.User) {
u_str := chi.URLParam(r, "uuid")
vars := mux.Vars(r)
u_str := vars["uuid"]
imageUUID, err := uuid.Parse(u_str)
if err != nil {
log.Error().Err(err).Msg("Failed to parse image UUID")
@ -65,7 +66,8 @@ func apiImageContentGet(w http.ResponseWriter, r *http.Request, u platform.User)
w.WriteHeader(http.StatusOK)
}
func apiImageContentPost(w http.ResponseWriter, r *http.Request, u platform.User) {
u_str := chi.URLParam(r, "uuid")
vars := mux.Vars(r)
u_str := vars["uuid"]
imageUUID, err := uuid.Parse(u_str)
if err != nil {
log.Error().Err(err).Msg("Failed to parse image UUID")
@ -73,7 +75,7 @@ func apiImageContentPost(w http.ResponseWriter, r *http.Request, u platform.User
}
err = file.ImageFileContentWrite(imageUUID, r.Body)
if err != nil {
render.Render(w, r, errRender(err))
renderShim(w, r, errRender(err))
return
}
w.WriteHeader(http.StatusOK)

View file

@ -5,14 +5,15 @@ import (
"strconv"
"github.com/Gleipnir-Technology/nidus-sync/platform"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
)
func getTile(w http.ResponseWriter, r *http.Request, user platform.User) {
x_str := chi.URLParam(r, "x")
y_str := chi.URLParam(r, "y")
z_str := chi.URLParam(r, "z")
vars := mux.Vars(r)
x_str := vars["x"]
y_str := vars["y"]
z_str := vars["z"]
x, err := strconv.Atoi(x_str)
if err != nil {

View file

@ -8,7 +8,7 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/h3utils"
"github.com/Gleipnir-Technology/nidus-sync/platform"
"github.com/aarondl/opt/null"
"github.com/go-chi/render"
//"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
)
@ -95,7 +95,6 @@ type ResponseFieldseeker struct {
TrapData []ResponseTrapData `json:"traps"`
}
// ResponseErr renderer type for handling all sorts of errors.
type ResponseClientIos struct {
Fieldseeker ResponseFieldseeker `json:"fieldseeker"`
Since time.Time `json:"since"`
@ -105,23 +104,6 @@ func (i ResponseClientIos) Render(w http.ResponseWriter, r *http.Request) error
return nil
}
// In the best case scenario, the excellent github.com/pkg/errors package
// helps reveal information on the error, setting it on Err, and in the Render()
// method, using it to set the application-specific error code in AppCode.
type ResponseErr struct {
Error error `json:"-"` // low-level runtime error
HTTPStatusCode int `json:"-"` // http response status code
StatusText string `json:"status"` // user-level status message
AppCode int64 `json:"code,omitempty"` // application-specific error code
ErrorText string `json:"error,omitempty"` // application-level error message, for debugging
}
func (e *ResponseErr) Render(w http.ResponseWriter, r *http.Request) error {
render.Status(r, e.HTTPStatusCode)
return nil
}
type ResponseMosquitoInspection struct {
ActionTaken string `json:"action_taken"`
Comments string `json:"comments"`

View file

@ -11,12 +11,13 @@ import (
nhttp "github.com/Gleipnir-Technology/nidus-sync/http"
"github.com/Gleipnir-Technology/nidus-sync/platform"
"github.com/Gleipnir-Technology/nidus-sync/platform/file"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
)
func getUploadByID(ctx context.Context, r *http.Request, u platform.User, query queryParams) (*platform.Upload, *nhttp.ErrorWithStatus) {
file_id_str := chi.URLParam(r, "id")
vars := mux.Vars(r)
file_id_str := vars["id"]
file_id_, err := strconv.ParseInt(file_id_str, 10, 32)
if err != nil {
return nil, nhttp.NewError("Failed to parse file_id: %w", err)
@ -76,7 +77,8 @@ func getUploadPoolCustomCreate(ctx context.Context, r *http.Request, u platform.
type FormUploadCommit struct{}
func postUploadCommit(ctx context.Context, r *http.Request, u platform.User, f FormUploadCommit) (string, *nhttp.ErrorWithStatus) {
file_id_str := chi.URLParam(r, "id")
vars := mux.Vars(r)
file_id_str := vars["id"]
file_id_, err := strconv.ParseInt(file_id_str, 10, 32)
if err != nil {
return "", nhttp.NewError("Failed to parse file_id: %w", err)
@ -92,7 +94,8 @@ func postUploadCommit(ctx context.Context, r *http.Request, u platform.User, f F
type FormUploadDiscard struct{}
func postUploadDiscard(ctx context.Context, r *http.Request, u platform.User, f FormUploadDiscard) (string, *nhttp.ErrorWithStatus) {
file_id_str := chi.URLParam(r, "id")
vars := mux.Vars(r)
file_id_str := vars["id"]
file_id_, err := strconv.ParseInt(file_id_str, 10, 32)
if err != nil {
return "", nhttp.NewError("Failed to parse file_id: %w", err)

View file

@ -9,7 +9,7 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/html"
nhttp "github.com/Gleipnir-Technology/nidus-sync/http"
"github.com/Gleipnir-Technology/nidus-sync/platform"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
)
@ -101,7 +101,8 @@ func listUserSuggestion(ctx context.Context, r *http.Request, user platform.User
func userPut(ctx context.Context, r *http.Request, user platform.User, updates platform.UserChangeRequest) (string, *nhttp.ErrorWithStatus) {
log.Info().Str("avatar", updates.Avatar).Msg("doing updates")
user_id_str := chi.URLParam(r, "id")
vars := mux.Vars(r)
user_id_str := vars["id"]
user_id, err := strconv.Atoi(user_id_str)
if err != nil {
return "", nhttp.NewErrorStatus(http.StatusBadRequest, "user update: %w", err)

10
go.mod
View file

@ -12,13 +12,12 @@ require (
github.com/alitto/pond/v2 v2.5.0
github.com/chromedp/cdproto v0.0.0-20250724212937-08a3db8b4327
github.com/chromedp/chromedp v0.14.2
github.com/disintegration/imaging v1.6.2
github.com/getsentry/sentry-go v0.42.0
github.com/getsentry/sentry-go/zerolog v0.42.0
github.com/go-chi/chi/v5 v5.2.3
github.com/go-chi/hostrouter v0.3.0
github.com/go-chi/render v1.0.3
github.com/google/go-querystring v1.2.0
github.com/google/uuid v1.6.0
github.com/gorilla/mux v1.8.1
github.com/gorilla/schema v1.4.1
github.com/gorilla/websocket v1.5.3
github.com/jackc/pgx/v5 v5.7.6
@ -32,6 +31,7 @@ require (
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd
github.com/shopspring/decimal v1.4.0
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
github.com/stephenafamo/bob v0.42.0
github.com/stephenafamo/scan v0.7.0
github.com/tidwall/geojson v1.4.5
github.com/twilio/twilio-go v1.29.1
@ -42,13 +42,11 @@ require (
)
require (
github.com/ajg/form v1.5.1 // indirect
github.com/andybalholm/brotli v1.2.0 // indirect
github.com/bahlo/generic-list-go v0.2.0 // indirect
github.com/beevik/etree v1.1.0 // indirect
github.com/buger/jsonparser v1.1.1 // indirect
github.com/chromedp/sysutil v1.1.0 // indirect
github.com/disintegration/imaging v1.6.2 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/go-ini/ini v1.67.0 // indirect
github.com/go-json-experiment/json v0.0.0-20250725192818-e39067aee2d2 // indirect
@ -57,7 +55,6 @@ require (
github.com/gobwas/ws v1.4.0 // indirect
github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/invopop/jsonschema v0.13.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
@ -78,7 +75,6 @@ require (
github.com/qdm12/reprint v0.0.0-20200326205758-722754a53494 // indirect
github.com/rs/xid v1.6.0 // indirect
github.com/sethvargo/go-retry v0.3.0 // indirect
github.com/stephenafamo/bob v0.42.0 // indirect
github.com/tidwall/geoindex v1.4.4 // indirect
github.com/tidwall/gjson v1.12.1 // indirect
github.com/tidwall/match v1.1.1 // indirect

9
go.sum
View file

@ -12,8 +12,6 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/aarondl/opt v0.0.0-20250607033636-982744e1bd65 h1:lbdPe4LBNmNDzeQFwNhEc88w90841qv737MI4+aXSYU=
github.com/aarondl/opt v0.0.0-20250607033636-982744e1bd65/go.mod h1:+xKBXrTAUOvrDXO5PRwIr4E1wciHY3Glgl+6OkCXknU=
github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
github.com/alecthomas/assert/v2 v2.10.0 h1:jjRCHsj6hBJhkmhznrCzoNpbA3zqy0fYiUcYZP/GkPY=
github.com/alecthomas/assert/v2 v2.10.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
@ -75,13 +73,6 @@ github.com/getsentry/sentry-go v0.42.0 h1:eeFMACuZTbUQf90RE8dE4tXeSe4CZyfvR1MBL7
github.com/getsentry/sentry-go v0.42.0/go.mod h1:eRXCoh3uvmjQLY6qu63BjUZnaBu5L5WhMV1RwYO8W5s=
github.com/getsentry/sentry-go/zerolog v0.42.0 h1:FDvGyxz7IGW8bzomAJuEFiEToq89PrOLsxQ28XYLsDc=
github.com/getsentry/sentry-go/zerolog v0.42.0/go.mod h1:cY2lSFOu3cJXhvJuUfcBeyq19QRPYt6OIAvpdwhKkfE=
github.com/go-chi/chi/v5 v5.2.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/go-chi/chi/v5 v5.2.3 h1:WQIt9uxdsAbgIYgid+BpYc+liqQZGMHRaUwp0JUcvdE=
github.com/go-chi/chi/v5 v5.2.3/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops=
github.com/go-chi/hostrouter v0.3.0 h1:75it1eO3FvkG8te1CvU6Kvr3WzAZNEBbo8xIrxUKLOQ=
github.com/go-chi/hostrouter v0.3.0/go.mod h1:KLB+7PH/ceOr6FCmMyWD2Dmql/clpOe+y7I7CUeTkaQ=
github.com/go-chi/render v1.0.3 h1:AsXqd2a1/INaIfUSKq3G5uA8weYx20FOsM7uSoCyyt4=
github.com/go-chi/render v1.0.3/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=

View file

@ -8,7 +8,7 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/db"
"github.com/Gleipnir-Technology/nidus-sync/db/models"
"github.com/Gleipnir-Technology/nidus-sync/html"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
)
type ContentDistrict struct {
@ -23,7 +23,8 @@ type ContentDistrictList struct {
}
func districtBySlug(r *http.Request) (*models.Organization, error) {
slug := chi.URLParam(r, "slug")
vars := mux.Vars(r)
slug := vars["slug"]
district, err := models.Organizations.Query(
models.SelectWhere.Organizations.Slug.EQ(slug),
).One(r.Context(), db.PGInstance.BobDB)

View file

@ -8,7 +8,7 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/html"
"github.com/Gleipnir-Technology/nidus-sync/platform/email"
"github.com/aarondl/opt/omit"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
)
type ContentEmail struct {
@ -16,7 +16,8 @@ type ContentEmail struct {
}
func getEmailByCode(w http.ResponseWriter, r *http.Request) {
id := chi.URLParam(r, "code")
vars := mux.Vars(r)
id := vars["code"]
//id := r.FormValue("id")
if id == "" {
http.Error(w, "You must specify an id", http.StatusBadRequest)

View file

@ -4,13 +4,14 @@ import (
"net/http"
"github.com/Gleipnir-Technology/nidus-sync/platform/file"
"github.com/go-chi/chi/v5"
"github.com/google/uuid"
"github.com/gorilla/mux"
)
// ServeImageByUUID reads an image with the given UUID from disk and writes it to the HTTP response
func getImageByUUID(w http.ResponseWriter, r *http.Request) {
u := chi.URLParam(r, "uuid")
vars := mux.Vars(r)
u := vars["uuid"]
if u == "" {
http.NotFound(w, r)
return

View file

@ -11,7 +11,7 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/db"
"github.com/Gleipnir-Technology/nidus-sync/html"
nhttp "github.com/Gleipnir-Technology/nidus-sync/http"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
"github.com/stephenafamo/scan"
//"github.com/Gleipnir-Technology/nidus-sync/config"
@ -34,7 +34,8 @@ type contentMailer struct {
}
func getMailer(ctx context.Context, r *http.Request) (*html.Response[contentMailer], *nhttp.ErrorWithStatus) {
public_id := chi.URLParam(r, "public_id")
vars := mux.Vars(r)
public_id := vars["public_id"]
if public_id == "" {
return nil, nhttp.NewErrorStatus(http.StatusBadRequest, "No 'public_id' in the url params")
}
@ -81,7 +82,8 @@ func getMailer(ctx context.Context, r *http.Request) (*html.Response[contentMail
}
func getMailerConfirm(ctx context.Context, r *http.Request) (*html.Response[contentMailer], *nhttp.ErrorWithStatus) {
public_id := chi.URLParam(r, "public_id")
vars := mux.Vars(r)
public_id := vars["public_id"]
if public_id == "" {
return nil, nhttp.NewErrorStatus(http.StatusBadRequest, "No 'public_id' in the url params")
}
@ -92,7 +94,8 @@ func getMailerConfirm(ctx context.Context, r *http.Request) (*html.Response[cont
), nil
}
func getMailerContribute(ctx context.Context, r *http.Request) (*html.Response[contentMailer], *nhttp.ErrorWithStatus) {
public_id := chi.URLParam(r, "public_id")
vars := mux.Vars(r)
public_id := vars["public_id"]
if public_id == "" {
return nil, nhttp.NewErrorStatus(http.StatusBadRequest, "No 'public_id' in the url params")
}
@ -103,7 +106,8 @@ func getMailerContribute(ctx context.Context, r *http.Request) (*html.Response[c
), nil
}
func getMailerEvidence(ctx context.Context, r *http.Request) (*html.Response[contentMailer], *nhttp.ErrorWithStatus) {
public_id := chi.URLParam(r, "public_id")
vars := mux.Vars(r)
public_id := vars["public_id"]
if public_id == "" {
return nil, nhttp.NewErrorStatus(http.StatusBadRequest, "No 'public_id' in the url params")
}
@ -114,7 +118,8 @@ func getMailerEvidence(ctx context.Context, r *http.Request) (*html.Response[con
), nil
}
func getMailerSchedule(ctx context.Context, r *http.Request) (*html.Response[contentMailer], *nhttp.ErrorWithStatus) {
public_id := chi.URLParam(r, "public_id")
vars := mux.Vars(r)
public_id := vars["public_id"]
if public_id == "" {
return nil, nhttp.NewErrorStatus(http.StatusBadRequest, "No 'public_id' in the url params")
}
@ -125,7 +130,8 @@ func getMailerSchedule(ctx context.Context, r *http.Request) (*html.Response[con
), nil
}
func getMailerUpdate(ctx context.Context, r *http.Request) (*html.Response[contentMailer], *nhttp.ErrorWithStatus) {
public_id := chi.URLParam(r, "public_id")
vars := mux.Vars(r)
public_id := vars["public_id"]
if public_id == "" {
return nil, nhttp.NewErrorStatus(http.StatusBadRequest, "No 'public_id' in the url params")
}
@ -140,7 +146,8 @@ type formMailerConfirm struct{}
func postMailerConfirm(ctx context.Context, r *http.Request, form formMailerConfirm) (string, *nhttp.ErrorWithStatus) {
log.Info().Msg("Fake confirm location")
public_id := chi.URLParam(r, "public_id")
vars := mux.Vars(r)
public_id := vars["public_id"]
if public_id == "" {
return "", nhttp.NewErrorStatus(http.StatusBadRequest, "No 'public_id' in the url params")
}

View file

@ -5,7 +5,7 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/config"
"github.com/Gleipnir-Technology/nidus-sync/html"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
)
type ContentMock struct {
@ -14,12 +14,12 @@ type ContentMock struct {
URL ContentURL
}
func addMockRoutes(r chi.Router) {
r.Get("/", renderMock("rmo/mock/root.html"))
r.Get("/district/{slug}", renderMock("rmo/mock/district-root.html"))
r.Get("/district/{slug}/nuisance-submit-complete", renderMock("rmo/mock/nuisance-submit-complete.html"))
r.Get("/nuisance", renderMock("rmo/mock/nuisance.html"))
r.Get("/nuisance-submit-complete", renderMock("rmo/mock/nuisance-submit-complete.html"))
func addMockRoutes(r *mux.Router) {
r.HandleFunc("/", renderMock("rmo/mock/root.html"))
r.HandleFunc("/district/{slug}", renderMock("rmo/mock/district-root.html"))
r.HandleFunc("/district/{slug}/nuisance-submit-complete", renderMock("rmo/mock/nuisance-submit-complete.html"))
r.HandleFunc("/nuisance", renderMock("rmo/mock/nuisance.html"))
r.HandleFunc("/nuisance-submit-complete", renderMock("rmo/mock/nuisance-submit-complete.html"))
}
func makeContentURLMock(slug string) ContentURL {
@ -35,7 +35,8 @@ func makeURLMock(slug, p string) string {
}
func renderMock(t string) func(http.ResponseWriter, *http.Request) {
return func(w http.ResponseWriter, r *http.Request) {
slug := chi.URLParam(r, "slug")
vars := mux.Vars(r)
slug := vars["slug"]
if slug == "" {
slug = "delta-mvcd"
}

View file

@ -14,8 +14,8 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/db"
"github.com/Gleipnir-Technology/nidus-sync/db/enums"
"github.com/Gleipnir-Technology/nidus-sync/platform"
//"github.com/gorilla/mux"
"github.com/stephenafamo/scan"
//"github.com/go-chi/chi/v5"
//"github.com/rs/zerolog/log"
)

View file

@ -6,12 +6,13 @@ import (
"net/http"
"os"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
)
func getScssDebug(w http.ResponseWriter, r *http.Request) {
path := chi.URLParam(r, "*")
vars := mux.Vars(r)
path := vars["*"]
full_path := "scss/" + path
//log.Debug().Str("path", path).Str("full_path", full_path).Msg("working on SCSS debug")
file, err := os.Open(full_path)

View file

@ -14,8 +14,8 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/db"
"github.com/Gleipnir-Technology/nidus-sync/db/models"
"github.com/Gleipnir-Technology/nidus-sync/html"
"github.com/go-chi/chi/v5"
"github.com/google/uuid"
"github.com/gorilla/mux"
//"github.com/rs/zerolog/log"
"github.com/stephenafamo/scan"
"golang.org/x/text/cases"
@ -270,7 +270,8 @@ func addContentFromWater(result *ContentStatusByID, water *models.PublicreportWa
}
func getStatusByID(w http.ResponseWriter, r *http.Request) {
report_id := chi.URLParam(r, "report_id")
vars := mux.Vars(r)
report_id := vars["report_id"]
ctx := r.Context()
report, err := models.PublicreportReports.Query(

View file

@ -8,7 +8,7 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/html"
nhttp "github.com/Gleipnir-Technology/nidus-sync/http"
"github.com/Gleipnir-Technology/nidus-sync/platform"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
"github.com/uber/h3-go/v4"
)
@ -21,7 +21,8 @@ type contentCell struct {
}
func getCellDetails(ctx context.Context, r *http.Request, user platform.User) (*html.Response[contentCell], *nhttp.ErrorWithStatus) {
cell_str := chi.URLParam(r, "cell")
vars := mux.Vars(r)
cell_str := vars["cell"]
if cell_str == "" {
return nil, nhttp.NewErrorStatus(http.StatusBadRequest, "There should always be a cell")
}

View file

@ -7,8 +7,8 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/html"
nhttp "github.com/Gleipnir-Technology/nidus-sync/http"
"github.com/Gleipnir-Technology/nidus-sync/platform"
"github.com/go-chi/chi/v5"
"github.com/google/uuid"
"github.com/gorilla/mux"
)
type contentSource struct {
@ -44,7 +44,8 @@ func getRoot(w http.ResponseWriter, r *http.Request) {
}
func getSource(ctx context.Context, r *http.Request, user platform.User) (*html.Response[contentSource], *nhttp.ErrorWithStatus) {
globalid_s := chi.URLParam(r, "globalid")
vars := mux.Vars(r)
globalid_s := vars["globalid"]
if globalid_s == "" {
return nil, nhttp.NewError("No globalid provided: %w", nil)
}
@ -86,7 +87,8 @@ func getTemplateTest(w http.ResponseWriter, r *http.Request) {
html.RenderOrError(w, "sync/template-test.html", nil)
}
func getTrap(ctx context.Context, r *http.Request, user platform.User) (*html.Response[contentTrap], *nhttp.ErrorWithStatus) {
globalid_s := chi.URLParam(r, "globalid")
vars := mux.Vars(r)
globalid_s := vars["globalid"]
if globalid_s == "" {
return nil, nhttp.NewError("No globalid provided: %w", nil)
}

View file

@ -12,8 +12,8 @@ import (
"github.com/Gleipnir-Technology/nidus-sync/html"
"github.com/Gleipnir-Technology/nidus-sync/platform"
"github.com/Gleipnir-Technology/nidus-sync/platform/pdf"
"github.com/go-chi/chi/v5"
"github.com/google/uuid"
"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
)
@ -54,7 +54,8 @@ func getMailer2(w http.ResponseWriter, r *http.Request) {
}
}
func getMailer3(w http.ResponseWriter, r *http.Request) {
code := chi.URLParam(r, "code")
vars := mux.Vars(r)
code := vars["code"]
if code == "" {
http.Error(w, "empty code", http.StatusBadRequest)
return
@ -102,7 +103,8 @@ func getMailer2Preview(w http.ResponseWriter, r *http.Request) {
})
}
func getMailer3Preview(w http.ResponseWriter, r *http.Request) {
code := chi.URLParam(r, "code")
vars := mux.Vars(r)
code := vars["code"]
if code == "" {
http.Error(w, "empty code", http.StatusBadRequest)
return

View file

@ -6,11 +6,12 @@ import (
"strconv"
"github.com/Gleipnir-Technology/nidus-sync/config"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
)
func getQRCodeMailer(w http.ResponseWriter, r *http.Request) {
code := chi.URLParam(r, "code")
vars := mux.Vars(r)
code := vars["code"]
if code == "" {
respondError(w, "There should always be a id", nil, http.StatusBadRequest)
}
@ -23,7 +24,8 @@ func getQRCodeMarketing(w http.ResponseWriter, r *http.Request) {
}
func getQRCodeReport(w http.ResponseWriter, r *http.Request) {
code := chi.URLParam(r, "code")
vars := mux.Vars(r)
code := vars["code"]
if code == "" {
respondError(w, "There should always be a code", nil, http.StatusBadRequest)
}

View file

@ -11,7 +11,7 @@ import (
"strings"
"time"
"github.com/go-chi/chi/v5"
"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
)
@ -184,7 +184,8 @@ func postSMS(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("ok"))
}
func getSMS(w http.ResponseWriter, r *http.Request) {
org := chi.URLParam(r, "org")
vars := mux.Vars(r)
org := vars["org"]
to := r.URL.Query().Get("error")
from := r.URL.Query().Get("error")