Documentation
¶
Index ¶
- Constants
- Variables
- func Dirname(name string) string
- func DoneWriter(isDone func() bool, w io.Writer, content string)
- func FindIndex(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(storageApp absto.Storage, filename string, content interface{}) (err error)
- func RemoveIndex(arr []string, index int) []string
- func SafeWrite(w io.Writer, content string)
- func SanitizeName(name string, removeSlash bool) (string, error)
- func SaveJSON(storageApp absto.Storage, filename string, content interface{}) 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(storageApp absto.Storage, output string, reader io.Reader) error
- type Aggregate
- type Auth
- type ByHybridSort
- 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 NewRenameEvent(old, new absto.Item, shareableURL string, rendererApp renderer.App) 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 ExifResponse
- type Preferences
- type RenderItem
- type Request
- type Share
- type ShareManager
- type Webhook
- type WebhookKind
- type WebhookManager
Constants ¶
const (
// MetadataDirectoryName directory where metadata are stored
MetadataDirectoryName = "/.fibr"
)
Variables ¶
var ( // ArchiveExtensions contains extensions of Archive ArchiveExtensions = map[string]bool{".zip": true, ".tar": true, ".gz": true, ".rar": true} // AudioExtensions contains extensions of Audio AudioExtensions = map[string]bool{".mp3": true} // CodeExtensions contains extensions of Code 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 contains extensions of Excel ExcelExtensions = map[string]bool{".xls": true, ".xlsx": true, ".xlsm": true} // ImageExtensions contains extensions of Image ImageExtensions = map[string]bool{".jpg": true, ".jpeg": true, ".png": true, ".gif": true, ".svg": true, ".tiff": true} // PdfExtensions contains extensions of Pdf PdfExtensions = map[string]bool{".pdf": true} // VideoExtensions contains extensions of Video VideoExtensions = map[string]string{".mp4": "video/mp4", ".mov": "video/mp4", ".avi": "video/x-msvideo", ".ogg": "video/ogg"} // StreamExtensions contains extensions of streamable content StreamExtensions = map[string]bool{".ts": true} // WordExtensions contains extensions of Word 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, ".pdf": true, ".mp4": true, ".mov": true, ".avi": true} )
var ( // GridDisplay format GridDisplay = "grid" // ListDisplay format ListDisplay = "list" // DefaultDisplay format DefaultDisplay = GridDisplay )
var ( // BufferPool for io.CopyBuffer BufferPool = sync.Pool{ New: func() interface{} { return bytes.NewBuffer(make([]byte, 4*1024)) }, } // SlowClient allows 2 minutes timeout SlowClient = request.CreateClient(2*time.Minute, request.NoRedirection) )
var WebhookKindValues = []string{"raw", "discord", "slack", "telegram"}
WebhookKindValues string values
Functions ¶
func DoneWriter ¶ added in v0.13.0
DoneWriter writes content to writer with error handling and done checking
func GetPathname ¶
GetPathname computes pathname for given params
func HandleClose ¶ added in v0.11.0
HandleClose closes given closer respecting given err
func RemoveIndex ¶
RemoveIndex removes element at given index, if valid
func SanitizeName ¶
SanitizeName return sanitized name (remove diacritics)
func SendLargeFile ¶ added in v0.9.0
func SendLargeFile(ctx context.Context, storageApp absto.Storage, item absto.Item, req request.Request) (*http.Response, error)
SendLargeFile in a request with buffered copy
func SetPrefsCookie ¶ added in v0.4.1
func SetPrefsCookie(w http.ResponseWriter, request Request)
SetPrefsCookie set preferences cookie for given request
Types ¶
type Aggregate ¶ added in v0.7.0
type Aggregate struct {
Start time.Time `json:"start,omitempty"`
End time.Time `json:"end,omitempty"`
Location string `json:"location"`
}
Aggregate contains aggregated data for a folder
type Auth ¶ added in v0.8.0
type Auth interface {
IsAuthenticated(*http.Request) (ident.Provider, model.User, error)
IsAuthorized(context.Context, string) bool
}
Auth manager user authentication/authorization
type ByHybridSort ¶ added in v0.9.0
ByHybridSort implements Sorter by type, name 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 {
Start(done <-chan struct{})
Browser(http.ResponseWriter, Request, absto.Item, renderer.Message) (string, int, map[string]interface{}, error)
List(Request, renderer.Message, absto.Item, []absto.Item) (string, int, map[string]interface{}, error)
Get(http.ResponseWriter, *http.Request, Request) (string, int, map[string]interface{}, error)
Post(http.ResponseWriter, *http.Request, Request)
Create(http.ResponseWriter, *http.Request, Request)
Upload(http.ResponseWriter, *http.Request, Request, map[string]string, *multipart.Part)
Rename(http.ResponseWriter, *http.Request, Request)
Delete(http.ResponseWriter, *http.Request, Request)
}
Crud for user to interfact with filesystem
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"`
Item absto.Item `json:"item"`
Type EventType `json:"type"`
}
Event describes an event on fibr
func NewAccessEvent ¶ added in v0.8.0
NewAccessEvent creates a new access event
func NewDeleteEvent ¶ added in v0.7.0
NewDeleteEvent creates a new delete event
func NewRenameEvent ¶ added in v0.7.0
NewRenameEvent creates a new rename event
func NewStartEvent ¶ added in v0.7.0
NewStartEvent creates a new start event
func NewUploadEvent ¶ added in v0.7.0
func NewUploadEvent(request Request, item absto.Item, shareableURL string, rendererApp renderer.App) Event
NewUploadEvent creates a new upload event
func (Event) GetMetadata ¶ added in v0.14.0
GetMetadata extracts metadata content
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 uint, prometheusRegisterer prometheus.Registerer) (EventBus, error)
NewEventBus create an event exchange channel
func (EventBus) Start ¶ added in v0.7.0
func (e EventBus) Start(done <-chan struct{}, consumers ...EventConsumer)
Start the distibution of Event
type EventConsumer ¶ added in v0.7.0
type EventConsumer func(Event)
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 )
func ParseEventType ¶ added in v0.8.0
ParseEventType parse raw string into an EventType
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
UnmarshalJSON unmarshal JSON
type ExifResponse ¶ added in v0.10.0
ExifResponse from AMQP
type Preferences ¶
type Preferences struct {
ListLayoutPath []string
}
Preferences holds preferences of the user
type RenderItem ¶
RenderItem is a storage item with an id
func StorageToRender ¶ added in v0.12.0
func StorageToRender(item absto.Item, request Request) RenderItem
StorageToRender converts Item to RenderItem
func (RenderItem) IsImage ¶ added in v0.14.0
func (r RenderItem) IsImage() bool
IsImage check if item is an image
func (RenderItem) IsVideo ¶ added in v0.14.0
func (r RenderItem) IsVideo() bool
IsVideo check if item is an image
func (RenderItem) Mime ¶ added in v0.13.0
func (r RenderItem) Mime() string
Mime gives Mime Type of item
type Request ¶
type Request struct {
Path string
Item string
Display string
Preferences Preferences
CanEdit bool
CanWebhook bool
}
Request from user
func (Request) AbsoluteURL ¶ added in v0.12.0
AbsoluteURL compute absolute URL for the given name
func (Request) Description ¶ added in v0.4.1
Description returns description of the page
func (Request) LayoutPath ¶
LayoutPath returns layout of given path based on preferences
func (Request) RelativeURL ¶ added in v0.12.0
RelativeURL compute relative URL of item for that request
type Share ¶
type Share struct {
}
Share stores informations about shared paths
func (Share) CheckPassword ¶
CheckPassword verifies that request has correct password for share
type Webhook ¶ added in v0.8.0
type Webhook struct {
ID string `json:"id"`
Pathname string `json:"pathname"`
URL string `json:"url"`
Types []EventType `json:"types"`
Kind WebhookKind `json:"kind"`
Recursive bool `json:"recursive"`
}
Webhook stores informations about webhook
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