api

package
v0.0.0-...-dee9785 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 12, 2026 License: AGPL-3.0 Imports: 51 Imported by: 0

Documentation

Overview

Package api provides HTTP handlers for the Uncord REST API. Each handler is a thin adapter that parses a protocol request type from the request body, delegates business logic to the service or repository layer, and writes a protocol response type using the httputil envelope helpers. Handlers receive fiber.Ctx by value and map service errors to HTTP status codes via dedicated error mapping functions.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AttachmentHandler

type AttachmentHandler struct {
	// contains filtered or unexported fields
}

AttachmentHandler serves file upload endpoints.

func NewAttachmentHandler

func NewAttachmentHandler(
	attachments attachment.Repository,
	storage media.StorageProvider,
	rdb *redis.Client,
	maxSizeBytes int64,
	logger zerolog.Logger,
) *AttachmentHandler

NewAttachmentHandler creates a new attachment handler.

func (*AttachmentHandler) Upload

func (h *AttachmentHandler) Upload(c fiber.Ctx) error

Upload handles POST /api/v1/channels/:channelID/attachments.

type AuditHandler

type AuditHandler struct {
	// contains filtered or unexported fields
}

AuditHandler serves the audit log endpoint.

func NewAuditHandler

func NewAuditHandler(repo audit.Repository, logger zerolog.Logger) *AuditHandler

NewAuditHandler creates a new audit log handler.

func (*AuditHandler) List

func (h *AuditHandler) List(c fiber.Ctx) error

List handles GET /api/v1/server/audit-log.

type AuthHandler

type AuthHandler struct {
	// contains filtered or unexported fields
}

AuthHandler serves authentication endpoints.

func NewAuthHandler

func NewAuthHandler(svc *auth.Service, cfg *config.Config, logger zerolog.Logger) *AuthHandler

NewAuthHandler creates a new authentication handler.

func (*AuthHandler) GatewayTicket

func (h *AuthHandler) GatewayTicket(c fiber.Ctx) error

GatewayTicket handles POST /api/v1/auth/gateway-ticket. It creates a single-use ticket that web clients present in the WebSocket Identify frame instead of a JWT access token.

func (*AuthHandler) Login

func (h *AuthHandler) Login(c fiber.Ctx) error

Login handles POST /api/v1/auth/login.

func (*AuthHandler) Logout

func (h *AuthHandler) Logout(c fiber.Ctx) error

Logout handles POST /api/v1/auth/logout. It revokes all refresh tokens for the authenticated user and clears auth cookies from the response.

func (*AuthHandler) MFAVerify

func (h *AuthHandler) MFAVerify(c fiber.Ctx) error

MFAVerify handles POST /api/v1/auth/mfa/verify.

func (*AuthHandler) Refresh

func (h *AuthHandler) Refresh(c fiber.Ctx) error

Refresh handles POST /api/v1/auth/refresh.

func (*AuthHandler) Register

func (h *AuthHandler) Register(c fiber.Ctx) error

Register handles POST /api/v1/auth/register.

func (*AuthHandler) ResendVerification

func (h *AuthHandler) ResendVerification(c fiber.Ctx) error

ResendVerification handles POST /api/v1/auth/resend-verification.

func (*AuthHandler) VerifyEmail

func (h *AuthHandler) VerifyEmail(c fiber.Ctx) error

VerifyEmail handles POST /api/v1/auth/verify-email.

func (*AuthHandler) VerifyPassword

func (h *AuthHandler) VerifyPassword(c fiber.Ctx) error

VerifyPassword handles POST /api/v1/auth/verify-password.

type CategoryHandler

type CategoryHandler struct {
	// contains filtered or unexported fields
}

CategoryHandler serves category endpoints.

func NewCategoryHandler

func NewCategoryHandler(categories category.Repository, maxCategories int, auditLogger *audit.Logger, logger zerolog.Logger) *CategoryHandler

NewCategoryHandler creates a new category handler.

func (*CategoryHandler) CreateCategory

func (h *CategoryHandler) CreateCategory(c fiber.Ctx) error

CreateCategory handles POST /api/v1/server/categories.

func (*CategoryHandler) DeleteCategory

func (h *CategoryHandler) DeleteCategory(c fiber.Ctx) error

DeleteCategory handles DELETE /api/v1/categories/:categoryID.

func (*CategoryHandler) ListCategories

func (h *CategoryHandler) ListCategories(c fiber.Ctx) error

