code: func newUploadRequest(target, username, secret string, headers map[string]string, a *asset) (*h.Request, error) {
  	req, err := h.NewRequest(h.MethodPut, target, a.ReadCloser)
  	if err != nil {
  		return nil, err
  	}
  	req.ContentLength = a.Size
  	req.SetBasicAuth(username, secret)
  
  	for k, v := range headers {
  		req.Header.Add(k, v)
  	}
  
  	return req, err
  }
docs: // newUploadRequest creates a new h.Request for uploading