Categorygithub.com/fclairamb/afero-dropbox
modulepackage
0.1.0
Repository: https://github.com/fclairamb/afero-dropbox.git
Documentation: pkg.go.dev

# README

Dropbox Backend for Afero

Go version Build codecov Go Report Card GoDoc

About

It provides an afero filesystem implementation of a Dropbox backend.

This was created to provide a backend to the ftpserver but can definitely be used in any other code.

I'm very opened to any improvement through issues or pull-request that might lead to a better implementation or even better testing.

It is implemented on top of the Dropbox Go SDK.

Key points

  • Download & upload file streaming
  • Some coverage (all APIs are tested, but not all errors are reproduced)
  • Very carefully linted

Known limitations

  • File appending / seeking for write is not supported because dropbox doesn't support it
  • Chmod / Chtimes are not supported because dropbox doesn't support it

How to use

Note: Errors handling is skipped for brevity, but you definitely have to handle it.

package main

import(
	"os"
	
	dropbox "github.com/fclairamb/afero-dropbox"
)

func main() {
  // You access an FS with it's token
  fs := dropbox.NewFs(os.Getenv("DROPBOX_TOKEN"))
  
  // And do your thing
  file, _ := fs.OpenFile("file.txt", os.O_WRONLY, 0777)
  file.WriteString("Hello world !")
  file.Close()
}

# Functions

NewFs creates new dropbox FS instance.

# Variables

ErrAlreadyOpened is returned when the file is already opened.
ErrInvalidSeek is returned when the seek operation is not doable.
ErrNotSupported is returned when this operations is not supported by S3.

# Structs

File represents a file structure.
FileInfo is dropbox file description.
Fs is the dropbox filesystem.