ListCategories handles GET /api/v1/server/categories.

func (*CategoryHandler) UpdateCategory

func (h *CategoryHandler) UpdateCategory(c fiber.Ctx) error

UpdateCategory handles PATCH /api/v1/categories/:categoryID.

type ChannelHandler

type ChannelHandler struct {
	// contains filtered or unexported fields
}

ChannelHandler serves channel endpoints.

func NewChannelHandler

func NewChannelHandler(
	channels channel.Repository,
	members member.Repository,
	onboardingRepo onboarding.Repository,
	resolver *permission.Resolver,
	gw *gateway.Publisher,
	maxChannels int,
	auditLogger *audit.Logger,
	logger zerolog.Logger,
) *ChannelHandler

NewChannelHandler creates a new channel handler.

func (*ChannelHandler) CreateChannel

func (h *ChannelHandler) CreateChannel(c fiber.Ctx) error

CreateChannel handles POST /api/v1/server/channels.

func (*ChannelHandler) DeleteChannel

func (h *ChannelHandler) DeleteChannel(c fiber.Ctx) error

DeleteChannel handles DELETE /api/v1/channels/:channelID.

func (*ChannelHandler) GetChannel

func (h *ChannelHandler) GetChannel(c fiber.Ctx) error

GetChannel handles GET /api/v1/channels/:channelID.

func (*ChannelHandler) ListChannels

func (h *ChannelHandler) ListChannels(c fiber.Ctx) error

ListChannels handles GET /api/v1/server/channels. Active and timed-out members see all channels they have permission to view. Pending members see only the welcome channel (if configured). Non-members see an empty list.

func (*ChannelHandler) UpdateChannel

func (h *ChannelHandler) UpdateChannel(c fiber.Ctx) error

UpdateChannel handles PATCH /api/v1/channels/:channelID.

type DMHandler

type DMHandler struct {
	// contains filtered or unexported fields
}

DMHandler serves DM channel endpoints.

func NewDMHandler

func NewDMHandler(
	dms dm.Repository,
	messages message.Repository,
	e2eeKeys e2ee.Repository,
	gw *gateway.Publisher,
	maxContent int,
	logger zerolog.Logger,
) *DMHandler

NewDMHandler creates a new DM handler.

func (*DMHandler) AddParticipant

func (h *DMHandler) AddParticipant(c fiber.Ctx) error

AddParticipant handles POST /api/v1/dm/:channelID/participants.

func (*DMHandler) CreateDMChannel

func (h *DMHandler) CreateDMChannel(c fiber.Ctx) error

CreateDMChannel handles POST /api/v1/users/@me/channels.

func (*DMHandler) GetDMChannel

func (h *DMHandler) GetDMChannel(c fiber.Ctx) error

GetDMChannel handles GET /api/v1/dm/:channelID.

func (*DMHandler) ListDMChannels

func (h *DMHandler) ListDMChannels(c fiber.Ctx) error

ListDMChannels handles GET /api/v1/users/@me/channels.

func (*DMHandler) ListMessages

func (h *DMHandler) ListMessages(c fiber.Ctx) error

ListMessages handles GET /api/v1/dm/:channelID/messages.

func (*DMHandler) RemoveParticipant

func (h *DMHandler) RemoveParticipant(c fiber.Ctx) error

RemoveParticipant handles DELETE /api/v1/dm/:channelID/participants/:userID.

func (*DMHandler) RequireParticipant

func (h *DMHandler) RequireParticipant(c fiber.Ctx) error

RequireParticipant is a middleware that verifies the requesting user is a participant of the DM channel identified by the :channelID route parameter.

func (*DMHandler) SendMessage

func (h *DMHandler) SendMessage(c fiber.Ctx) error

SendMessage handles POST /api/v1/dm/:channelID/messages.

type E2EEHandler

type E2EEHandler struct {
	// contains filtered or unexported fields
}

E2EEHandler serves device and key management endpoints for end-to-end encryption.

func NewE2EEHandler

func NewE2EEHandler(keys e2ee.Repository, dms dm.Repository, gw *gateway.Publisher, opkThreshold int, logger zerolog.Logger) *E2EEHandler

NewE2EEHandler creates a new E2EE handler.

func (*E2EEHandler) FetchKeyBundle

func (h *E2EEHandler) FetchKeyBundle(c fiber.Ctx) error

FetchKeyBundle handles GET /api/v1/users/:userID/keys.

func (*E2EEHandler) GetKeyCount

