feat: implement caldav search
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"github.com/dolanor/caldav-go/utils"
|
||||
"io"
|
||||
"log"
|
||||
"net/url"
|
||||
spath "path"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var _ = log.Print
|
||||
|
||||
// a server that accepts HTTP requests
|
||||
type Server struct {
|
||||
baseUrl *url.URL
|
||||
}
|
||||
|
||||
// creates a reference to an http server
|
||||
func NewServer(baseUrlStr string) (*Server, error) {
|
||||
var err error
|
||||
var s = new(Server)
|
||||
if s.baseUrl, err = url.Parse(baseUrlStr); err != nil {
|
||||
return nil, utils.NewError(NewServer, "unable to parse server base url", baseUrlStr, err)
|
||||
} else {
|
||||
return s, nil
|
||||
}
|
||||
}
|
||||
|
||||
// converts a path name to an absolute URL
|
||||
func (s *Server) UserInfo() *url.Userinfo {
|
||||
return s.baseUrl.User
|
||||
}
|
||||
|
||||
// converts a path name to an absolute URL
|
||||
func (s *Server) AbsUrlStr(path string) string {
|
||||
uri := *s.baseUrl
|
||||
uri.Path = spath.Join(uri.Path, path)
|
||||
if strings.HasSuffix(path, "/") {
|
||||
uri.Path = uri.Path + "/"
|
||||
}
|
||||
return uri.String()
|
||||
}
|
||||
|
||||
// creates a new HTTP request object
|
||||
func (s *Server) NewRequest(method string, path string, body ...io.ReadCloser) (*Request, error) {
|
||||
return NewRequest(method, s.AbsUrlStr(path), body...)
|
||||
}
|
||||
Reference in New Issue
Block a user