expiration-check/pkg/checker/domain.go

53 lines
1.1 KiB
Go

package checker
import (
"math"
"time"
"gitnet.fr/deblan/expiration-check/pkg/extractor"
"gitnet.fr/deblan/expiration-check/pkg/logger"
"gitnet.fr/deblan/expiration-check/pkg/model"
"gitnet.fr/deblan/expiration-check/pkg/rdap"
"gitnet.fr/deblan/expiration-check/pkg/whois"
)
func CheckDomains(domains []string) []*model.Result {
var err error
var date *time.Time
var values []*model.Result
services, err := rdap.GetRdapServices()
if err != nil {
logger.Get().Logf("GetRdapServices failed: error=%v", err)
return values
}
for _, domain := range domains {
tld := extractor.ExtractTld(domain)
service, ok := services[tld]
if ok {
date, err = rdap.GetExpiration(domain, service)
} else {
date, err = whois.GetExpiration(domain)
}
if err != nil {
logger.Get().Logf("CheckDomain: domain=%s error=%s", domain, err)
values = append(values, model.NewResultFailed(domain))
} else {
daysLeft := math.Floor(date.Sub(time.Now()).Hours() / 24)
values = append(values, model.NewResult(
domain,
daysLeft,
date.Format(time.DateTime),
))
}
}
return values
}