func (h *E2EEHandler) GetKeyCount(c fiber.Ctx) error

GetKeyCount handles GET /api/v1/users/@me/devices/:deviceID/one-time-pre-keys/count.

func (*E2EEHandler) ListDevices

func (h *E2EEHandler) ListDevices(c fiber.Ctx) error

ListDevices handles GET /api/v1/users/@me/devices.

func (*E2EEHandler) RegisterDevice

func (h *E2EEHandler) RegisterDevice(c fiber.Ctx) error

RegisterDevice handles POST /api/v1/users/@me/devices.

func (*E2EEHandler) RemoveDevice

func (h *E2EEHandler) RemoveDevice(c fiber.Ctx) error

RemoveDevice handles DELETE /api/v1/users/@me/devices/:deviceID.

func (*E2EEHandler) UpdateIdentityKey

func (h *E2EEHandler) UpdateIdentityKey(c fiber.Ctx) error

UpdateIdentityKey handles PUT /api/v1/users/@me/devices/:deviceID/identity-key.

func (*E2EEHandler) UploadOneTimePreKeys

func (h *E2EEHandler) UploadOneTimePreKeys(c fiber.Ctx) error

UploadOneTimePreKeys handles POST /api/v1/users/@me/devices/:deviceID/one-time-pre-keys.

func (*E2EEHandler) UploadSignedPreKey

func (h *E2EEHandler) UploadSignedPreKey(c fiber.Ctx) error

UploadSignedPreKey handles PUT /api/v1/users/@me/devices/:deviceID/signed-pre-key.

type EmojiHandler

type EmojiHandler struct {
	// contains filtered or unexported fields
}

EmojiHandler serves custom emoji endpoints.

func NewEmojiHandler

func NewEmojiHandler(
	emojiRepo emoji.Repository,
	storage media.StorageProvider,
	gw *gateway.Publisher,
	maxSize int64,
	maxDim int,
	limit int,
	auditLogger *audit.Logger,
	logger zerolog.Logger,
) *EmojiHandler

NewEmojiHandler creates a new emoji handler.

func (*EmojiHandler) CreateEmoji

func (h *EmojiHandler) CreateEmoji(c fiber.Ctx) error

CreateEmoji handles POST /api/v1/server/emoji.

func (*EmojiHandler) DeleteEmoji

func (h *EmojiHandler) DeleteEmoji(c fiber.Ctx) error

DeleteEmoji handles DELETE /api/v1/server/emoji/:emojiID.

func (*EmojiHandler) ListEmoji

func (h *EmojiHandler) ListEmoji(c fiber.Ctx) error

ListEmoji handles GET /api/v1/server/emoji.

func (*EmojiHandler) UpdateEmoji

func (h *EmojiHandler) UpdateEmoji(c fiber.Ctx) error

UpdateEmoji handles PATCH /api/v1/server/emoji/:emojiID.

type GatewayHandler

type GatewayHandler struct {
	// contains filtered or unexported fields
}

GatewayHandler serves the WebSocket upgrade endpoint for the real-time gateway.

func NewGatewayHandler

func NewGatewayHandler(hub *gateway.Hub) *GatewayHandler

NewGatewayHandler creates a new gateway handler.

func (*GatewayHandler) Upgrade

func (h *GatewayHandler) Upgrade(c fiber.Ctx) error

Upgrade handles GET /api/v1/gateway. It upgrades the HTTP connection to a WebSocket and hands it to the Hub.

type HealthHandler

type HealthHandler struct {
	// contains filtered or unexported fields
}

HealthHandler serves the health check endpoint.

func NewHealthHandler

func NewHealthHandler(db, valkey Pinger) *HealthHandler

NewHealthHandler creates a new health check handler.

func (*HealthHandler) Health

func (h *HealthHandler) Health(c fiber.Ctx) error

Health pings PostgreSQL and Valkey, returning component status.

type ImageUploadHandler

type ImageUploadHandler struct {
	// contains filtered or unexported fields
}

ImageUploadHandler serves avatar, banner, and server icon upload and delete endpoints.

func NewImageUploadHandler

func NewImageUploadHandler(
	users user.Repository,
	servers server.Repository,
	storage media.StorageProvider,
	gw *gateway.Publisher,
	maxAvatarBytes int64,
	maxAvatarDim int,
	maxBannerW, maxBannerH int,
	logger zerolog.Logger,
) *ImageUploadHandler

NewImageUploadHandler creates a new handler for image upload and delete operations.

