38 lines
748 B
Go
38 lines
748 B
Go
|
package handlers
|
||
|
|
||
|
import (
|
||
|
"github.com/samedi/caldav-go/global"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
type getHandler struct {
|
||
|
request *http.Request
|
||
|
response *Response
|
||
|
onlyHeaders bool
|
||
|
}
|
||
|
|
||
|
func (gh getHandler) Handle() *Response {
|
||
|
resource, _, err := global.Storage.GetResource(gh.request.URL.Path)
|
||
|
if err != nil {
|
||
|
return gh.response.SetError(err)
|
||
|
}
|
||
|
|
||
|
var response string
|
||
|
if gh.onlyHeaders {
|
||
|
response = ""
|
||
|
} else {
|
||
|
response, _ = resource.GetContentData()
|
||
|
}
|
||
|
|
||
|
etag, _ := resource.GetEtag()
|
||
|
lastm, _ := resource.GetLastModified(http.TimeFormat)
|
||
|
ctype, _ := resource.GetContentType()
|
||
|
|
||
|
gh.response.SetHeader("ETag", etag).
|
||
|
SetHeader("Last-Modified", lastm).
|
||
|
SetHeader("Content-Type", ctype).
|
||
|
Set(http.StatusOK, response)
|
||
|
|
||
|
return gh.response
|
||
|
}
|