173 lines
4.8 KiB
Go
173 lines
4.8 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
func MapAPIs(app *fiber.App, baseURL string) {
|
|
app.Get("/.well-known/openid-configuration", getOidcConfiguration)
|
|
app.Get("/.well-known/jwks", getJwk)
|
|
|
|
api := app.Group(baseURL).Name("API")
|
|
{
|
|
daily := api.Group("/daily").Name("Daily Sign API")
|
|
{
|
|
daily.Get("/", listDailySignRecord)
|
|
daily.Get("/today", getTodayDailySign)
|
|
daily.Post("/", doDailySign)
|
|
}
|
|
|
|
notify := api.Group("/notifications").Name("Notifications API")
|
|
{
|
|
notify.Get("/", getNotifications)
|
|
notify.Get("/subscription", getNotifySubscriber)
|
|
notify.Post("/subscription", addNotifySubscriber)
|
|
notify.Delete("/subscription/:deviceId", removeNotifySubscriber)
|
|
notify.Put("/read", markNotificationReadBatch)
|
|
notify.Put("/read/:notificationId", markNotificationRead)
|
|
}
|
|
|
|
preferences := api.Group("/preferences").Name("Preferences API")
|
|
{
|
|
preferences.Get("/auth", getAuthPreference)
|
|
preferences.Put("/auth", updateAuthPreference)
|
|
preferences.Get("/notifications", getNotificationPreference)
|
|
preferences.Put("/notifications", updateNotificationPreference)
|
|
}
|
|
|
|
reports := api.Group("/reports").Name("Reports API")
|
|
{
|
|
abuse := reports.Group("/abuse").Name("Abuse Reports")
|
|
{
|
|
abuse.Get("/", listAbuseReports)
|
|
abuse.Get("/:id", getAbuseReport)
|
|
abuse.Put("/:id/status", updateAbuseReportStatus)
|
|
abuse.Post("/", createAbuseReport)
|
|
}
|
|
}
|
|
|
|
api.Get("/users/lookup", lookupAccount)
|
|
api.Get("/users/search", searchAccount)
|
|
|
|
me := api.Group("/users/me").Name("Myself Operations")
|
|
{
|
|
|
|
me.Get("/avatar", getAvatar)
|
|
me.Get("/banner", getBanner)
|
|
me.Put("/avatar", setAvatar)
|
|
me.Put("/banner", setBanner)
|
|
|
|
me.Get("/", getUserinfo)
|
|
me.Put("/", editUserinfo)
|
|
me.Get("/events", getEvents)
|
|
me.Get("/tickets", getTickets)
|
|
me.Delete("/tickets/:ticketId", killTicket)
|
|
|
|
me.Post("/confirm", doRegisterConfirm)
|
|
|
|
me.Get("/status", getMyselfStatus)
|
|
me.Post("/status", setStatus)
|
|
me.Put("/status", editStatus)
|
|
me.Delete("/status", clearStatus)
|
|
|
|
relations := me.Group("/relations").Name("Relations")
|
|
{
|
|
relations.Post("/", makeFriendship)
|
|
relations.Post("/block", makeBlockship)
|
|
|
|
relations.Get("/", listRelationship)
|
|
relations.Get("/:relatedId", getRelationship)
|
|
relations.Put("/:relatedId", editRelationship)
|
|
relations.Delete("/:relatedId", deleteRelationship)
|
|
|
|
relations.Post("/:relatedId", makeFriendship)
|
|
relations.Post("/:relatedId/accept", acceptFriend)
|
|
relations.Post("/:relatedId/decline", declineFriend)
|
|
}
|
|
|
|
me.Post("/password-reset", requestResetPassword)
|
|
me.Patch("/password-reset", confirmResetPassword)
|
|
|
|
me.Post("/deletion", requestDeleteAccount)
|
|
me.Patch("/deletion", confirmDeleteAccount)
|
|
}
|
|
|
|
directory := api.Group("/users/:alias").Name("User Directory")
|
|
{
|
|
directory.Get("/", getOtherUserinfo)
|
|
directory.Get("/status", getStatus)
|
|
|
|
directory.Get("/daily", listOtherUserDailySignRecord)
|
|
}
|
|
|
|
api.Get("/users", getOtherUserinfoBatch)
|
|
api.Post("/users", doRegister)
|
|
|
|
auth := api.Group("/auth").Name("Auth")
|
|
{
|
|
auth.Post("/", doAuthenticate)
|
|
auth.Patch("/", doAuthTicketCheck)
|
|
auth.Post("/token", getToken)
|
|
|
|
auth.Get("/tickets/:ticketId", getTicket)
|
|
|
|
auth.Get("/factors", getAvailableFactors)
|
|
auth.Post("/factors/:factorId", requestFactorToken)
|
|
|
|
auth.Get("/o/authorize", tryAuthorizeThirdClient)
|
|
auth.Post("/o/authorize", authorizeThirdClient)
|
|
}
|
|
|
|
realms := api.Group("/realms").Name("Realms API")
|
|
{
|
|
realms.Get("/", listCommunityRealm)
|
|
realms.Get("/me", listOwnedRealm)
|
|
realms.Get("/me/available", listAvailableRealm)
|
|
realms.Get("/:realm", getRealm)
|
|
realms.Get("/:realm/members", listRealmMembers)
|
|
realms.Get("/:realm/members/me", getMyRealmMember)
|
|
realms.Post("/", createRealm)
|
|
realms.Put("/:realmId", editRealm)
|
|
realms.Delete("/:realmId", deleteRealm)
|
|
realms.Post("/:realm/members", addRealmMember)
|
|
realms.Delete("/:realm/members", removeRealmMember)
|
|
realms.Delete("/:realm/members/me", leaveRealm)
|
|
}
|
|
|
|
developers := api.Group("/dev").Name("Developers API")
|
|
{
|
|
developers.Post("/notify", notifyUser)
|
|
|
|
bots := developers.Group("/bots").Name("Bots")
|
|
{
|
|
bots.Get("/", listBots)
|
|
bots.Post("/", createBot)
|
|
bots.Delete("/:botId", deleteBot)
|
|
|
|
keys := bots.Group("/:botId/keys").Name("Bots' Keys")
|
|
{
|
|
keys.Get("/", listBotKeys)
|
|
keys.Post("/", createBotKey)
|
|
keys.Post("/:id/roll", rollBotKey)
|
|
keys.Put("/:id", editBotKey)
|
|
keys.Delete("/:id", revokeBotKey)
|
|
}
|
|
}
|
|
|
|
keys := developers.Group("/keys").Name("Own Bots' Keys")
|
|
{
|
|
keys.Get("/", listBotKeys)
|
|
keys.Get("/:id", getBotKey)
|
|
keys.Post("/", createBotKey)
|
|
keys.Post("/:id/roll", rollBotKey)
|
|
keys.Put("/:id", editBotKey)
|
|
keys.Delete("/:id", revokeBotKey)
|
|
}
|
|
}
|
|
|
|
api.All("/*", func(c *fiber.Ctx) error {
|
|
return fiber.ErrNotFound
|
|
})
|
|
}
|
|
}
|