mirror of
https://codeberg.org/Codeberg/pages-server.git
synced 2025-04-29 09:33:36 +02:00
61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package gitea
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
type FileResponse struct {
|
|
Exists bool
|
|
IsSymlink bool
|
|
ETag string
|
|
MimeType string
|
|
Body []byte
|
|
}
|
|
|
|
func (f FileResponse) IsEmpty() bool {
|
|
return len(f.Body) != 0
|
|
}
|
|
|
|
func (f FileResponse) createHttpResponse() *http.Response {
|
|
resp := &http.Response{
|
|
Header: make(http.Header),
|
|
}
|
|
|
|
if f.Exists {
|
|
resp.StatusCode = http.StatusOK
|
|
} else {
|
|
resp.StatusCode = http.StatusNotFound
|
|
}
|
|
|
|
if f.IsSymlink {
|
|
resp.Header.Set(giteaObjectTypeHeader, objTypeSymlink)
|
|
}
|
|
resp.Header.Set(eTagHeader, f.ETag)
|
|
resp.Header.Set(contentTypeHeader, f.MimeType)
|
|
|
|
return resp
|
|
}
|
|
|
|
type BranchTimestamp struct {
|
|
Branch string
|
|
Timestamp time.Time
|
|
}
|
|
|
|
const (
|
|
// defaultBranchCacheTimeout specifies the timeout for the default branch cache. It can be quite long.
|
|
defaultBranchCacheTimeout = 15 * time.Minute
|
|
|
|
// branchExistenceCacheTimeout specifies the timeout for the branch timestamp & existence cache. It should be shorter
|
|
// than fileCacheTimeout, as that gets invalidated if the branch timestamp has changed. That way, repo changes will be
|
|
// picked up faster, while still allowing the content to be cached longer if nothing changes.
|
|
branchExistenceCacheTimeout = 5 * time.Minute
|
|
|
|
// fileCacheTimeout specifies the timeout for the file content cache - you might want to make this quite long, depending
|
|
// on your available memory.
|
|
// TODO: move as option into cache interface
|
|
fileCacheTimeout = 5 * time.Minute
|
|
|
|
// fileCacheSizeLimit limits the maximum file size that will be cached, and is set to 1 MB by default.
|
|
fileCacheSizeLimit = int64(1024 * 1024)
|
|
)
|