You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.1 KiB
Go

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/labstack/gommon/log"
)
var (
upgrader = websocket.Upgrader{}
)
type App struct {
AuthQueue *AuthenticationQueue
Logger *echo.Logger
}
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,
app: a,
}
req, err := client.ReceiveRequest()
if err != nil {
return err
}
(*a.Logger).Info("Queueing AuthRequest")
a.AuthQueue.QueueRequest(req)
return nil
}
func main() {
e := echo.New()
e.Use(middleware.Logger())
e.Use(middleware.Recover())
e.Static("/", "../public")
e.Logger.SetLevel(log.INFO)
a := &App{
Logger: &e.Logger,
}
q := &AuthenticationQueue{
app: a,
}
q.Init()
a.AuthQueue = q
e.GET("/ws", a.authRequestWebSocket)
e.Logger.Fatal(e.Start(":1323"))
}