package whois

// Support for the WHOIS protocol.

import (
	"context"
	"fmt"
	"io/ioutil"
	"net"
	"strings"
)

// Query returns a semi-raw response from a WHOIS server for a given query.
// We only convert \r\n to \n, and then do no other transformation to the data.
func Query(ctx context.Context, server string, query string) (string, error) {
	var d net.Dialer
	conn, err := d.DialContext(ctx, "tcp", server)
	if err != nil {
		return "", fmt.Errorf("while dialing %q: %v", server, err)
	}

	defer conn.Close()

	fmt.Fprintf(conn, "%s\r\n", query)

	data, err := ioutil.ReadAll(conn)
	if err != nil {
		return "", fmt.Errorf("while receiving data from %q: %v", server, err)
	}

	return strings.ReplaceAll(string(data), "\r", ""), nil
}
