46 lines
880 B
Go
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)
|
|
}
|