forked from FabianVowie/Lithium
Jenkins
3 years ago
4 changed files with 126 additions and 3 deletions
-
25README.md
-
58controllers/file.go
-
6main.go
-
40main_test.go
@ -0,0 +1,58 @@ |
|||||
|
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 { |
||||
|
if b.IsDir() == false { |
||||
|
continue |
||||
|
} |
||||
|
|
||||
|
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 { |
||||
|
if b.IsDir() == false { |
||||
|
continue |
||||
|
} |
||||
|
|
||||
|
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) |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue