provider

package
v0.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2021 License: MIT Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MetadataDirectoryName directory where metadata are stored
	MetadataDirectoryName = ".fibr"
)

Variables

View Source
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/quicktime", ".avi": "video/x-msvideo"}
	// 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}
)
View Source
var (
	// NoneShare is an undefined Share
	NoneShare = Share{}

	// DefaultDisplay format
	DefaultDisplay = "grid"
)
View Source
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)
)

Functions

func Dirname added in v0.9.0

func Dirname(name string) string

Dirname ensures given name is a dirname, with a trailing slash

func ErrNotExist

func ErrNotExist(err error) error

ErrNotExist create a NotExist error

func FindIndex

func FindIndex(arr []string, value string) int

FindIndex finds index of given value into array, or -1 if not found

func GetIP added in v0.10.0

func GetIP(r *http.Request) string

GetIP retrieves request original IP

func GetPathname

func GetPathname(folder, name string, share Share) string

GetPathname computes pathname for given params

func IsNotExist

func IsNotExist(err error) bool

IsNotExist checks if error match a not found

func RemoveIndex

func RemoveIndex(arr []string, index int) []string

RemoveIndex removes element at given index, if valid

func SafeWrite

func SafeWrite(w io.Writer, content string)

SafeWrite writes content to writer with error handling

func SanitizeName

func SanitizeName(name string, removeSlash bool) (string, error)

SanitizeName return sanitized name (remove diacritics)

func SaveJSON added in v0.10.0

func SaveJSON(storageApp Storage, filename string, content interface{}) error

SaveJSON saves JSON content

func SendLargeFile added in v0.9.0