func (*ImageUploadHandler) DeleteServerBanner

func (h *ImageUploadHandler) DeleteServerBanner(c fiber.Ctx) error

DeleteServerBanner handles DELETE /api/v1/server/banner.

func (*ImageUploadHandler) DeleteServerIcon

func (h *ImageUploadHandler) DeleteServerIcon(c fiber.Ctx) error

DeleteServerIcon handles DELETE /api/v1/server/icon.

func (*ImageUploadHandler) DeleteUserAvatar

func (h *ImageUploadHandler) DeleteUserAvatar(c fiber.Ctx) error

DeleteUserAvatar handles DELETE /api/v1/users/@me/avatar.

func (*ImageUploadHandler) DeleteUserBanner

func (h *ImageUploadHandler) DeleteUserBanner(c fiber.Ctx) error

DeleteUserBanner handles DELETE /api/v1/users/@me/banner.

func (*ImageUploadHandler) UploadServerBanner

func (h *ImageUploadHandler) UploadServerBanner(c fiber.Ctx) error

UploadServerBanner handles PUT /api/v1/server/banner.

func (*ImageUploadHandler) UploadServerIcon

func (h *ImageUploadHandler) UploadServerIcon(c fiber.Ctx) error

UploadServerIcon handles PUT /api/v1/server/icon.

func (*ImageUploadHandler) UploadUserAvatar

func (h *ImageUploadHandler) UploadUserAvatar(c fiber.Ctx) error

UploadUserAvatar handles PUT /api/v1/users/@me/avatar.

func (*ImageUploadHandler) UploadUserBanner

func (h *ImageUploadHandler) UploadUserBanner(c fiber.Ctx) error

UploadUserBanner handles PUT /api/v1/users/@me/banner.

type InviteHandler

type InviteHandler struct {
	// contains filtered or unexported fields
}

InviteHandler serves invite endpoints.

func NewInviteHandler

func NewInviteHandler(invites invite.Repository, onboardingRepo onboarding.Repository, members member.Repository, users user.Repository, gw *gateway.Publisher, auditLogger *audit.Logger, logger zerolog.Logger) *InviteHandler

NewInviteHandler creates a new invite handler.

func (*InviteHandler) CreateInvite

func (h *InviteHandler) CreateInvite(c fiber.Ctx) error

CreateInvite handles POST /api/v1/server/invites.

func (*InviteHandler) DeleteInvite

func (h *InviteHandler) DeleteInvite(c fiber.Ctx) error

DeleteInvite handles DELETE /api/v1/invites/:code.

func (*InviteHandler) JoinViaInvite

func (h *InviteHandler) JoinViaInvite(c fiber.Ctx) error

JoinViaInvite handles POST /api/v1/invites/:code/join.

func (*InviteHandler) ListInvites

func (h *InviteHandler) ListInvites(c fiber.Ctx) error

ListInvites handles GET /api/v1/server/invites.

type MFAHandler

type MFAHandler struct {
	// contains filtered or unexported fields
}

MFAHandler serves authenticated MFA management endpoints under /api/v1/users/@me/mfa/.

func NewMFAHandler

func NewMFAHandler(svc *auth.Service, logger zerolog.Logger) *MFAHandler

NewMFAHandler creates a new MFA handler.

func (*MFAHandler) Confirm

func (h *MFAHandler) Confirm(c fiber.Ctx) error

Confirm handles POST /api/v1/users/@me/mfa/confirm.

func (*MFAHandler) Disable

func (h *MFAHandler) Disable(c fiber.Ctx) error

Disable handles POST /api/v1/users/@me/mfa/disable.

func (*MFAHandler) Enable

func (h *MFAHandler) Enable(c fiber.Ctx) error

Enable handles POST /api/v1/users/@me/mfa/enable.

func (*MFAHandler) RegenerateCodes

func (h *MFAHandler) RegenerateCodes(c fiber.Ctx) error

RegenerateCodes handles POST /api/v1/users/@me/mfa/recovery-codes.

type MemberHandler

type MemberHandler struct {
	// contains filtered or unexported fields
}

MemberHandler serves member and ban endpoints.

func NewMemberHandler

func NewMemberHandler(members member.Repository, roles role.Repository, perms permission.Store, resolver *permission.Resolver, pub *permission.Publisher, gw *gateway.Publisher, auditLogger *audit.Logger, logger zerolog.Logger) *MemberHandler

NewMemberHandler creates a new member handler.

func (*MemberHandler) AssignRole

