linstrom/server/apiLinstrom.go

85 lines
3.7 KiB
Go
Raw Normal View History

package server
import "net/http"
func setupLinstromApiRouter() http.Handler {
router := http.NewServeMux()
router.Handle("/v1/", http.StripPrefix("/v1", setupLinstromApiV1Router()))
return router
}
func setupLinstromApiV1Router() http.Handler {
router := http.NewServeMux()
// Notes
router.HandleFunc("GET /notes/{noteId}", linstromGetNote)
router.HandleFunc("POST /notes", linstromNewNote)
router.HandleFunc("PATCH /notes/{noteId}", linstromUpdateNote)
router.HandleFunc("DELETE /notes/{noteId}", linstromDeleteNote)
// Reactions
router.HandleFunc("GET /notes/{noteId}/reactions", linstromGetReactions)
router.HandleFunc("POST /notes/{noteId}/reactions", linstromAddReaction)
router.HandleFunc("PATCH /notes/{noteId}/reactions", linstromUpdateReaction)
router.HandleFunc("DELETE /notes/{noteId}/reactions", linstromDeleteReaction)
// Boosts
router.HandleFunc("GET /notes/{noteId}/boosts", linstromGetBoosts)
router.HandleFunc("POST /notes/{noteId}/boosts", linstromAddBoost)
router.HandleFunc("DELETE /notes/{noteId}/boosts", linstromRemoveBoost)
// Quotes
router.HandleFunc("GET /notes/{noteId}/quotes", linstromGetQuotes)
router.HandleFunc("POST /notes/{noteId}/quotes", linstromAddQuote)
// Pinning
router.HandleFunc("POST /notes/{noteId}/pin", linstromPinNote)
router.HandleFunc("DELETE /notes/{noteId}/pin", linstromUnpinNote)
// Reports
router.HandleFunc("POST /notes/{noteId}/report", linstromReportNote)
router.HandleFunc("DELETE /notes/{noteId}/report", linstromRetractReportNote)
// Admin
router.HandleFunc("POST /notes/{noteId}/admin/cw", linstromForceCWNote)
// Accounts
// Creating a new account happens either during fetch of a remote one or during registration with a passkey
router.HandleFunc("GET /accounts/{accountId}", linstromGetAccount)
router.HandleFunc("PATCH /accounts/{accountId}", linstromUpdateAccount)
router.HandleFunc("DELETE /accounts/{accountId}", linstromDeleteAccount)
// Follow
router.HandleFunc("GET /accounts/{accountId}/follow", linstromIsFollowingAccount)
router.HandleFunc("POST /accounts/{accountId}/follow", linstromFollowAccount)
router.HandleFunc("DELETE /accounts/{accountId}/follow", linstromUnfollowAccount)
// Block
router.HandleFunc("GET /accounts/{accountId}/block", linstromIsBlockingAccount)
router.HandleFunc("POST /accounts/{accountId}/block", linstromBlockAccount)
router.HandleFunc("DELETE /accounts/{accountId}/block", linstromUnblockAccount)
// Mute
router.HandleFunc("GET /accounts/{accountId}/mute", linstromIsMutedAccount)
router.HandleFunc("POST /accounts/{accountId}/mute", linstromMuteAccount)
router.HandleFunc("DELETE /accounts/{accountId}/mute", linstromUnmuteAccount)
// Report
router.HandleFunc("POST /accounts/{accountId}/reports", linstromReportAccount)
router.HandleFunc("DELETE /accounts/{accountId}/reports", linstromRetractReportAccount)
// Admin
router.HandleFunc("POST /accounts/{accountId}/admin/roles", linstromAdminAddRoleAccount)
router.HandleFunc(
"DELETE /accounts/{accountId}/admin/roles/{roleName}",
linstromAdminRemoveRoleAccount,
)
router.HandleFunc("POST /accounts/{accountId}/admin/warn", linstromAdminWarnAccount)
// Roles
router.HandleFunc("GET /roles/{roleId}", linstromGetRole)
router.HandleFunc("POST /roles", linstromCreateRole)
router.HandleFunc("PATCH /roles/{roleId}", linstromUpdateRole)
router.HandleFunc("DELETE /roles/{roleId}", linstromDeleteRole)
// Media metadata
router.HandleFunc("GET /media/{mediaId}", linstromGetMediaMetadata)
router.HandleFunc("POST /media", linstromNewMediaMetadata)
router.HandleFunc("PATCH /media/{mediaId}", linstromUpdateMediaMetadata)
router.HandleFunc("DELETE /media/{mediaId}", linstromDeleteMediaMetadata)
// Event streams
router.HandleFunc("/streams", linstromEventStream)
return router
}