49 lines
852 B
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)
|
|
})
|
|
}
|