86 lines
2.1 KiB
Markdown
86 lines
2.1 KiB
Markdown
# file
|
|
|
|
Upload, Download, Delete and list files (optional) as JSON
|
|
|
|
## How
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"github.com/gomango/auth"
|
|
"github.com/gomango/mblog/blog"
|
|
"gopkg.in/mgo.v2"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
func main() {
|
|
ms, e := mgo.Dial("localhost")
|
|
if e != nil {
|
|
log.Fatalln(e.Error())
|
|
}
|
|
authopts := auth.Options{
|
|
Host: "file.dev.luketic",
|
|
MailFrom: "root@localhost",
|
|
MailSupport: "postmaster@localhost",
|
|
TemplatePath: "/home/darko/go/src/github.com/gomango/authtemplates",
|
|
MailTemplatePath: "/home/darko/go/src/github.com/gomango/authemailtemplates/pongo2",
|
|
XSRFkey: auth.GenKey(128),
|
|
Database: "testmblog",
|
|
Account: "account",
|
|
Resetcode: "resetcode",
|
|
Profile: "profile",
|
|
AESkey: auth.GenKey(32),
|
|
HMACkey: auth.GenKey(512),
|
|
BcryptPasswordCost: 12,
|
|
}
|
|
ah := auth.NewAuthHandler(ms, authopts)
|
|
http.Handle("/account/", http.StripPrefix("/account/", ah))
|
|
fileopts := blog.FileHandlerOptions{
|
|
Prefix: "images",
|
|
DB: "testfile",
|
|
MS: ms,
|
|
AllowDuplicate: false,
|
|
DisplayIndex: true,
|
|
}
|
|
fh := blog.NewFileHandler(fileopts)
|
|
http.Handle("/images/", http.StripPrefix("/images/", fh))
|
|
log.Fatal(http.ListenAndServe(":8080", nil))
|
|
}
|
|
|
|
```
|
|
|
|
## Interface
|
|
|
|
PUT and DELETE methods require either
|
|
|
|
* a cookie with the JWT token acquired by logging in ("token=JWT")
|
|
* a HTTP Header Authorization: Bearer JWT
|
|
|
|
Where JWT is the JWT string
|
|
|
|
### AllowDuplicate: true
|
|
|
|
GET /
|
|
|
|
PUT /
|
|
|
|
DELETE /{bsonId:[a-fA-F0-9]{24}}
|
|
|
|
### AllowDuplicate: false
|
|
|
|
GET /
|
|
|
|
PUT /
|
|
|
|
DELETE /{filename:.*}
|
|
|
|
### Other
|
|
|
|
For auth methods see https://github.com/gomango/auth
|
|
|
|
## TODO
|
|
|
|
* Thumbnails
|