Documentation
¶
Overview ¶
Package handler provides HTTP handlers for the Convos API. It includes utilities for managing user sessions, constructing absolute URLs, and handling errors in a consistent manner across the API endpoints. The Handler struct serves as a central point for accessing core application logic, embedding services, and session management.
Index ¶
- Variables
- func ParseWebhookNetworks(s string) []*net.IPNet
- type Handler
- func (h *Handler) CheckForUpdates(ctx context.Context, request api.CheckForUpdatesRequestObject) (api.CheckForUpdatesResponseObject, error)
- func (h *Handler) ConnectionMessages(ctx context.Context, request api.ConnectionMessagesRequestObject) (api.ConnectionMessagesResponseObject, error)
- func (h *Handler) ConversationMessages(ctx context.Context, request api.ConversationMessagesRequestObject) (api.ConversationMessagesResponseObject, error)
- func (h *Handler) CreateConnection(ctx context.Context, request api.CreateConnectionRequestObject) (api.CreateConnectionResponseObject, error)
- func (h *Handler) DeleteFiles(ctx context.Context, request api.DeleteFilesRequestObject) (api.DeleteFilesResponseObject, error)
- func (h *Handler) DeleteUser(ctx context.Context, request api.DeleteUserRequestObject) (api.DeleteUserResponseObject, error)
- func (h *Handler) Embed(ctx context.Context, request api.EmbedRequestObject) (api.EmbedResponseObject, error)
- func (h *Handler) GetDictionary(ctx context.Context, request api.GetDictionaryRequestObject) (api.GetDictionaryResponseObject, error)
- func (h *Handler) GetFile(ctx context.Context, request api.GetFileRequestObject) (api.GetFileResponseObject, error)
- func (h *Handler) GetFiles(ctx context.Context, request api.GetFilesRequestObject) (api.GetFilesResponseObject, error)
- func (h *Handler) GetSettings(ctx context.Context, request api.GetSettingsRequestObject) (api.GetSettingsResponseObject, error)
- func (h *Handler) GetUser(ctx context.Context, request api.GetUserRequestObject) (api.GetUserResponseObject, error)
- func (h *Handler) GetUserFromCtx(ctx context.Context) *core.User
- func (h *Handler) GetUserFromSession(r *http.Request) *core.User
- func (h *Handler) GetUsers(ctx context.Context, request api.GetUsersRequestObject) (api.GetUsersResponseObject, error)
- func (h *Handler) GetVapidKey(ctx context.Context, request api.GetVapidKeyRequestObject) (api.GetVapidKeyResponseObject, error)
- func (h *Handler) InviteUser(ctx context.Context, request api.InviteUserRequestObject) (api.InviteUserResponseObject, error)
- func (h *Handler) ListConnectionProfiles(ctx context.Context, request api.ListConnectionProfilesRequestObject) (api.ListConnectionProfilesResponseObject, error)
- func (h *Handler) ListConnections(ctx context.Context, request api.ListConnectionsRequestObject) (api.ListConnectionsResponseObject, error)
- func (h *Handler) ListConversations(ctx context.Context, request api.ListConversationsRequestObject) (api.ListConversationsResponseObject, error)
- func (h *Handler) LoginUser(ctx context.Context, request api.LoginUserRequestObject) (api.LoginUserResponseObject, error)
- func (h *Handler) LogoutUser(ctx context.Context, request api.LogoutUserRequestObject) (api.LogoutUserResponseObject, error)
- func (h *Handler) MarkConnectionAsRead(ctx context.Context, request api.MarkConnectionAsReadRequestObject) (api.MarkConnectionAsReadResponseObject, error)
- func (h *Handler) MarkConversationAsRead(ctx context.Context, request api.MarkConversationAsReadRequestObject) (api.MarkConversationAsReadResponseObject, error)
- func (h *Handler) MarkNotificationsAsRead(ctx context.Context, request api.MarkNotificationsAsReadRequestObject) (api.MarkNotificationsAsReadResponseObject, error)
- func (h *Handler) NotificationMessages(ctx context.Context, request api.NotificationMessagesRequestObject) (api.NotificationMessagesResponseObject, error)
- func (h *Handler) OIDCCallbackHandler(w http.ResponseWriter, r *http.Request)
- func (h *Handler) OIDCLoginHandler(w http.ResponseWriter, r *http.Request)
- func (h *Handler) RegisterUser(ctx context.Context, request api.RegisterUserRequestObject) (api.RegisterUserResponseObject, error)
- func (h *Handler) RemoveConnection(ctx context.Context, request api.RemoveConnectionRequestObject) (api.RemoveConnectionResponseObject, error)
- func (h *Handler) RemoveConnectionProfile(ctx context.Context, request api.RemoveConnectionProfileRequestObject) (api.RemoveConnectionProfileResponseObject, error)
- func (h *Handler) SaveConnectionProfile(ctx context.Context, request api.SaveConnectionProfileRequestObject) (api.SaveConnectionProfileResponseObject, error)
- func (h *Handler) SearchMessages(ctx context.Context, request api.SearchMessagesRequestObject) (api.SearchMessagesResponseObject, error)
- func (h *Handler) SubscribeToPush(ctx context.Context, request api.SubscribeToPushRequestObject) (api.SubscribeToPushResponseObject, error)
- func (h *Handler) UnsubscribeFromPush(ctx context.Context, request api.UnsubscribeFromPushRequestObject) (api.UnsubscribeFromPushResponseObject, error)
- func (h *Handler) UpdateConnection(ctx context.Context, request api.UpdateConnectionRequestObject) (api.UpdateConnectionResponseObject, error)
- func (h *Handler) UpdateSettings(ctx context.Context, request api.UpdateSettingsRequestObject) (api.UpdateSettingsResponseObject, error)
- func (h *Handler) UpdateUser(ctx context.Context, request api.UpdateUserRequestObject) (api.UpdateUserResponseObject, error)
- func (h *Handler) UploadFile(ctx context.Context, request api.UploadFileRequestObject) (api.UploadFileResponseObject, error)
- func (h *Handler) Webhook(ctx context.Context, request api.WebhookRequestObject) (api.WebhookResponseObject, error)
Constants ¶
This section is empty.
Variables ¶
var ( ErrRequestNotFound = errors.New("internal error: request not found in context") ErrResponseWriterNotFound = errors.New("internal error: response writer not found in context") ErrForbidden = errors.New("forbidden") ErrInvalidInviteToken = errors.New("invalid token. You have to ask your Convos admin for a new link") )
var ( ErrUploadFail = errors.New("upload error") ErrUploadTooLarge = errors.New("file exceeds the maximum upload size") )
Functions ¶
func ParseWebhookNetworks ¶
ParseWebhookNetworks parses a comma-separated list of CIDR ranges.
Types ¶
type Handler ¶
type Handler struct {
Core *core.Core
Authenticator core.Authenticator
EmbedClient *embed.Client
I18n *i18n.Catalog
Store sessions.Store
WebhookNets []*net.IPNet
Bot *bot.Manager
MaxUploadSize int64
InviteExpiry time.Duration
}
func NewHandler ¶
func (*Handler) CheckForUpdates ¶
func (h *Handler) CheckForUpdates(ctx context.Context, request api.CheckForUpdatesRequestObject) (api.CheckForUpdatesResponseObject, error)
CheckForUpdates implements api.StrictServerInterface. Fetches the latest version from convos.chat and compares with the running version.
func (*Handler) ConnectionMessages ¶
func (h *Handler) ConnectionMessages(ctx context.Context, request api.ConnectionMessagesRequestObject) (api.ConnectionMessagesResponseObject, error)
ConnectionMessages implements api.StrictServerInterface.
func (*Handler) ConversationMessages ¶
func (h *Handler) ConversationMessages(ctx context.Context, request api.ConversationMessagesRequestObject) (api.ConversationMessagesResponseObject, error)
ConversationMessages implements api.StrictServerInterface.
func (*Handler) CreateConnection ¶
func (h *Handler) CreateConnection(ctx context.Context, request api.CreateConnectionRequestObject) (api.CreateConnectionResponseObject, error)
CreateConnection implements api.StrictServerInterface.
func (*Handler) DeleteFiles ¶
func (h *Handler) DeleteFiles(ctx context.Context, request api.DeleteFilesRequestObject) (api.DeleteFilesResponseObject, error)
DeleteFiles implements api.StrictServerInterface.
func (*Handler) DeleteUser ¶
func (h *Handler) DeleteUser(ctx context.Context, request api.DeleteUserRequestObject) (api.DeleteUserResponseObject, error)
DeleteUser implements api.StrictServerInterface.
func (*Handler) Embed ¶
func (h *Handler) Embed(ctx context.Context, request api.EmbedRequestObject) (api.EmbedResponseObject, error)
Embed implements api.StrictServerInterface. Fetches URL metadata (Open Graph, content-type) for link previews in chat.
func (*Handler) GetDictionary ¶
func (h *Handler) GetDictionary(ctx context.Context, request api.GetDictionaryRequestObject) (api.GetDictionaryResponseObject, error)
GetDictionary implements api.StrictServerInterface. Returns translation dictionary for the requested language.
func (*Handler) GetFile ¶
func (h *Handler) GetFile(ctx context.Context, request api.GetFileRequestObject) (api.GetFileResponseObject, error)
GetFile implements api.StrictServerInterface.
func (*Handler) GetFiles ¶
func (h *Handler) GetFiles(ctx context.Context, request api.GetFilesRequestObject) (api.GetFilesResponseObject, error)
GetFiles implements api.StrictServerInterface.
func (*Handler) GetSettings ¶
func (h *Handler) GetSettings(ctx context.Context, request api.GetSettingsRequestObject) (api.GetSettingsResponseObject, error)
GetSettings implements api.StrictServerInterface.
func (*Handler) GetUser ¶
func (h *Handler) GetUser(ctx context.Context, request api.GetUserRequestObject) (api.GetUserResponseObject, error)
GetUser implements api.StrictServerInterface.
func (*Handler) GetUserFromSession ¶
func (*Handler) GetUsers ¶
func (h *Handler) GetUsers(ctx context.Context, request api.GetUsersRequestObject) (api.GetUsersResponseObject, error)
GetUsers implements api.StrictServerInterface.
func (*Handler) GetVapidKey ¶
func (h *Handler) GetVapidKey(ctx context.Context, request api.GetVapidKeyRequestObject) (api.GetVapidKeyResponseObject, error)
GetVapidKey handles GET /push/vapid
func (*Handler) InviteUser ¶
func (h *Handler) InviteUser(ctx context.Context, request api.InviteUserRequestObject) (api.InviteUserResponseObject, error)
InviteUser implements api.StrictServerInterface.
func (*Handler) ListConnectionProfiles ¶
func (h *Handler) ListConnectionProfiles(ctx context.Context, request api.ListConnectionProfilesRequestObject) (api.ListConnectionProfilesResponseObject, error)
ListConnectionProfiles implements api.StrictServerInterface.
func (*Handler) ListConnections ¶
func (h *Handler) ListConnections(ctx context.Context, request api.ListConnectionsRequestObject) (api.ListConnectionsResponseObject, error)
ListConnections implements api.StrictServerInterface.
func (*Handler) ListConversations ¶
func (h *Handler) ListConversations(ctx context.Context, request api.ListConversationsRequestObject) (api.ListConversationsResponseObject, error)
ListConversations implements api.StrictServerInterface.
func (*Handler) LoginUser ¶
func (h *Handler) LoginUser(ctx context.Context, request api.LoginUserRequestObject) (api.LoginUserResponseObject, error)
LoginUser implements api.StrictServerInterface.
func (*Handler) LogoutUser ¶
func (h *Handler) LogoutUser(ctx context.Context, request api.LogoutUserRequestObject) (api.LogoutUserResponseObject, error)
LogoutUser implements api.StrictServerInterface.
func (*Handler) MarkConnectionAsRead ¶
func (h *Handler) MarkConnectionAsRead(ctx context.Context, request api.MarkConnectionAsReadRequestObject) (api.MarkConnectionAsReadResponseObject, error)
MarkConnectionAsRead implements api.StrictServerInterface.
func (*Handler) MarkConversationAsRead ¶
func (h *Handler) MarkConversationAsRead(ctx context.Context, request api.MarkConversationAsReadRequestObject) (api.MarkConversationAsReadResponseObject, error)
MarkConversationAsRead implements api.StrictServerInterface.
func (*Handler) MarkNotificationsAsRead ¶
func (h *Handler) MarkNotificationsAsRead(ctx context.Context, request api.MarkNotificationsAsReadRequestObject) (api.MarkNotificationsAsReadResponseObject, error)
MarkNotificationsAsRead implements api.StrictServerInterface.
func (*Handler) NotificationMessages ¶
func (h *Handler) NotificationMessages(ctx context.Context, request api.NotificationMessagesRequestObject) (api.NotificationMessagesResponseObject, error)
NotificationMessages implements api.StrictServerInterface.
func (*Handler) OIDCCallbackHandler ¶
func (h *Handler) OIDCCallbackHandler(w http.ResponseWriter, r *http.Request)
OIDCCallbackHandler handles the OAuth2 callback from the OIDC provider.
func (*Handler) OIDCLoginHandler ¶
func (h *Handler) OIDCLoginHandler(w http.ResponseWriter, r *http.Request)
OIDCLoginHandler initiates the OIDC login flow.
func (*Handler) RegisterUser ¶
func (h *Handler) RegisterUser(ctx context.Context, request api.RegisterUserRequestObject) (api.RegisterUserResponseObject, error)
RegisterUser implements api.StrictServerInterface.
func (*Handler) RemoveConnection ¶
func (h *Handler) RemoveConnection(ctx context.Context, request api.RemoveConnectionRequestObject) (api.RemoveConnectionResponseObject, error)
RemoveConnection implements api.StrictServerInterface.
func (*Handler) RemoveConnectionProfile ¶
func (h *Handler) RemoveConnectionProfile(ctx context.Context, request api.RemoveConnectionProfileRequestObject) (api.RemoveConnectionProfileResponseObject, error)
RemoveConnectionProfile implements api.StrictServerInterface.
func (*Handler) SaveConnectionProfile ¶
func (h *Handler) SaveConnectionProfile(ctx context.Context, request api.SaveConnectionProfileRequestObject) (api.SaveConnectionProfileResponseObject, error)
SaveConnectionProfile implements api.StrictServerInterface.
func (*Handler) SearchMessages ¶
func (h *Handler) SearchMessages(ctx context.Context, request api.SearchMessagesRequestObject) (api.SearchMessagesResponseObject, error)
SearchMessages implements api.StrictServerInterface.
func (*Handler) SubscribeToPush ¶
func (h *Handler) SubscribeToPush(ctx context.Context, request api.SubscribeToPushRequestObject) (api.SubscribeToPushResponseObject, error)
SubscribeToPush handles POST /push/subscribe
func (*Handler) UnsubscribeFromPush ¶
func (h *Handler) UnsubscribeFromPush(ctx context.Context, request api.UnsubscribeFromPushRequestObject) (api.UnsubscribeFromPushResponseObject, error)
UnsubscribeFromPush handles POST /push/unsubscribe
func (*Handler) UpdateConnection ¶
func (h *Handler) UpdateConnection(ctx context.Context, request api.UpdateConnectionRequestObject) (api.UpdateConnectionResponseObject, error)
UpdateConnection implements api.StrictServerInterface.
func (*Handler) UpdateSettings ¶
func (h *Handler) UpdateSettings(ctx context.Context, request api.UpdateSettingsRequestObject) (api.UpdateSettingsResponseObject, error)
UpdateSettings implements api.StrictServerInterface.
func (*Handler) UpdateUser ¶
func (h *Handler) UpdateUser(ctx context.Context, request api.UpdateUserRequestObject) (api.UpdateUserResponseObject, error)
UpdateUser implements api.StrictServerInterface.
func (*Handler) UploadFile ¶
func (h *Handler) UploadFile(ctx context.Context, request api.UploadFileRequestObject) (api.UploadFileResponseObject, error)
UploadFile implements api.StrictServerInterface.
func (*Handler) Webhook ¶
func (h *Handler) Webhook(ctx context.Context, request api.WebhookRequestObject) (api.WebhookResponseObject, error)
Webhook implements api.StrictServerInterface. Validates the source IP and forwards webhook payloads as IRC messages.