40 lines
850 B
Go
40 lines
850 B
Go
package http
|
|
|
|
import (
|
|
"github.com/dolanor/caldav-go/utils"
|
|
"io"
|
|
"net/http"
|
|
)
|
|
|
|
// an HTTP request object
|
|
type Request http.Request
|
|
|
|
// downcasts the request to the native HTTP interface
|
|
func (r *Request) Native() *http.Request {
|
|
return (*http.Request)(r)
|
|
}
|
|
|
|
// creates a new HTTP request object
|
|
func NewRequest(method string, urlstr string, body ...io.ReadCloser) (*Request, error) {
|
|
|
|
var err error
|
|
var r = new(http.Request)
|
|
|
|
if len(body) > 0 && body[0] != nil {
|
|
r, err = http.NewRequest(method, urlstr, body[0])
|
|
} else {
|
|
r, err = http.NewRequest(method, urlstr, nil)
|
|
}
|
|
|
|
if err != nil {
|
|
return nil, utils.NewError(NewRequest, "unable to create request", urlstr, err)
|
|
} else if auth := r.URL.User; auth != nil {
|
|
pass, _ := auth.Password()
|
|
r.SetBasicAuth(auth.Username(), pass)
|
|
r.URL.User = nil
|
|
}
|
|
|
|
return (*Request)(r), nil
|
|
|
|
}
|