package endpoints import ( "fmt" "github.com/gin-gonic/gin" "relynolli-server/external/yaGeo" "relynolli-server/models" "relynolli-server/status" "time" ) type handlers struct{} type Handlers interface { SearchAddress(c *gin.Context) } func GetHandlers() Handlers { return &handlers{} } type searchAddressParams struct { SearchString string `form:"q"` } func (h *handlers) SearchAddress(c *gin.Context) { query := new(searchAddressParams) err := c.ShouldBindQuery(query) meta := models.Meta{ RequestStarted: time.Now().Unix(), } response := models.Response{ Status: status.STATUS_OK, Meta: &meta, } if err != nil { response.Info = fmt.Sprintf("Error: %s", err.Error()) response.Status = status.STATUS_BAD_REQUEST meta.RequestFinished = time.Now().Unix() c.JSON(400, response) return } geo := yaGeo.Init() results, err := geo.GeoCode(query.SearchString) if err != nil { response.Info = fmt.Sprintf("Error: %s", err.Error()) response.Status = status.STATUS_SERVER_ERROR meta.RequestFinished = time.Now().Unix() c.JSON(500, response) return } response.Data = results meta.RequestFinished = time.Now().Unix() c.JSON(200, response) }