gatus/vendor/github.com/TwiN/whois
TwiN 01484832fc
feat: Add [DOMAIN_EXPIRATION] placeholder for monitoring domain expiration using WHOIS (#325)
* feat: Add [DOMAIN_EXPIRATION] placeholder for monitoring domain expiration using WHOIS

* test: Fix issue caused by possibility of millisecond elapsed during previous tests

* test: Fix test with different behavior based on architecture

* docs: Revert accidental change to starttls example

* docs: Fix mistake in comment for Condition.hasIPPlaceholder()
2022-09-06 21:22:02 -04:00
..
.gitignore feat: Add [DOMAIN_EXPIRATION] placeholder for monitoring domain expiration using WHOIS (#325) 2022-09-06 21:22:02 -04:00
LICENSE feat: Add [DOMAIN_EXPIRATION] placeholder for monitoring domain expiration using WHOIS (#325) 2022-09-06 21:22:02 -04:00
Makefile feat: Add [DOMAIN_EXPIRATION] placeholder for monitoring domain expiration using WHOIS (#325) 2022-09-06 21:22:02 -04:00
README.md feat: Add [DOMAIN_EXPIRATION] placeholder for monitoring domain expiration using WHOIS (#325) 2022-09-06 21:22:02 -04:00
whois.go feat: Add [DOMAIN_EXPIRATION] placeholder for monitoring domain expiration using WHOIS (#325) 2022-09-06 21:22:02 -04:00

whois

test

Lightweight library for retrieving WHOIS information on a domain.

It automatically retrieves the appropriate WHOIS server based on the domain's TLD by first querying IANA.

Usage

As an executable

To install it:

go install github.com/TwiN/whois/cmd/whois@latest

To run it:

whois example.com

As a library

go get github.com/TwiN/whois

Query

If all you want is the text a WHOIS server would return you, you can use the Query method of the whois.Client type:

package main

import "github.com/TwiN/whois"

func main() {
    client := whois.NewClient()
    output, err := client.Query("example.com")
    if err != nil {
    	panic(err)
    }
    println(output)
}

QueryAndParse

If you want specific pieces of information, you can use the QueryAndParse method of the whois.Client type:

package main

import "github.com/TwiN/whois"

func main() {
    client := whois.NewClient()
    response, err := client.QueryAndParse("example.com")
    if err != nil {
    	panic(err)
    }
    println(response.ExpirationDate.String()) 
}

Note that because there is no standardized format for WHOIS responses, this parsing may not be successful for every single TLD.

Currently, the only fields parsed are:

  • ExpirationDate: The time.Time at which the domain will expire
  • DomainStatuses: The statuses that the domain currently has (e.g. clientTransferProhibited)
  • NameServers: The nameservers currently tied to the domain

If you'd like one or more other fields to be parsed, please don't be shy and create an issue or a pull request.