func (h *MemberHandler) AssignRole(c fiber.Ctx) error

AssignRole handles PUT /api/v1/server/members/:userID/roles/:roleID.

func (*MemberHandler) BanMember

func (h *MemberHandler) BanMember(c fiber.Ctx) error

BanMember handles PUT /api/v1/server/bans/:userID.

func (*MemberHandler) ClearTimeout

func (h *MemberHandler) ClearTimeout(c fiber.Ctx) error

ClearTimeout handles DELETE /api/v1/server/members/:userID/timeout.

func (*MemberHandler) GetMember

func (h *MemberHandler) GetMember(c fiber.Ctx) error

GetMember handles GET /api/v1/server/members/:userID.

func (*MemberHandler) GetSelf

func (h *MemberHandler) GetSelf(c fiber.Ctx) error

GetSelf handles GET /api/v1/server/members/@me. Unlike other member endpoints, this includes pending members so they can check their own onboarding status.

func (*MemberHandler) KickMember

func (h *MemberHandler) KickMember(c fiber.Ctx) error

KickMember handles DELETE /api/v1/server/members/:userID.

func (*MemberHandler) Leave

func (h *MemberHandler) Leave(c fiber.Ctx) error

Leave handles DELETE /api/v1/server/members/@me.

func (*MemberHandler) ListBans

func (h *MemberHandler) ListBans(c fiber.Ctx) error

ListBans handles GET /api/v1/server/bans.

func (*MemberHandler) ListChannelMembers

func (h *MemberHandler) ListChannelMembers(c fiber.Ctx) error

ListChannelMembers handles GET /api/v1/channels/:channelID/members. It returns only members who have the ViewChannels permission on the specified channel, with cursor-based pagination.

func (*MemberHandler) ListMembers

func (h *MemberHandler) ListMembers(c fiber.Ctx) error

ListMembers handles GET /api/v1/server/members.

func (*MemberHandler) RemoveRole

func (h *MemberHandler) RemoveRole(c fiber.Ctx) error

RemoveRole handles DELETE /api/v1/server/members/:userID/roles/:roleID.

func (*MemberHandler) SetTimeout

func (h *MemberHandler) SetTimeout(c fiber.Ctx) error

SetTimeout handles PUT /api/v1/server/members/:userID/timeout.

func (*MemberHandler) UnbanMember

func (h *MemberHandler) UnbanMember(c fiber.Ctx) error

UnbanMember handles DELETE /api/v1/server/bans/:userID.

func (*MemberHandler) UpdateMember

func (h *MemberHandler) UpdateMember(c fiber.Ctx) error

UpdateMember handles PATCH /api/v1/server/members/:userID.

func (*MemberHandler) UpdateSelf

func (h *MemberHandler) UpdateSelf(c fiber.Ctx) error

UpdateSelf handles PATCH /api/v1/server/members/@me.

type MessageHandler

type MessageHandler struct {
	// contains filtered or unexported fields
}

MessageHandler serves message endpoints.

func NewMessageHandler

func NewMessageHandler(
	messages message.Repository,
	attachments attachment.Repository,
	reactions reaction.Repository,
	storage media.StorageProvider,
	resolver *permission.Resolver,
	indexer *typesense.Indexer,
	gw *gateway.Publisher,
	presenceStore *presence.Store,
	maxContent int,
	maxAttachments int,
	auditLogger *audit.Logger,
	logger zerolog.Logger,
) *MessageHandler

NewMessageHandler creates a new message handler.

func (*MessageHandler) CreateMessage

func (h *MessageHandler) CreateMessage(c fiber.Ctx) error

CreateMessage handles POST /api/v1/channels/:channelID/messages.

func (*MessageHandler) DeleteMessage

func (h *MessageHandler) DeleteMessage(c fiber.Ctx) error

DeleteMessage handles DELETE /api/v1/messages/:messageID.

func (*MessageHandler) EditMessage

func (h *MessageHandler) EditMessage(c fiber.Ctx) error

EditMessage handles PATCH /api/v1/messages/:messageID.

func (*MessageHandler) ListMessages

func (h *MessageHandler) ListMessages(c fiber.Ctx) error

ListMessages handles GET /api/v1/channels/:channelID/messages.

type OnboardingHandler

type OnboardingHandler struct {
	// contains filtered or unexported fields
}

OnboardingHandler serves onboarding endpoints.

func NewOnboardingHandler

