package netutil

import (
	"net"
	"net/http"
	"time"

	"github.com/kataras/golog"
)

// Client returns a new http.Client using
// the "timeout" for open connection and read-write operations.
func Client(timeout time.Duration) *http.Client {
	transport := http.Transport{
		Dial: func(network string, addr string) (net.Conn, error) {
			conn, err := net.DialTimeout(network, addr, timeout)
			if err != nil {
				golog.Debugf("%v", err)
				return nil, err
			}
			if err = conn.SetDeadline(time.Now().Add(timeout)); err != nil {
				golog.Debugf("%v", err)
			}
			return conn, err
		},
	}

	client := &http.Client{
		Transport: &transport,
	}

	return client
}