requested changes
This commit is contained in:
parent
f2c0fd08e3
commit
29bf5a3b14
@ -51,7 +51,7 @@ func NewHandler(imgSvc ImgService, fileCache FileCache, store *storage.Storage,
|
|||||||
api.PathPrefix("/resources").Handler(monkey(resourcePostPutHandler, "/api/resources")).Methods("PUT")
|
api.PathPrefix("/resources").Handler(monkey(resourcePostPutHandler, "/api/resources")).Methods("PUT")
|
||||||
api.PathPrefix("/resources").Handler(monkey(resourcePatchHandler, "/api/resources")).Methods("PATCH")
|
api.PathPrefix("/resources").Handler(monkey(resourcePatchHandler, "/api/resources")).Methods("PATCH")
|
||||||
|
|
||||||
api.Path("/shares").Handler(monkey(shareListHandler, "")).Methods("GET")
|
api.Path("/shares").Handler(monkey(shareListHandler, "/api/shares")).Methods("GET")
|
||||||
api.PathPrefix("/share").Handler(monkey(shareGetsHandler, "/api/share")).Methods("GET")
|
api.PathPrefix("/share").Handler(monkey(shareGetsHandler, "/api/share")).Methods("GET")
|
||||||
api.PathPrefix("/share").Handler(monkey(sharePostHandler, "/api/share")).Methods("POST")
|
api.PathPrefix("/share").Handler(monkey(sharePostHandler, "/api/share")).Methods("POST")
|
||||||
api.PathPrefix("/share").Handler(monkey(shareDeleteHandler, "/api/share")).Methods("DELETE")
|
api.PathPrefix("/share").Handler(monkey(shareDeleteHandler, "/api/share")).Methods("DELETE")
|
||||||
|
|||||||
@ -25,11 +25,15 @@ func withPermShare(fn handleFunc) handleFunc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var shareListHandler = withPermShare(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
|
var shareListHandler = withPermShare(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
|
||||||
id := d.user.ID
|
var (
|
||||||
|
s []*share.Link
|
||||||
|
err error
|
||||||
|
)
|
||||||
if d.user.Perm.Admin {
|
if d.user.Perm.Admin {
|
||||||
id = 0
|
s, err = d.store.Share.All()
|
||||||
|
} else {
|
||||||
|
s, err = d.store.Share.FindByUserID(d.user.ID)
|
||||||
}
|
}
|
||||||
s, err := d.store.Share.List(id)
|
|
||||||
if err == errors.ErrNotExist {
|
if err == errors.ErrNotExist {
|
||||||
return renderJSON(w, r, []*share.Link{})
|
return renderJSON(w, r, []*share.Link{})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,8 @@ import (
|
|||||||
|
|
||||||
// StorageBackend is the interface to implement for a share storage.
|
// StorageBackend is the interface to implement for a share storage.
|
||||||
type StorageBackend interface {
|
type StorageBackend interface {
|
||||||
List(id uint) ([]*Link, error)
|
All() ([]*Link, error)
|
||||||
|
FindByUserID(id uint) ([]*Link, error)
|
||||||
GetByHash(hash string) (*Link, error)
|
GetByHash(hash string) (*Link, error)
|
||||||
GetPermanent(path string, id uint) (*Link, error)
|
GetPermanent(path string, id uint) (*Link, error)
|
||||||
Gets(path string, id uint) ([]*Link, error)
|
Gets(path string, id uint) ([]*Link, error)
|
||||||
@ -26,9 +27,29 @@ func NewStorage(back StorageBackend) *Storage {
|
|||||||
return &Storage{back: back}
|
return &Storage{back: back}
|
||||||
}
|
}
|
||||||
|
|
||||||
// List wraps a StorageBackend.List.
|
// All wraps a StorageBackend.All.
|
||||||
func (s *Storage) List(id uint) ([]*Link, error) {
|
func (s *Storage) All() ([]*Link, error) {
|
||||||
links, err := s.back.List(id)
|
links, err := s.back.All()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, link := range links {
|
||||||
|
if link.Expire != 0 && link.Expire <= time.Now().Unix() {
|
||||||
|
if err := s.Delete(link.Hash); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
links = append(links[:i], links[i+1:]...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return links, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindByUserID wraps a StorageBackend.FindByUserID.
|
||||||
|
func (s *Storage) FindByUserID(id uint) ([]*Link, error) {
|
||||||
|
links, err := s.back.FindByUserID(id)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@ -12,16 +12,19 @@ type shareBackend struct {
|
|||||||
db *storm.DB
|
db *storm.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s shareBackend) List(id uint) ([]*share.Link, error) {
|
func (s shareBackend) All() ([]*share.Link, error) {
|
||||||
var (
|
var v []*share.Link
|
||||||
v []*share.Link
|
err := s.db.All(&v)
|
||||||
err error
|
if err == storm.ErrNotFound {
|
||||||
)
|
return v, errors.ErrNotExist
|
||||||
if id == 0 {
|
|
||||||
err = s.db.All(&v)
|
|
||||||
} else {
|
|
||||||
err = s.db.Select(q.Eq("UserID", id)).Find(&v)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return v, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s shareBackend) FindByUserID(id uint) ([]*share.Link, error) {
|
||||||
|
var v []*share.Link
|
||||||
|
err := s.db.Select(q.Eq("UserID", id)).Find(&v)
|
||||||
if err == storm.ErrNotFound {
|
if err == storm.ErrNotFound {
|
||||||
return v, errors.ErrNotExist
|
return v, errors.ErrNotExist
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user