func NewOnboardingHandler(
	onboardingRepo onboarding.Repository,
	documents *onboarding.DocumentStore,
	members member.Repository,
	users user.Repository,
	servers server.Repository,
	gw *gateway.Publisher,
	auditLogger *audit.Logger,
	logger zerolog.Logger,
) *OnboardingHandler

NewOnboardingHandler creates a new onboarding handler.

func (*OnboardingHandler) AcceptOnboarding

func (h *OnboardingHandler) AcceptOnboarding(c fiber.Ctx) error

AcceptOnboarding handles POST /api/v1/onboarding/accept. Validates that the client has accepted all required documents, then activates the pending member.

func (*OnboardingHandler) GetAcceptance

func (h *OnboardingHandler) GetAcceptance(c fiber.Ctx) error

GetAcceptance handles GET /api/v1/onboarding/acceptance. Returns the document acceptance records for the authenticated user.

func (*OnboardingHandler) GetOnboarding

func (h *OnboardingHandler) GetOnboarding(c fiber.Ctx) error

GetOnboarding handles GET /api/v1/onboarding. Returns the onboarding config and all documents. No verified or active member check is required so clients can discover the onboarding requirements before completing them.

func (*OnboardingHandler) GetOnboardingStatus

func (h *OnboardingHandler) GetOnboardingStatus(c fiber.Ctx) error

GetOnboardingStatus handles GET /api/v1/onboarding/status. Returns the next step the authenticated user must complete in the onboarding flow as a single computed string. Only requires authentication so it works at any onboarding stage.

func (*OnboardingHandler) JoinServer

func (h *OnboardingHandler) JoinServer(c fiber.Ctx) error

JoinServer handles POST /api/v1/server/join. Allows users to join the server without an invite when open_join is enabled.

func (*OnboardingHandler) UpdateOnboarding

func (h *OnboardingHandler) UpdateOnboarding(c fiber.Ctx) error

UpdateOnboarding handles PATCH /api/v1/onboarding. Only the server owner may update the onboarding configuration. Documents are managed on the filesystem, not via this endpoint.

type PermissionHandler

type PermissionHandler struct {
	// contains filtered or unexported fields
}

PermissionHandler serves permission override endpoints.

func NewPermissionHandler

func NewPermissionHandler(overrides permission.OverrideStore, resolver *permission.Resolver, perms *permission.Publisher, auditLogger *audit.Logger, logger zerolog.Logger) *PermissionHandler

NewPermissionHandler creates a new permission handler.

func (*PermissionHandler) DeleteOverride

func (h *PermissionHandler) DeleteOverride(c fiber.Ctx) error

DeleteOverride handles DELETE /api/v1/channels/:channelID/overrides/:targetID.

func (*PermissionHandler) GetMyPermissions

func (h *PermissionHandler) GetMyPermissions(c fiber.Ctx) error

GetMyPermissions handles GET /api/v1/channels/:channelID/permissions/@me.

func (*PermissionHandler) SetOverride

func (h *PermissionHandler) SetOverride(c fiber.Ctx) error

SetOverride handles PUT /api/v1/channels/:channelID/overrides/:targetID.

type PinHandler

type PinHandler struct {
	// contains filtered or unexported fields
}

PinHandler serves message pin/unpin endpoints.

func NewPinHandler

func NewPinHandler(
	messages message.Repository,
	attachments attachment.Repository,
	reactions reaction.Repository,
	storage media.StorageProvider,
	resolver *permission.Resolver,
	gw *gateway.Publisher,
	auditLogger *audit.Logger,
	logger zerolog.Logger,
) *PinHandler

NewPinHandler creates a new pin handler.

func (*PinHandler) ListPins

func (h *PinHandler) ListPins(c fiber.Ctx) error

ListPins handles GET /api/v1/channels/:channelID/pins.

func (*PinHandler) PinMessage

func (h *PinHandler) PinMessage(c fiber.Ctx) error

PinMessage handles PUT /api/v1/messages/:messageID/pin.

func (*PinHandler) UnpinMessage

func (h *PinHandler) UnpinMessage(c fiber.Ctx) error

UnpinMessage handles DELETE /api/v1/messages/:messageID/pin.

type Pinger

type Pinger interface {
	Ping(ctx context.Context) error
}

Pinger checks connectivity to a backing service.

type ReactionHandler

type ReactionHandler struct {
	// contains filtered or unexported fields
}

ReactionHandler serves reaction endpoints.

func NewReactionHandler

