36 lines
1.2 KiB
Go
36 lines
1.2 KiB
Go
package tusd
|
|
|
|
import (
|
|
"io"
|
|
)
|
|
|
|
type MetaData map[string]string
|
|
|
|
type FileInfo struct {
|
|
Id string
|
|
// Total file size in bytes specified in the NewUpload call
|
|
Size int64
|
|
// Offset in bytes (zero-based)
|
|
Offset int64
|
|
MetaData MetaData
|
|
}
|
|
|
|
type DataStore interface {
|
|
// Create a new upload using the size as the file's length. The method must
|
|
// return an unique id which is used to identify the upload. If no backend
|
|
// (e.g. Riak) specifes the id you may want to use the uid package to
|
|
// generate one.
|
|
NewUpload(size int64, metaData MetaData) (id string, err error)
|
|
// Write the chunk read from src into the file specified by the id at the
|
|
// given offset. The handler will take care of validating the offset and
|
|
// limiting the size of the src to not overflow the file's size. It may
|
|
// return an os.ErrNotExist which will be interpretet as a 404 Not Found.
|
|
// It will also lock resources while they are written to ensure only one
|
|
// write happens per time.
|
|
WriteChunk(id string, offset int64, src io.Reader) error
|
|
// Read the fileinformation used to validate the offset and respond to HEAD
|
|
// requests. It may return an os.ErrNotExist which will be interpretet as a
|
|
// 404 Not Found.
|
|
GetInfo(id string) (FileInfo, error)
|
|
}
|