40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
)
|
|
|
|
func main() {
|
|
// this will be configurable in the future obviously
|
|
username := "dma"
|
|
domain := "hello.yetaga.in"
|
|
|
|
wf, err := NewWebfinger(username, domain)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
pp, err := NewProfileProvider(username, domain)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
st := &InMemoryStreams{}
|
|
|
|
r := chi.NewRouter()
|
|
r.Get("/.well-known/webfinger", WebFingerHandler(wf))
|
|
r.Get("/users/{user}", UserExistsMiddleware(username, ProfileHandler(pp)))
|
|
r.Get("/users/{user}/inbox", UserExistsMiddleware(username, GetInboxHandler(st)))
|
|
r.Post("/users/{user}/inbox", UserExistsMiddleware(username, PostInboxHandler(st)))
|
|
r.Get("/users/{user}/outbox", UserExistsMiddleware(username, GetOutboxHandler(st)))
|
|
r.Post("/users/{user}/outbox", UserExistsMiddleware(username, PostOutboxHandler(st)))
|
|
r.Post("/inbox", PostInboxHandler(st)) // "shared" inbox
|
|
|
|
log.Println("listening on http://0.0.0.0:8008")
|
|
err = http.ListenAndServe(":8008", r)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
}
|