2013-10-21 18:22:02 +00:00
|
|
|
package gitmedia
|
|
|
|
|
|
|
|
import (
|
2014-06-03 15:08:58 +00:00
|
|
|
"github.com/github/git-media/queuedir"
|
2013-10-21 18:22:02 +00:00
|
|
|
"path/filepath"
|
|
|
|
)
|
|
|
|
|
2014-06-05 18:48:23 +00:00
|
|
|
func QueueUpload(sha, filename string) error {
|
2014-03-12 14:40:52 +00:00
|
|
|
fileBody := sha
|
|
|
|
|
|
|
|
if filename != "" {
|
|
|
|
fileBody += ":" + filename
|
|
|
|
}
|
|
|
|
|
2014-06-05 18:48:23 +00:00
|
|
|
q, err := UploadQueue()
|
2013-10-21 18:22:02 +00:00
|
|
|
if err != nil {
|
2014-06-05 18:48:23 +00:00
|
|
|
return err
|
2013-10-21 18:22:02 +00:00
|
|
|
}
|
2014-06-05 18:48:23 +00:00
|
|
|
|
|
|
|
_, err = q.AddString(fileBody)
|
|
|
|
return err
|
2013-10-21 18:22:02 +00:00
|
|
|
}
|
|
|
|
|
2013-10-21 18:36:06 +00:00
|
|
|
func WalkQueues(cb func(name string, queue *queuedir.Queue) error) error {
|
|
|
|
var err error
|
|
|
|
for name, queuefunc := range queues {
|
2014-06-05 18:48:23 +00:00
|
|
|
q, err := queuefunc()
|
|
|
|
if err == nil {
|
|
|
|
err = cb(name, q)
|
|
|
|
}
|
2013-10-21 18:36:06 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2014-06-05 18:48:23 +00:00
|
|
|
func UploadQueue() (*queuedir.Queue, error) {
|
2013-10-21 18:22:02 +00:00
|
|
|
if uploadQueue == nil {
|
|
|
|
q, err := queueDir.Queue("upload")
|
|
|
|
if err != nil {
|
2014-06-05 18:48:23 +00:00
|
|
|
return nil, err
|
2013-10-21 18:22:02 +00:00
|
|
|
}
|
|
|
|
uploadQueue = q
|
|
|
|
}
|
|
|
|
|
2014-06-05 18:48:23 +00:00
|
|
|
return uploadQueue, nil
|
2013-10-21 18:22:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func setupQueueDir() *queuedir.QueueDir {
|
|
|
|
return queuedir.New(filepath.Join(LocalMediaDir, "queue"))
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
2014-06-05 18:48:23 +00:00
|
|
|
queues = map[string]func() (*queuedir.Queue, error){
|
2013-10-21 18:42:29 +00:00
|
|
|
"upload": UploadQueue,
|
2013-10-21 18:36:06 +00:00
|
|
|
}
|
2013-10-21 18:22:02 +00:00
|
|
|
queueDir *queuedir.QueueDir
|
|
|
|
uploadQueue *queuedir.Queue
|
|
|
|
)
|