Micro-service for file storage and processing written in Go
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package controllers
import ( "encoding/json" "io/ioutil" "net/http" "time"
"github.com/geplauder/lithium/pipelines" "github.com/geplauder/lithium/settings" "github.com/geplauder/lithium/storage" )
type File struct { Bucket string `json:"bucket"` FileName string `json:"file_name"` Size int `json:"size"` ModifiedAt time.Time `json:"modified_at"` }
func FileHandler(w http.ResponseWriter, r *http.Request, pipes []pipelines.IPipeline, storageProvider storage.IStorageProvider, appSettings settings.Settings) { buckets, err := ioutil.ReadDir("./files/" + appSettings.StorageProvider.BasePath) if err != nil { json.NewEncoder(w).Encode(struct { Files []File `json:"files"` }{}) return }
var files []File
for _, b := range buckets { bucketFiles, err := ioutil.ReadDir("./files/" + appSettings.StorageProvider.BasePath + "/" + b.Name()) if err != nil { writeError(w, 500, "Base path not found") return }
for _, f := range bucketFiles { files = append(files, File{b.Name(), f.Name(), int(f.Size()), f.ModTime()}) } }
err = json.NewEncoder(w).Encode(struct { Files []File `json:"files"` }{files}) if err != nil { w.WriteHeader(http.StatusInternalServerError) } }
|