Files
addrss.io/internal/controllers/api.go
2025-09-07 20:36:34 -04:00

46 lines
880 B
Go

package controllers
import (
"addrss/pkg/postal"
"addrss/pkg/router"
"fmt"
)
type Api struct{}
type ParseRequest struct {
Address string `json:"address"`
}
func (a Api) AddRoutes() {
router.AddPost("/v1/expand", expandAddress).Anonymous()
router.AddPost("/v1/parse", parseAddress).Anonymous()
}
func expandAddress(ctx *router.Context) {
expansions := postal.ExpandAddress("1080 Brayden Ct. Hebron KY 41048")
for i := 0; i < len(expansions); i++ {
fmt.Println(expansions[i])
}
ctx.Response.NoContent()
}
func parseAddress(ctx *router.Context) {
pr := ParseRequest{}
if err := ctx.Request.Bind(&pr); err != nil {
ctx.Response.BadRequest(err)
}
options := postal.ParserOptions{}
pa := postal.ParseAddressOptions(pr.Address, options)
addr := map[string]any{}
for i := 0; i < len(pa); i++ {
addr[pa[i].Label] = pa[i].Value
}
ctx.Response.OK(addr)
}