package main import ( "git.kuschku.de/justjanne/imghost-frontend/api" "git.kuschku.de/justjanne/imghost-frontend/configuration" "git.kuschku.de/justjanne/imghost-frontend/environment" "git.kuschku.de/justjanne/imghost-frontend/util" "github.com/gorilla/mux" _ "github.com/lib/pq" "gopkg.in/yaml.v2" "net/http" "os" ) func main() { var config configuration.FrontendConfiguration configFile, err := os.Open("config.yaml") if err != nil { panic(err) } err = yaml.NewDecoder(configFile).Decode(&config) if err != nil { panic(err) } env, err := environment.NewFrontendEnvironment(config) if err != nil { panic(err) } defer env.Destroy() router := mux.NewRouter() // Image API router.Handle( "/api/v1/images", api.ListImages(env)).Methods(http.MethodGet, http.MethodOptions) router.Handle( "/api/v1/images", api.UploadImage(env)).Methods(http.MethodPost, http.MethodOptions) router.Handle( "/api/v1/images/{imageId}", api.GetImage(env)).Methods(http.MethodGet, http.MethodOptions) router.Handle( "/api/v1/images/{imageId}", api.UpdateImage(env)).Methods(http.MethodPost, http.MethodOptions) router.Handle( "/api/v1/images/{imageId}", api.DeleteImage(env)).Methods(http.MethodDelete, http.MethodOptions) // Album API router.Handle( "/api/v1/albums", api.ListAlbums(env)).Methods(http.MethodGet, http.MethodOptions) router.Handle( "/api/v1/albums", api.CreateAlbum(env)).Methods(http.MethodPost, http.MethodOptions) router.Handle( "/api/v1/albums/{albumId}", api.GetAlbum(env)).Methods(http.MethodGet, http.MethodOptions) router.Handle( "/api/v1/albums/{albumId}", api.UpdateAlbum(env)).Methods(http.MethodPost, http.MethodOptions) router.Handle( "/api/v1/albums/{albumId}/reorder", api.ReorderAlbum(env)).Methods(http.MethodPost, http.MethodOptions) router.Handle( "/api/v1/albums/{albumId}", api.DeleteAlbum(env)).Methods(http.MethodDelete, http.MethodOptions) // Album Image API router.Handle( "/api/v1/albums/{albumId}/images/{imageId}", api.UpdateAlbumImage(env)).Methods(http.MethodPost, http.MethodOptions) router.Handle( "/api/v1/albums/{albumId}/images", api.CreateAlbumImage(env)).Methods(http.MethodPost, http.MethodOptions) router.Handle( "/api/v1/albums/{albumId}/images/{imageId}", api.DeleteAlbumImage(env)).Methods(http.MethodDelete, http.MethodOptions) if err = http.ListenAndServe(":8080", util.CorsWrapper(router)); err != nil { panic(err) } }