package router
import (
"html/template"
"log"
"github.com/dcarrillo/whatismyip/service"
"github.com/gin-gonic/gin"
)
type Router struct {
geo *service.Geo
trustedHeader string
trustedPortHeader string
templatePath string
disableScan bool
}
func NewRouter(geo *service.Geo, trustedHeader, trustedPortHeader, templatePath string, disableScan bool) *Router {
return &Router{
geo: geo,
trustedHeader: trustedHeader,
trustedPortHeader: trustedPortHeader,
templatePath: templatePath,
disableScan: disableScan,
}
}
func SetupTemplate(r *gin.Engine, templatePath string) {
if templatePath == "" {
r.SetHTMLTemplate(template.Must(template.New("home").Parse(home)))
} else {
log.Printf("Template %s has been loaded", templatePath)
r.LoadHTMLFiles(templatePath)
}
}
func Setup(r *gin.Engine, rt *Router) {
r.GET("/", rt.getRoot)
if !rt.disableScan {
r.GET("/scan/tcp/:port", rt.scanTCPPort)
}
r.GET("/client-port", rt.getClientPortAsString)
r.GET("/geo", rt.getGeoAsString)
r.GET("/geo/:field", rt.getGeoAsString)
r.GET("/asn", rt.getASNAsString)
r.GET("/asn/:field", rt.getASNAsString)
r.GET("/headers", rt.getHeadersAsSortedString)
r.GET("/all", rt.getAllAsString)
r.GET("/json", rt.getJSON)
r.GET("/:header", rt.getHeaderAsString)
}