func NewReactionHandler(
	reactions reaction.Repository,
	messages message.Repository,
	emojiRepo emoji.Repository,
	gw *gateway.Publisher,
	logger zerolog.Logger,
) *ReactionHandler

NewReactionHandler creates a new reaction handler.

func (*ReactionHandler) AddReaction

func (h *ReactionHandler) AddReaction(c fiber.Ctx) error

AddReaction handles PUT /api/v1/channels/:channelID/messages/:messageID/reactions/:emoji.

func (*ReactionHandler) ListReactionUsers

func (h *ReactionHandler) ListReactionUsers(c fiber.Ctx) error

ListReactionUsers handles GET /api/v1/channels/:channelID/messages/:messageID/reactions/:emoji.

func (*ReactionHandler) ListReactions

func (h *ReactionHandler) ListReactions(c fiber.Ctx) error

ListReactions handles GET /api/v1/channels/:channelID/messages/:messageID/reactions.

func (*ReactionHandler) RemoveReaction

func (h *ReactionHandler) RemoveReaction(c fiber.Ctx) error

RemoveReaction handles DELETE /api/v1/channels/:channelID/messages/:messageID/reactions/:emoji.

type ReadStateHandler

type ReadStateHandler struct {
	// contains filtered or unexported fields
}

ReadStateHandler serves channel read state endpoints.

func NewReadStateHandler

func NewReadStateHandler(readStates readstate.Repository, gw *gateway.Publisher, logger zerolog.Logger) *ReadStateHandler

NewReadStateHandler creates a new read state handler.

func (*ReadStateHandler) Ack

func (h *ReadStateHandler) Ack(c fiber.Ctx) error

Ack handles POST /api/v1/channels/:channelID/ack. It advances the user's read position in the channel to the specified message and dispatches a MESSAGE_ACK event to the user's connected sessions.

type RoleHandler

type RoleHandler struct {
	// contains filtered or unexported fields
}

RoleHandler serves role endpoints.

func NewRoleHandler

func NewRoleHandler(roles role.Repository, perms *permission.Publisher, gw *gateway.Publisher, maxRoles int, auditLogger *audit.Logger, logger zerolog.Logger) *RoleHandler

NewRoleHandler creates a new role handler.

func (*RoleHandler) CreateRole

func (h *RoleHandler) CreateRole(c fiber.Ctx) error

CreateRole handles POST /api/v1/server/roles.

func (*RoleHandler) DeleteRole

func (h *RoleHandler) DeleteRole(c fiber.Ctx) error

DeleteRole handles DELETE /api/v1/server/roles/:roleID.

func (*RoleHandler) ListRoles

func (h *RoleHandler) ListRoles(c fiber.Ctx) error

ListRoles handles GET /api/v1/server/roles.

func (*RoleHandler) UpdateRole

func (h *RoleHandler) UpdateRole(c fiber.Ctx) error

UpdateRole handles PATCH /api/v1/server/roles/:roleID.

type SearchHandler

type SearchHandler struct {
	// contains filtered or unexported fields
}

SearchHandler serves message search endpoints.

func NewSearchHandler

func NewSearchHandler(service *search.Service, logger zerolog.Logger) *SearchHandler

NewSearchHandler creates a new search handler.

func (*SearchHandler) SearchMessages

func (h *SearchHandler) SearchMessages(c fiber.Ctx) error

SearchMessages handles GET /api/v1/search/messages. It returns messages matching the query, scoped to channels the authenticated user has permission to view.

type ServerHandler

type ServerHandler struct {
	// contains filtered or unexported fields
}

ServerHandler serves server configuration endpoints.

func NewServerHandler

func NewServerHandler(servers server.Repository, gw *gateway.Publisher, auditLogger *audit.Logger, logger zerolog.Logger) *ServerHandler

NewServerHandler creates a new server handler.

func (*ServerHandler) Get

func (h *ServerHandler) Get(c fiber.Ctx) error

Get handles GET /api/v1/server.

func (*ServerHandler) GetPublicInfo

func (h *ServerHandler) GetPublicInfo(c fiber.Ctx) error

GetPublicInfo handles GET /api/v1/server/info (unauthenticated).

func (*ServerHandler) Update

func (h *ServerHandler) Update(c fiber.Ctx) error

Update handles PATCH /api/v1/server.

type SettingSyncHandler

type SettingSyncHandler struct {
	// contains filtered or unexported fields
}

SettingSyncHandler serves the encrypted settings sync endpoints.

