go-geoip/routes/routes/routes.go

49 lines
852 B
Go

package routes
import (
"git.trj.tw/golang/go-geoip/module/geoip"
"github.com/gin-gonic/contrib/cors"
"github.com/gin-gonic/gin"
)
// NewEngine -
func NewEngine() *gin.Engine {
r := gin.Default()
r.Use(cors.Default())
return r
}
// RegRoutes -
func RegRoutes(r *gin.Engine) {
r.GET("/", func(c *gin.Context) {
c.String(200, "success")
})
r.GET("/geo", func(c *gin.Context) {
ip := c.DefaultQuery("ip", "")
if len(ip) == 0 {
c.AbortWithStatusJSON(400, map[string]interface{}{
"message": "no ip input",
})
return
}
geo, err := geoip.QueryGEO(ip)
if err != nil {
c.AbortWithStatusJSON(500, map[string]interface{}{
"message": err.Error(),
})
return
}
if geo == nil {
c.AbortWithStatusJSON(500, map[string]interface{}{
"message": "geo not found",
})
return
}
c.JSON(200, geo)
})
}