mirror of
https://github.com/42wim/matterbridge.git
synced 2024-11-16 00:49:26 +01:00
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/labstack/echo"
|
||
|
"github.com/labstack/echo/cookbook/twitter/handler"
|
||
|
"github.com/labstack/echo/middleware"
|
||
|
"github.com/labstack/gommon/log"
|
||
|
mgo "gopkg.in/mgo.v2"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
e := echo.New()
|
||
|
e.Logger.SetLevel(log.ERROR)
|
||
|
e.Use(middleware.Logger())
|
||
|
e.Use(middleware.JWTWithConfig(middleware.JWTConfig{
|
||
|
SigningKey: []byte(handler.Key),
|
||
|
Skipper: func(c echo.Context) bool {
|
||
|
// Skip authentication for and signup login requests
|
||
|
if c.Path() == "/login" || c.Path() == "/signup" {
|
||
|
return true
|
||
|
}
|
||
|
return false
|
||
|
},
|
||
|
}))
|
||
|
|
||
|
// Database connection
|
||
|
db, err := mgo.Dial("localhost")
|
||
|
if err != nil {
|
||
|
e.Logger.Fatal(err)
|
||
|
}
|
||
|
|
||
|
// Create indices
|
||
|
if err = db.Copy().DB("twitter").C("users").EnsureIndex(mgo.Index{
|
||
|
Key: []string{"email"},
|
||
|
Unique: true,
|
||
|
}); err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
|
||
|
// Initialize handler
|
||
|
h := &handler.Handler{DB: db}
|
||
|
|
||
|
// Routes
|
||
|
e.POST("/signup", h.Signup)
|
||
|
e.POST("/login", h.Login)
|
||
|
e.POST("/follow/:id", h.Follow)
|
||
|
e.POST("/posts", h.CreatePost)
|
||
|
e.GET("/feed", h.FetchPost)
|
||
|
|
||
|
// Start server
|
||
|
e.Logger.Fatal(e.Start(":1323"))
|
||
|
}
|