sfs

package module
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Aug 11, 2021 License: Apache-2.0 Imports: 6 Imported by: 0

README

sfs. Sample file server

This project shows golang + valilla js example for

  • miltifile upload with async processing
  • publish processing results via websockets
  • build page with delayed widget generation

Project status: PoC is ready

Project components

cauth

Cookie Auth

  • generate user token and save cookie
  • read token from cookie
pubsub

Simple golang pub/sub (in memory)

sfs.go

File upload handlers

  • /upload
  • /api/files
  • /file/:id
storage

Simple file storage powered by badger

stream

Stream data to client via websocket

Handler for /ws/:RequestID/:Token/ request. Subscribe client on messages:

  • user.:Token
  • once.widget.:RequestID
widget

Widget processing sample

  • widget.go - /api/widget.js request handler. Fetch RequestID and raise "widget" event
  • handlers.go - "widget" event handler. Generates widgets and publish them via "once.widget."+req.RequestID

Widget ideas based on post from Yandex

Documentation

Overview

Package upload implements file upload handlers.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNoAnyFile returned when request does not contain item in field 'files[]'
	ErrNoAnyFile = errors.New("field 'file' does not contains any item")
	// ErrNoAuth returned on Internal Server Error (no auth for upload)
	ErrNoAuth = errors.New("This endpoint must be under AuthRequired")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	FilesFieldName string `long:"field" default:"files[]" description:"Files form field name"`
}

Config holds all config vars

type Service

type Service struct {
	Config     *Config
	Log        *log.SugaredLogger
	ContextKey string
	// contains filtered or unexported fields
}

Service holds upload service

func New

func New(cfg Config, logger *log.SugaredLogger, store *storage.Service, key string) *Service

New creates an Service object

func (Service) File

func (srv Service) File() func(c *gin.Context)

AuthRequired is a simple middleware to check the session

func (Service) Files

func (srv Service) Files() func(c *gin.Context)

AuthRequired is a simple middleware to check the session

func (Service) HandleMultiPart

func (srv Service) HandleMultiPart(c *gin.Context)

func (Service) SetupRouter

func (srv Service) SetupRouter(r *gin.Engine)

Directories

Path Synopsis
Package upload implements image upload handlers.
Package upload implements image upload handlers.
cmd
sfs
Package pubsub contains a simple pub/sub
Package pubsub contains a simple pub/sub
Package storage implements disk file operations.
Package storage implements disk file operations.
Package upload implements image upload handlers.
Package upload implements image upload handlers.
Package upload implements image upload handlers.
Package upload implements image upload handlers.

Jump to

Keyboard shortcuts

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