func (r *builder) SetHeader(key, value string) Builder {
	if r.header == nil {
		r.header = make(http.Header)
	}
	r.header.Set(key, value)
	return r
}
SetHeader sets a single header to the given value.
May be used to add multiple headers.
package requests
import (
	"context"
	"fmt"
	"io"
	"io/ioutil"
	"net/http"
)
type Builder interface {
	WithContext(context.Context) Builder
	WithBody(io.Reader) Builder
	WithMethod(string) Builder
	WithHeaders(http.Header) Builder
	SetHeader(key, value string) Builder
	Do() Result
}
type builder struct {
	context  context.Context
	method   string
	endpoint string
	body     io.Reader
	header   http.Header
	result   *result
}
func New(endpoint string) Builder {
	return &builder{
		endpoint: endpoint,
		method:   "GET",
	}
}
func (r *builder) WithContext(ctx context.Context) Builder {
	r.context = ctx
	return r
}
func (r *builder) WithBody(body io.Reader) Builder {
	r.body = body
	return r
}
func (r *builder) WithMethod(method string) Builder {
	r.method = method
	return r
}
func (r *builder) WithHeaders(header http.Header) Builder {
	r.header = header
	return r
}