domogeek/vendor/github.com/dolanor/caldav-go/http/server.go

49 lines
1.0 KiB
Go
Raw Permalink Normal View History

2022-04-18 10:47:47 +00:00
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...)
}