package resolver

import (
	"context"

	"golang.org/x/net/idna"
)

// IDNAResolver is to support resolving Internationalized Domain Names.
// See RFC3492 for more information.
type IDNAResolver struct {
	Resolver
}

// LookupHost implements Resolver.LookupHost
func (r IDNAResolver) LookupHost(ctx context.Context, hostname string) ([]string, error) {
	host, err := idna.ToASCII(hostname)
	if err != nil {
		return nil, err
	}
	return r.Resolver.LookupHost(ctx, host)
}

// Network implements Resolver.Network.
func (r IDNAResolver) Network() string {
	return "idna"
}

// Address implements Resolver.Address.
func (r IDNAResolver) Address() string {
	return ""
}

var _ Resolver = IDNAResolver{}