func NewSettingSyncHandler

func NewSettingSyncHandler(repo settingsync.Repository, logger zerolog.Logger) *SettingSyncHandler

NewSettingSyncHandler creates a new settings sync handler.

func (*SettingSyncHandler) Delete

func (h *SettingSyncHandler) Delete(c fiber.Ctx) error

Delete handles DELETE /api/v1/users/@me/synced-settings.

func (*SettingSyncHandler) Get

func (h *SettingSyncHandler) Get(c fiber.Ctx) error

Get handles GET /api/v1/users/@me/synced-settings.

func (*SettingSyncHandler) Put

func (h *SettingSyncHandler) Put(c fiber.Ctx) error

Put handles PUT /api/v1/users/@me/synced-settings.

type ThreadHandler

type ThreadHandler struct {
	// contains filtered or unexported fields
}

ThreadHandler serves thread endpoints.

func NewThreadHandler

func NewThreadHandler(
	threads thread.Repository,
	messages message.Repository,
	channels channel.Repository,
	attachments attachment.Repository,
	reactions reaction.Repository,
	storage media.StorageProvider,
	resolver *permission.Resolver,
	gw *gateway.Publisher,
	presenceStore *presence.Store,
	maxContent int,
	maxAttachments int,
	logger zerolog.Logger,
) *ThreadHandler

NewThreadHandler creates a new thread handler.

func (*ThreadHandler) CreateThread

func (h *ThreadHandler) CreateThread(c fiber.Ctx) error

CreateThread handles POST /api/v1/messages/:messageID/threads.

func (*ThreadHandler) CreateThreadMessage

func (h *ThreadHandler) CreateThreadMessage(c fiber.Ctx) error

CreateThreadMessage handles POST /api/v1/threads/:threadID/messages.

func (*ThreadHandler) GetThread

func (h *ThreadHandler) GetThread(c fiber.Ctx) error

GetThread handles GET /api/v1/threads/:threadID.

func (*ThreadHandler) ListThreadMessages

func (h *ThreadHandler) ListThreadMessages(c fiber.Ctx) error

ListThreadMessages handles GET /api/v1/threads/:threadID/messages.

func (*ThreadHandler) ListThreads

func (h *ThreadHandler) ListThreads(c fiber.Ctx) error

ListThreads handles GET /api/v1/channels/:channelID/threads.

func (*ThreadHandler) UpdateThread

func (h *ThreadHandler) UpdateThread(c fiber.Ctx) error

UpdateThread handles PATCH /api/v1/threads/:threadID.

type TypingHandler

type TypingHandler struct {
	// contains filtered or unexported fields
}

TypingHandler serves the typing indicator endpoint.

func NewTypingHandler

func NewTypingHandler(presenceStore *presence.Store, gw *gateway.Publisher, logger zerolog.Logger) *TypingHandler

NewTypingHandler creates a new typing handler.

func (*TypingHandler) StartTyping

func (h *TypingHandler) StartTyping(c fiber.Ctx) error

StartTyping handles POST /api/v1/channels/:channelID/typing. It records a typing indicator for the authenticated user, deduplicating rapid calls via a short-lived Valkey key. When the key is newly created, a TYPING_START dispatch event is published to the gateway.

func (*TypingHandler) StopTyping

func (h *TypingHandler) StopTyping(c fiber.Ctx) error

StopTyping handles DELETE /api/v1/channels/:channelID/typing. It clears the typing indicator for the authenticated user and publishes a TYPING_STOP dispatch event when the key existed.

type UserHandler

type UserHandler struct {
	// contains filtered or unexported fields
}

UserHandler serves user profile endpoints.

func NewUserHandler

func NewUserHandler(users user.Repository, authSvc *auth.Service, logger zerolog.Logger) *UserHandler

NewUserHandler creates a new user handler.

func (*UserHandler) DeleteMe

func (h *UserHandler) DeleteMe(c fiber.Ctx) error

DeleteMe handles DELETE /api/v1/users/@me.

func (*UserHandler) GetMe

func (h *UserHandler) GetMe(c fiber.Ctx) error

GetMe handles GET /api/v1/users/@me.

func (*UserHandler) GetProfile

func (h *UserHandler) GetProfile(c fiber.Ctx) error

GetProfile handles GET /api/v1/users/:userID.

func (*UserHandler) UpdateMe

func (h *UserHandler) UpdateMe(c fiber.Ctx) error

UpdateMe handles PATCH /api/v1/users/@me.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL