2017-10-06 10:09:58 +00:00
|
|
|
package routes
|
|
|
|
|
|
|
|
import (
|
2017-11-07 15:35:10 +00:00
|
|
|
apiv1 "git.mowie.cc/konrad/Library/routes/api/v1"
|
2017-10-06 10:09:58 +00:00
|
|
|
"github.com/labstack/echo"
|
|
|
|
"github.com/labstack/echo/middleware"
|
2017-10-09 19:06:40 +00:00
|
|
|
|
2017-10-10 08:40:36 +00:00
|
|
|
"git.mowie.cc/konrad/Library/models"
|
2017-10-06 10:09:58 +00:00
|
|
|
)
|
|
|
|
|
2017-11-08 09:55:17 +00:00
|
|
|
// NewEcho registers a new Echo instance
|
2017-10-06 10:09:58 +00:00
|
|
|
func NewEcho() *echo.Echo {
|
|
|
|
e := echo.New()
|
|
|
|
|
2017-10-09 19:06:40 +00:00
|
|
|
// Logger
|
2017-10-06 10:09:58 +00:00
|
|
|
e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{
|
|
|
|
Format: "${time_rfc3339}: ${remote_ip} ${method} ${status} ${uri} - ${user_agent}\n",
|
|
|
|
}))
|
|
|
|
|
2017-10-09 19:06:40 +00:00
|
|
|
// Static Content
|
2017-10-06 10:09:58 +00:00
|
|
|
e.Static("/assets", "assets")
|
|
|
|
|
|
|
|
return e
|
|
|
|
}
|
|
|
|
|
2017-11-08 09:55:17 +00:00
|
|
|
// RegisterRoutes registers all routes for the application
|
2017-10-06 10:09:58 +00:00
|
|
|
func RegisterRoutes(e *echo.Echo) {
|
2017-10-09 12:29:21 +00:00
|
|
|
|
2017-11-08 10:25:13 +00:00
|
|
|
// Basic Route
|
2017-11-08 13:42:43 +00:00
|
|
|
e.Static("/", "assets/index.html")
|
|
|
|
|
|
|
|
// Login Route
|
|
|
|
e.POST("/login", Login)
|
2017-11-08 10:25:13 +00:00
|
|
|
|
2017-10-09 12:29:21 +00:00
|
|
|
// API Routes
|
|
|
|
a := e.Group("/api/v1")
|
2017-10-10 07:47:05 +00:00
|
|
|
// Lookup Books
|
2017-10-11 16:17:51 +00:00
|
|
|
a.GET("/books", apiv1.BookList)
|
2017-10-10 15:01:33 +00:00
|
|
|
a.GET("/books/:id", apiv1.BookShow)
|
2017-10-10 19:40:14 +00:00
|
|
|
a.GET("/books/search", apiv1.BookSearch)
|
2017-10-09 12:29:21 +00:00
|
|
|
|
2017-10-10 07:47:05 +00:00
|
|
|
// Lookup Authors
|
2017-10-11 16:17:51 +00:00
|
|
|
a.GET("/authors", apiv1.AuthorsList)
|
2017-10-10 16:11:09 +00:00
|
|
|
a.GET("/authors/:id", apiv1.AuthorShow)
|
2017-10-10 19:58:55 +00:00
|
|
|
a.GET("/authors/search", apiv1.AuthorSearch)
|
2017-10-10 07:47:05 +00:00
|
|
|
|
|
|
|
// Lookup Publishers
|
2017-10-11 16:17:51 +00:00
|
|
|
a.GET("/publishers", apiv1.PublishersList)
|
2017-10-10 16:23:52 +00:00
|
|
|
a.GET("/publishers/:id", apiv1.PublisherShow)
|
2017-10-10 19:58:55 +00:00
|
|
|
a.GET("/publishers/search", apiv1.PublisherSearch)
|
2017-10-10 07:47:05 +00:00
|
|
|
|
|
|
|
// ===== Routes with Authetification =====
|
|
|
|
// Authetification
|
2017-10-10 08:40:36 +00:00
|
|
|
a.Use(middleware.JWT(models.Config.JWTLoginSecret))
|
|
|
|
a.POST("/tokenTest", apiv1.CheckToken)
|
2017-10-10 07:47:05 +00:00
|
|
|
|
|
|
|
// Manage Books
|
2017-10-10 20:47:54 +00:00
|
|
|
a.PUT("/books", apiv1.BookAdd)
|
|
|
|
a.DELETE("/books/:id", apiv1.BookDelete)
|
2017-10-06 10:09:58 +00:00
|
|
|
|
2017-10-10 07:47:05 +00:00
|
|
|
// Manage Authors
|
2017-10-11 15:20:56 +00:00
|
|
|
a.PUT("/authors", apiv1.AuthorAdd)
|
|
|
|
a.DELETE("/authors/:id", apiv1.AuthorDelete)
|
2017-10-11 18:22:31 +00:00
|
|
|
a.POST("/authors/:id", apiv1.AuthorUpdate)
|
2017-10-10 07:47:05 +00:00
|
|
|
|
|
|
|
// Manage Publishers
|
2017-10-11 16:06:51 +00:00
|
|
|
a.PUT("/publishers", apiv1.PublisherAdd)
|
|
|
|
a.DELETE("/publishers/:id", apiv1.PublisherDelete)
|
2017-10-11 18:27:05 +00:00
|
|
|
a.POST("/publishers/:id", apiv1.PublisherUpdate)
|
2017-10-10 07:47:05 +00:00
|
|
|
|
|
|
|
// Manage Users
|
|
|
|
|
2017-10-06 10:09:58 +00:00
|
|
|
/*
|
2017-11-07 15:35:10 +00:00
|
|
|
Alles nur mit Api machen, davor dann einen onepager mit vue.js.
|
|
|
|
|
|
|
|
(Alles mit | benötigt Authentifizierung)
|
|
|
|
|
|
|
|
Routes:
|
|
|
|
GET / - entweder übersicht anzeigen (wenn der nutzer eingeloggt ist) oder auf /login weiterleiten
|
|
|
|
POST /login - ✔ Einloggen
|
|
|
|
POST /logout - ausloggen
|
|
|
|
|
|
|
|
GET /books/:id - ✔ Buch anzeigen
|
|
|
|
POST /books/:id - |Buch bearbeiten (inkl mengen)
|
|
|
|
DELETE /books/:id - ✔ |Buch löschen (+alle einträge in authors_books löschen dessen Bush dazu gehört)
|
|
|
|
GET /books/search?s=se - ✔ Suchen
|
|
|
|
GET /books/list - ✔ Auflisten
|
|
|
|
PUT /books/add - ✔ |Hinzufügen
|
|
|
|
|
|
|
|
GET /authors/:id - ✔ Autor anzeigen
|
|
|
|
POST /authors/:id - ✔ |Autor bearbeiten
|
|
|
|
DELETE /authors/:id - ✔ |Autor löschen (auch mit allem in books_author)
|
|
|
|
GET /authors/list - ✔ Autoren auflisten
|
|
|
|
GET /authors/search?s=d - ✔ Autoren suchen
|
|
|
|
PUT /authors/add - ✔ |Hinzufügen
|
|
|
|
|
|
|
|
GET /publishers/:id - ✔ Verlag anzeigen
|
|
|
|
POST /publishers/:id - ✔ |Verlag bearbeiten
|
|
|
|
DELETE /publishers/:id - ✔ |Verlag löschen (bei büchern Verlag auf 0 setzen)
|
|
|
|
GET /publishers/list - ✔ Verlage auflisten
|
|
|
|
GET /publishers/search?s= - ✔ Verlage suchen
|
|
|
|
PUT /publishers/add - ✔ |Hinzufügen
|
|
|
|
|
|
|
|
GET /settings - |Nutzereinstellungen (Passwort, name etc)
|
|
|
|
POST /settings - |Nutzereinstellungen (Passwort, name etc)
|
|
|
|
GET /user - Nutzer anzeigen
|
|
|
|
PUT /user - |neue Nutzer anlegen
|
|
|
|
DELETE /user/:id - |nutzer löschen
|
|
|
|
POST /user/:id - |nutzer bearbeiten
|
2017-10-09 12:29:21 +00:00
|
|
|
*/
|
2017-10-09 19:06:40 +00:00
|
|
|
}
|