117 lines
2.8 KiB
Go
117 lines
2.8 KiB
Go
package routes
|
|
|
|
import (
|
|
"net/http"
|
|
"fmt"
|
|
// "reichard.io/imagini/internal/db"
|
|
"github.com/tus/tusd/pkg/filestore"
|
|
tusd "github.com/tus/tusd/pkg/handler"
|
|
)
|
|
|
|
func RegisterRoutes() {
|
|
commonMiddleware := []Middleware{
|
|
logMiddleware,
|
|
authMiddleware,
|
|
}
|
|
http.Handle("/Users", MultipleMiddleware(usersHandler, commonMiddleware...))
|
|
http.Handle("/Uploads/", MultipleMiddleware(uploadsHandler, commonMiddleware...))
|
|
|
|
// http.HandleFunc("/uploads/", uploadsHandler())
|
|
http.Handle("/Uploads/", func(next http.Handler) http.Handler {
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
_, ok := ValidateUserToken(r)
|
|
|
|
if ok {
|
|
next.ServeHTTP(w, r)
|
|
} else {
|
|
w.WriteHeader(http.StatusUnauthorized)
|
|
}
|
|
})
|
|
}(http.StripPrefix("/Uploads/", tusHandler)))
|
|
}
|
|
|
|
// func tagsHandler(w http.ResponseWriter, r *http.Request) {
|
|
// query := r.URL.Query()
|
|
// filters, present := query["filters"]
|
|
// }
|
|
|
|
func helloHandler(w http.ResponseWriter, r *http.Request) {
|
|
if r.URL.Path != "/hello" {
|
|
http.Error(w, "404 not found.", http.StatusNotFound)
|
|
return
|
|
}
|
|
|
|
if r.Method != "GET" {
|
|
http.Error(w, "Method is not supported.", http.StatusNotFound)
|
|
return
|
|
}
|
|
|
|
fmt.Fprintf(w, "Hello!")
|
|
}
|
|
|
|
func uploadsHandler() http.Handler {
|
|
store := filestore.FileStore{
|
|
Path: "./Uploads",
|
|
}
|
|
composer := tusd.NewStoreComposer()
|
|
store.UseIn(composer)
|
|
|
|
handler, err := tusd.NewHandler(tusd.Config{
|
|
BasePath: "/uploads/",
|
|
StoreComposer: composer,
|
|
NotifyCompleteUploads: true,
|
|
})
|
|
|
|
if err != nil {
|
|
panic(fmt.Errorf("Unable to create handler: %s", err))
|
|
}
|
|
|
|
go func() {
|
|
for {
|
|
event := <-handler.CompleteUploads
|
|
fmt.Printf("Upload %s finished\n", event.Upload.ID)
|
|
}
|
|
}()
|
|
|
|
// return func(w http.ResponseWriter, r *http.Request) {
|
|
// http.StripPrefix("/Uploads/", handler).ServeHTTP(w, r)
|
|
// };
|
|
|
|
return http.StripPrefix("/Uploads/", handler)
|
|
}
|
|
|
|
// func processMedia() {
|
|
// var mi db.MediaItem
|
|
//
|
|
// TODO:
|
|
// - Derive Magic -> mediaType
|
|
// - Create Thumbnail
|
|
// - Pull EXIF
|
|
// - EXIFDate
|
|
// - Latitude
|
|
// - Longitude
|
|
// - TensorFlow Classification
|
|
// - https://outcrawl.com/image-recognition-api-go-tensorflow
|
|
// - Update Tags / MediaTags Table
|
|
// - Save Image
|
|
// - Update MediaItems Table
|
|
|
|
|
|
|
|
// import "github.com/disintegration/imaging"
|
|
//
|
|
// img, err := imaging.Open("original.jpg", imaging.AutoOrientation(true))
|
|
// if err != nil {
|
|
// return nil, err
|
|
// }
|
|
//
|
|
// img = imaging.Fit(img, 240, 160, imaging.Lanczos)
|
|
// err = imaging.Save(img, "thumbnail.jpg")
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|