package main

import (
	"log"

	"github.com/gin-gonic/gin"
	"github.com/ipipdotnet/ipdb-go"
)

func initIPDB() *ipdb.City {
	ipFile := "ipip_cn_updated.ipdb"
	db, err := ipdb.NewCity(ipFile)
	if err != nil {
		log.Fatal(err)
	}
	db.Reload(ipFile)
	return db
}

func main() {
	db := initIPDB()
	r := gin.Default()
	r.GET("/ip/:ip", func(c *gin.Context) {
		ip := c.Param("ip")
		if info, err := db.FindInfo(ip, "CN"); err != nil {
			c.JSON(400, gin.H{
				"ip":    ip,
				"error": err.Error(),
			})
		} else {
			c.JSON(200, *info)
		}
	})

	r.Run()
}