func SendLargeFile(ctx context.Context, storageApp Storage, item StorageItem, 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

func URL added in v0.4.1

func URL(folder, name string, share Share) string

URL computes public URI for given params

Types

type Aggregate added in v0.7.0

type Aggregate struct {
	Start    time.Time `json:"start"`
	End      time.Time `json:"end"`
	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

type ByHybridSort []StorageItem

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

Crud for user to interfact with filesystem

type Event added in v0.7.0

type Event struct {
	New      *StorageItem      `json:"new,omitempty"`
	Metadata map[string]string `json:"metadata"`
	Item     StorageItem       `json:"item"`
	Type     EventType         `json:"type"`
}

Event describes an event on fibr

func NewAccessEvent added in v0.8.0

func NewAccessEvent(item StorageItem, r *http.Request) Event

NewAccessEvent creates a new access event

func NewDeleteEvent added in v0.7.0

func NewDeleteEvent(item StorageItem) Event

NewDeleteEvent creates a new delete event

func NewRenameEvent added in v0.7.0

func NewRenameEvent(old, new StorageItem) Event

NewRenameEvent creates a new rename event

func NewStartEvent added in v0.7.0

func NewStartEvent(item StorageItem) Event

NewStartEvent creates a new start event

func NewUploadEvent added in v0.7.0

func NewUploadEvent(item StorageItem) Event

NewUploadEvent creates a new upload event

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) Push added in v0.7.0

func (e EventBus) Push(event Event) error

Push an event in the bus

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

type EventProducer func(Event) error

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

func ParseEventType(value string) (EventType, error)

ParseEventType parse raw string into an EventType

func (EventType) MarshalJSON added in v0.8.0

func (et EventType) MarshalJSON() ([]byte, error)

MarshalJSON marshals the enum as a quoted json string

func (EventType) String added in v0.8.0

func (et EventType) String() string

String return string values

func (*EventType) UnmarshalJSON added in v0.8.0

func (et *EventType) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshal JSON

type ExifResponse added in v0.10.0

type ExifResponse struct {
	Exif model.Exif  `json:"exif"`
	Item StorageItem `json:"item"`
}

ExifResponse from AMQP

type Preferences

type Preferences struct {
	ListLayoutPath []string
}

Preferences holds preferences of the user

type RenderItem

type RenderItem struct {
	Aggregate
	ID  string
	URI string
	StorageItem
}

RenderItem is a storage item with an id

type Request

type Request struct {
	Path        string
	Display     string
	Preferences Preferences
	Share       Share
	CanEdit     bool
	CanShare    bool
	CanWebhook  bool
}

Request from user

func (Request) Description added in v0.4.1

func (r Request) Description() string

Description returns description of the page

func (Request) GetFilepath

func (r Request) GetFilepath(name string) string

GetFilepath of request

func (Request) Layout

func (r Request) Layout(name string) string

Layout returns layout of given name based on preferences

func (Request) LayoutPath

func (r Request) LayoutPath(path string) string

LayoutPath returns layout of given path based on preferences

func (Request) Title added in v0.4.1

func (r Request) Title() string

Title returns title of the page

func (Request) URL added in v0.4.1

func (r Request) URL(name string) string

URL of request

type Share

type Share struct {
	Creation time.Time     `json:"creation"`
	ID       string        `json:"id"`
	Path     string        `json:"path"`
	RootName string        `json:"rootName"`
	Password string        `json:"password"`
	Duration time.Duration `json:"duration"`
	Edit     bool          `json:"edit"`
	File     bool          `json:"file"`
}

Share stores informations about shared paths

func (Share) CheckPassword

func (s Share) CheckPassword(authorizationHeader string) error

CheckPassword verifies that request has correct password for share

func (Share) IsExpired added in v0.4.0

func (s Share) IsExpired(now time.Time) bool

IsExpired check if given share is expired

type ShareManager added in v0.8.0

type ShareManager interface {
	Enabled() bool
	Get(string) Share
	Create(string, bool, string, bool, time.Duration) (string, error)
	Delete(string) error
	List() map[string]Share
}

ShareManager description

type Storage

type Storage interface {
	WithIgnoreFn(ignoreFn func(StorageItem) bool) Storage
	Info(pathname string) (StorageItem, error)
	List(pathname string) ([]StorageItem, error)
	WriterTo(pathname string) (io.WriteCloser, error)
	ReaderFrom(pathname string) (io.ReadSeekCloser, error)
	Walk(pathname string, walkFn func(StorageItem, error) error) error
	CreateDir(pathname string) error
	Rename(oldName, newName string) error
	Remove(pathname string) error
	UpdateDate(pathname string, date time.Time) error
}

Storage describe action on a storage provider

type StorageItem

type StorageItem struct {
	Date     time.Time `json:"date"`
	Name     string    `json:"name"`
	Pathname string    `json:"pathname"`
	IsDir    bool      `json:"isDir"`
	Size     int64     `json:"size"`
}

StorageItem describe item on a storage provider

func (StorageItem) Dir added in v0.8.0

func (s StorageItem) Dir() string

Dir return the nearest directory (self of parent)

func (StorageItem) Extension

func (s StorageItem) Extension() string

Extension gives extensions of item

func (StorageItem) IsImage

func (s StorageItem) IsImage() bool

IsImage determine if item if an image

func (StorageItem) IsPdf

func (s StorageItem) IsPdf() bool

IsPdf determine if item if a pdf

func (StorageItem) IsVideo

func (s StorageItem) IsVideo() bool

IsVideo determine if item if a video

func (StorageItem) Mime

func (s StorageItem) Mime() string

Mime gives Mime Type of item

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"`
	Recursive bool        `json:"recursive"`
}

Webhook stores informations about webhook

func (Webhook) Match added in v0.8.0

func (w Webhook) Match(e Event) bool

Match determine if storage item match webhook

type WebhookManager added in v0.8.0

type WebhookManager interface {
	Enabled() bool
	Create(string, bool, string, []EventType) (string, error)
	Delete(string) error
	List() map[string]Webhook
}

WebhookManager description

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL