package main // Small generic oauth authentication server to retrieve oauth tokens // from mastodon instances. import ( "github.com/gorilla/websocket" "github.com/labstack/echo" "github.com/labstack/echo/middleware" ) // github.com/oklog/ulid var ( upgrader = websocket.Upgrader{} ) type App struct { AuthQueue *AuthenticationQueue } func (a *App) authRequestWebSocket(c echo.Context) error { ws, err := upgrader.Upgrade(c.Response(), c.Request(), nil) if err != nil { return err } client := &AuthRequestClient{ conn: ws, } req, err := client.ReceiveRequest() if err != nil { return err } a.AuthQueue.QueueRequest(req) return nil } func main() { q := &AuthenticationQueue{} q.startRequestChanListener() a := &App{ AuthQueue: q, } e := echo.New() e.Use(middleware.Logger()) e.Use(middleware.Recover()) e.Static("/", "../public") e.GET("/ws", a.authRequestWebSocket) e.Logger.Fatal(e.Start(":1323")) }