Documentation
¶
Index ¶
- Constants
- Variables
- func Dirname(name string) string
- func DoneWriter(isDone func() bool, w io.Writer, content string)
- func EtagMatch(w http.ResponseWriter, r *http.Request, hash string) (etag string, match bool)
- func FindPath(arr []string, value string) int
- func GetIP(r *http.Request) string
- func GetPathname(folder, name string, share Share) string
- func HandleClose(closer io.Closer, err error) error
- func Join(parts ...string) string
- func LoadJSON[T any](ctx context.Context, storageApp absto.Storage, filename string) (output T, err error)
- func LogClose(closer io.Closer, fn, item string)
- func MetadataDirectory(item absto.Item) string
- func RemoveIndex(arr []string, index int) []string
- func RenameDirectory(ctx context.Context, storageApp absto.Storage, renamers []Renamer, ...)
- func SafeWrite(w io.Writer, content string)
- func SanitizeName(name string, removeSlash bool) (string, error)
- func SaveJSON(ctx context.Context, storageApp absto.Storage, filename string, content any) error
- func SendLargeFile(ctx context.Context, storageApp absto.Storage, item absto.Item, ...) (*http.Response, error)
- func SetPrefsCookie(w http.ResponseWriter, request Request)
- func URL(folder, name string, share Share) string
- func WriteToStorage(ctx context.Context, storageApp absto.Storage, output string, size int64, ...) error
- type Aggregate
- type Auth
- type ByHybridSort
- type ByID
- type Crud
- type Event
- func NewAccessEvent(item absto.Item, r *http.Request) Event
- func NewDeleteEvent(request Request, item absto.Item, rendererApp renderer.App) Event
- func NewDescriptionEvent(item absto.Item, shareableURL string, description string, ...) Event
- func NewRenameEvent(old, new absto.Item, shareableURL string, rendererApp renderer.App) Event
- func NewRestartEvent(item absto.Item, subset string) Event
- func NewStartEvent(item absto.Item) Event
- func NewUploadEvent(request Request, item absto.Item, shareableURL string, ...) Event
- type EventBus
- type EventConsumer
- type EventProducer
- type EventType
- type ExifManager
- type ExifResponse
- type Preferences
- type Renamer
- type RenderItem
- type Request
- func (r Request) AbsoluteURL(name string) string
- func (r Request) DeletePreference(path string) Request
- func (r Request) Description() string
- func (r Request) Filepath() string
- func (r Request) IsStory() bool
- func (r Request) LayoutPath(path string) string
- func (r Request) RelativeURL(item absto.Item) string
- func (r Request) String() string
- func (r Request) SubPath(name string) string
- func (r Request) Title() string
- func (r Request) UpdatePreferences() Request
- type Share
- type ShareManager
- type StoryItem
- type Webhook
- type WebhookKind
- type WebhookManager
Constants ¶
View Source
const ( // MetadataDirectoryName directory where metadata are stored MetadataDirectoryName = "/.fibr" // MaxConcurrency defines how many concurrent task can be launch in parallel when possible MaxConcurrency = uint64(6) )
Variables ¶
View Source
var ( ArchiveExtensions = map[string]bool{".zip": true, ".tar": true, ".gz": true, ".rar": true} AudioExtensions = map[string]bool{".mp3": true} CodeExtensions = map[string]bool{".html": true, ".css": true, ".js": true, ".jsx": true, ".json": true, ".yml": true, ".yaml": true, ".toml": true, ".md": true, ".go": true, ".py": true, ".java": true, ".xml": true} ExcelExtensions = map[string]bool{".xls": true, ".xlsx": true, ".xlsm": true} ImageExtensions = map[string]bool{".jpg": true, ".jpeg": true, ".png": true, ".gif": true, ".svg": true, ".tiff": true, ".webp": true} PdfExtensions = map[string]bool{".pdf": true} VideoExtensions = map[string]string{".mp4": "video/mp4", ".mov": "video/mp4", ".avi": "video/x-msvideo", ".ogg": "video/ogg", ".mkv": "video/x-matroska"} StreamExtensions = map[string]bool{".ts": true} WordExtensions = map[string]bool{".doc": true, ".docx": true, ".docm": true} // ThumbnailExtensions contains extensions of file eligible to thumbnail ThumbnailExtensions = map[string]bool{".jpg": true, ".jpeg": true, ".png": true, ".gif": true, ".tiff": true, ".webp": true, ".pdf": true, ".mp4": true, ".mov": true, ".avi": true, ".ogg": true, ".mkv": true} )
View Source
var ( // GridDisplay format GridDisplay = "grid" // ListDisplay format ListDisplay = "list" // StoryDisplay format StoryDisplay = "story" // DefaultDisplay format DefaultDisplay = GridDisplay // LayoutPathsCookieName for saving preferences LayoutPathsCookieName = "layout_paths" )
View Source
var ( BufferPool = sync.Pool{ New: func() any { return bytes.NewBuffer(make([]byte, 4*1024)) }, } SlowClient = request.CreateClient(5*time.Minute, request.NoRedirection) )
View Source
var WebhookKindValues = []string{"raw", "discord", "slack", "telegram"}
WebhookKindValues string values
Functions ¶
func GetPathname ¶
func MetadataDirectory ¶ added in v0.18.0
func RemoveIndex ¶
func RenameDirectory ¶ added in v0.18.0
func SendLargeFile ¶ added in v0.9.0
func SetPrefsCookie ¶ added in v0.4.1
func SetPrefsCookie(w http.ResponseWriter, request Request)
Types ¶
type ByHybridSort ¶ added in v0.9.0
ByHybridSort implements Sorter by type then modification time
func (ByHybridSort) Len ¶ added in v0.9.0
func (a ByHybridSort) Len() int
func (ByHybridSort) Less ¶ added in v0.9.0
func (a ByHybridSort) Less(i, j int) bool
func (ByHybridSort) Swap ¶ added in v0.9.0
func (a ByHybridSort) Swap(i, j int)
type Crud ¶ added in v0.8.0
type Crud interface {
Get(http.ResponseWriter, *http.Request, Request) (renderer.Page, error)
Post(http.ResponseWriter, *http.Request, Request)
Create(http.ResponseWriter, *http.Request, Request)
Rename(http.ResponseWriter, *http.Request, Request)
Delete(http.ResponseWriter, *http.Request, Request)
}
type Event ¶ added in v0.7.0
type Event struct {
Time time.Time `json:"time"`
New *absto.Item `json:"new,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
URL string `json:"url,omitempty"`
TraceLink trace.Link `json:"-"`
Item absto.Item `json:"item"`
Type EventType `json:"type"`
}
func NewDeleteEvent ¶ added in v0.7.0
func NewDescriptionEvent ¶ added in v0.20.0
func NewRenameEvent ¶ added in v0.7.0
func NewStartEvent ¶ added in v0.7.0
func NewUploadEvent ¶ added in v0.7.0
func (Event) BrowserURL ¶ added in v0.22.0
func (Event) GetMetadata ¶ added in v0.14.0
func (Event) IsForcedFor ¶ added in v0.18.0
IsForcedFor check if event is forced for given key
type EventBus ¶ added in v0.7.0
type EventBus struct {
// contains filtered or unexported fields
}
EventBus describes a channel for exchanging Event
func NewEventBus ¶ added in v0.7.0
func NewEventBus(size uint64, prometheusRegisterer prometheus.Registerer, tracer trace.Tracer) (EventBus, error)
type EventConsumer ¶ added in v0.7.0
EventConsumer is a func that consume an event
type EventProducer ¶ added in v0.7.0
EventProducer is a func that push an event
type EventType ¶ added in v0.7.0
type EventType uint
EventType is the enumeration of event that can happen
const ( // UploadEvent occurs when someone upload a file UploadEvent EventType = iota // CreateDir occurs when a directory is created CreateDir // RenameEvent occurs when an item is renamed RenameEvent // DeleteEvent occurs when an item is deleted DeleteEvent // StartEvent occurs when fibr start StartEvent // AccessEvent occurs when content is accessed AccessEvent // DescriptionEvent occurs when a description is added DescriptionEvent )
func ParseEventType ¶ added in v0.8.0
func (EventType) MarshalJSON ¶ added in v0.8.0
MarshalJSON marshals the enum as a quoted json string
func (*EventType) UnmarshalJSON ¶ added in v0.8.0
type ExifManager ¶ added in v0.16.0
type ExifManager interface {
ListDir(ctx context.Context, item absto.Item) ([]absto.Item, error)
GetAggregateFor(ctx context.Context, item absto.Item) (Aggregate, error)
ListAggregateFor(ctx context.Context, items ...absto.Item) (map[string]Aggregate, error)
SaveAggregateFor(ctx context.Context, item absto.Item, aggregate Aggregate) error
GetExifFor(ctx context.Context, item absto.Item) (exas.Exif, error)
ListExifFor(ctx context.Context, items ...absto.Item) (map[string]exas.Exif, error)
SaveExifFor(ctx context.Context, item absto.Item, exif exas.Exif) error
}
type ExifResponse ¶ added in v0.10.0
type Preferences ¶
func ParsePreferences ¶ added in v0.16.0
func ParsePreferences(value string) Preferences
func (Preferences) AddLayout ¶ added in v0.16.0
func (p Preferences) AddLayout(path, display string) Preferences
func (Preferences) RemoveLayout ¶ added in v0.16.0
func (p Preferences) RemoveLayout(path string) Preferences
type RenderItem ¶
type RenderItem struct {
Aggregate
URL string
Path string
absto.Item
HasThumbnail bool
IsCover bool
}
func StorageToRender ¶ added in v0.12.0
func StorageToRender(item absto.Item, request Request) RenderItem
func (RenderItem) IsImage ¶ added in v0.14.0
func (r RenderItem) IsImage() bool
func (RenderItem) IsVideo ¶ added in v0.14.0
func (r RenderItem) IsVideo() bool
func (RenderItem) IsZero ¶ added in v0.15.0
func (r RenderItem) IsZero() bool
func (RenderItem) Mime ¶ added in v0.13.0
func (r RenderItem) Mime() string
func (RenderItem) String ¶ added in v0.24.0
func (r RenderItem) String() string
type Request ¶
type Request struct {
Path string
Item string
Display string
Preferences Preferences
CanEdit bool
CanWebhook bool
}
func (Request) AbsoluteURL ¶ added in v0.12.0
func (Request) DeletePreference ¶ added in v0.16.0
func (Request) Description ¶ added in v0.4.1
func (Request) LayoutPath ¶
func (Request) UpdatePreferences ¶ added in v0.16.0
type ShareManager ¶ added in v0.8.0
type ShareManager interface {
}
type StoryItem ¶ added in v0.16.0
type StoryItem struct {
Exif model.Exif
RenderItem
}
func StorageToStory ¶ added in v0.16.0
type Webhook ¶ added in v0.8.0
type WebhookKind ¶ added in v0.12.0
type WebhookKind int
WebhookKind defines constant for webhook kind
const ( // Raw webhook Raw WebhookKind = iota // Discord webhook Discord // Slack webhook Slack // Telegram webhook Telegram )
func ParseWebhookKind ¶ added in v0.12.0
func ParseWebhookKind(value string) (WebhookKind, error)
ParseWebhookKind parse raw string into a WebhookKind
func (WebhookKind) MarshalJSON ¶ added in v0.12.0
func (r WebhookKind) MarshalJSON() ([]byte, error)
MarshalJSON marshals the enum as a quoted json string
func (WebhookKind) String ¶ added in v0.12.0
func (r WebhookKind) String() string
func (*WebhookKind) UnmarshalJSON ¶ added in v0.12.0
func (r *WebhookKind) UnmarshalJSON(b []byte) error
UnmarshalJSON unmarshal JSON
Click to show internal directories.
Click to hide internal directories.