weiro/providers/uploadfiles/provider.go

36 lines
659 B
Go

package uploadfiles
import (
"fmt"
"os"
"path/filepath"
"lmika.dev/lmika/weiro/models"
)
type Provider struct {
baseDir string
}
func New(baseDir string) *Provider {
return &Provider{
baseDir: baseDir,
}
}
func (p *Provider) AdoptFile(site models.Site, up models.Upload, filename string) error {
baseDir := filepath.Join(p.baseDir, site.GUID,
fmt.Sprintf("%04d", up.CreatedAt.Year()),
fmt.Sprintf("%02d", up.CreatedAt.Month()))
if err := os.MkdirAll(baseDir, 0755); err != nil {
return err
}
targetFilename := filepath.Join(baseDir, up.GUID)
if err := os.Rename(filename, targetFilename); err != nil {
return err
}
return nil
}