forked from mirrors/gotosocial
3d77f81c7f
Lots of renaming and moving stuff, some bug fixes, more lenient parsing of notifications and home timeline.
55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package blob
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/superseriousbusiness/gotosocial/internal/config"
|
|
)
|
|
|
|
// NewInMem returns an in-memory implementation of the Storage interface.
|
|
// This is good for testing and whatnot but ***SHOULD ABSOLUTELY NOT EVER
|
|
// BE USED IN A PRODUCTION SETTING***, because A) everything will be wiped out
|
|
// if you restart the server and B) if you store lots of images your RAM use
|
|
// will absolutely go through the roof.
|
|
func NewInMem(c *config.Config, log *logrus.Logger) (Storage, error) {
|
|
return &inMemStorage{
|
|
stored: make(map[string][]byte),
|
|
log: log,
|
|
}, nil
|
|
}
|
|
|
|
type inMemStorage struct {
|
|
stored map[string][]byte
|
|
log *logrus.Logger
|
|
}
|
|
|
|
func (s *inMemStorage) StoreFileAt(path string, data []byte) error {
|
|
l := s.log.WithField("func", "StoreFileAt")
|
|
l.Debugf("storing at path %s", path)
|
|
s.stored[path] = data
|
|
return nil
|
|
}
|
|
|
|
func (s *inMemStorage) RetrieveFileFrom(path string) ([]byte, error) {
|
|
l := s.log.WithField("func", "RetrieveFileFrom")
|
|
l.Debugf("retrieving from path %s", path)
|
|
d, ok := s.stored[path]
|
|
if !ok || len(d) == 0 {
|
|
return nil, fmt.Errorf("no data found at path %s", path)
|
|
}
|
|
return d, nil
|
|
}
|
|
|
|
func (s *inMemStorage) ListKeys() ([]string, error) {
|
|
keys := []string{}
|
|
for k := range s.stored {
|
|
keys = append(keys, k)
|
|
}
|
|
return keys, nil
|
|
}
|
|
|
|
func (s *inMemStorage) RemoveFileAt(path string) error {
|
|
delete(s.stored, path)
|
|
return nil
|
|
}
|