Documentation
¶
Index ¶
- Constants
- Variables
- func BuildUserName(username string) string
- func ExtractAttachmentUIDFromName(name string) (string, error)
- func ExtractIdentityProviderUIDFromName(name string) (string, error)
- func ExtractInboxIDFromName(name string) (int32, error)
- func ExtractInstanceSettingKeyFromName(name string) (string, error)
- func ExtractMemoReactionIDFromName(name string) (string, int32, error)
- func ExtractMemoUIDFromName(name string) (string, error)
- func ExtractUserIDFromName(name string) (int32, error)
- func ExtractUsernameFromName(name string) (string, error)
- func GetNameParentTokens(name string, tokenPrefixes ...string) ([]string, error)
- func IsPublicMethod(procedure string) bool
- func RegisterSSERoutes(router sseRouteRegistrar, hub *SSEHub, storeInstance *store.Store, ...)
- func ResolveUserByName(ctx context.Context, stores *store.Store, name string) (*store.User, error)
- func SaveAttachmentBlob(ctx context.Context, profile *profile.Profile, stores *store.Store, ...) error
- func SetResponseHeader(ctx context.Context, key, value string) error
- func ValidateAndGenerateUID(provided string) (string, error)
- func WithHeaderCarrier(ctx context.Context) context.Context
- type APIV1Service
- func (s *APIV1Service) BatchDeleteAttachments(ctx context.Context, request *v1pb.BatchDeleteAttachmentsRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) BatchGetUsers(ctx context.Context, request *v1pb.BatchGetUsersRequest) (*v1pb.BatchGetUsersResponse, error)
- func (s *APIV1Service) Check(ctx context.Context, _ *grpc_health_v1.HealthCheckRequest) (*grpc_health_v1.HealthCheckResponse, error)
- func (s *APIV1Service) CreateAttachment(ctx context.Context, request *v1pb.CreateAttachmentRequest) (*v1pb.Attachment, error)
- func (s *APIV1Service) CreateIdentityProvider(ctx context.Context, request *v1pb.CreateIdentityProviderRequest) (*v1pb.IdentityProvider, error)
- func (s *APIV1Service) CreateMemo(ctx context.Context, request *v1pb.CreateMemoRequest) (*v1pb.Memo, error)
- func (s *APIV1Service) CreateMemoComment(ctx context.Context, request *v1pb.CreateMemoCommentRequest) (*v1pb.Memo, error)
- func (s *APIV1Service) CreateMemoShare(ctx context.Context, request *v1pb.CreateMemoShareRequest) (*v1pb.MemoShare, error)
- func (s *APIV1Service) CreatePersonalAccessToken(ctx context.Context, request *v1pb.CreatePersonalAccessTokenRequest) (*v1pb.CreatePersonalAccessTokenResponse, error)
- func (s *APIV1Service) CreateShortcut(ctx context.Context, request *v1pb.CreateShortcutRequest) (*v1pb.Shortcut, error)
- func (s *APIV1Service) CreateUser(ctx context.Context, request *v1pb.CreateUserRequest) (*v1pb.User, error)
- func (s *APIV1Service) CreateUserWebhook(ctx context.Context, request *v1pb.CreateUserWebhookRequest) (*v1pb.UserWebhook, error)
- func (s *APIV1Service) DeleteAttachment(ctx context.Context, request *v1pb.DeleteAttachmentRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) DeleteIdentityProvider(ctx context.Context, request *v1pb.DeleteIdentityProviderRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) DeleteMemo(ctx context.Context, request *v1pb.DeleteMemoRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) DeleteMemoReaction(ctx context.Context, request *v1pb.DeleteMemoReactionRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) DeleteMemoShare(ctx context.Context, request *v1pb.DeleteMemoShareRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) DeletePersonalAccessToken(ctx context.Context, request *v1pb.DeletePersonalAccessTokenRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) DeleteShortcut(ctx context.Context, request *v1pb.DeleteShortcutRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) DeleteUser(ctx context.Context, request *v1pb.DeleteUserRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) DeleteUserNotification(ctx context.Context, request *v1pb.DeleteUserNotificationRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) DeleteUserWebhook(ctx context.Context, request *v1pb.DeleteUserWebhookRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) DispatchMemoCommentCreatedWebhook(ctx context.Context, commentMemo *v1pb.Memo, relatedMemoCreatorID int32) error
- func (s *APIV1Service) DispatchMemoCreatedWebhook(ctx context.Context, memo *v1pb.Memo) error
- func (s *APIV1Service) DispatchMemoDeletedWebhook(ctx context.Context, memo *v1pb.Memo) error
- func (s *APIV1Service) DispatchMemoUpdatedWebhook(ctx context.Context, memo *v1pb.Memo) error
- func (s *APIV1Service) GetAttachment(ctx context.Context, request *v1pb.GetAttachmentRequest) (*v1pb.Attachment, error)
- func (s *APIV1Service) GetAttachmentBlob(attachment *store.Attachment) ([]byte, error)
- func (s *APIV1Service) GetCurrentUser(ctx context.Context, _ *v1pb.GetCurrentUserRequest) (*v1pb.GetCurrentUserResponse, error)
- func (s *APIV1Service) GetIdentityProvider(ctx context.Context, request *v1pb.GetIdentityProviderRequest) (*v1pb.IdentityProvider, error)
- func (s *APIV1Service) GetInstanceAdmin(ctx context.Context) (*v1pb.User, error)
- func (s *APIV1Service) GetInstanceProfile(ctx context.Context, _ *v1pb.GetInstanceProfileRequest) (*v1pb.InstanceProfile, error)
- func (s *APIV1Service) GetInstanceSetting(ctx context.Context, request *v1pb.GetInstanceSettingRequest) (*v1pb.InstanceSetting, error)
- func (s *APIV1Service) GetMemo(ctx context.Context, request *v1pb.GetMemoRequest) (*v1pb.Memo, error)
- func (s *APIV1Service) GetMemoByShare(ctx context.Context, request *v1pb.GetMemoByShareRequest) (*v1pb.Memo, error)
- func (s *APIV1Service) GetShortcut(ctx context.Context, request *v1pb.GetShortcutRequest) (*v1pb.Shortcut, error)
- func (s *APIV1Service) GetUser(ctx context.Context, request *v1pb.GetUserRequest) (*v1pb.User, error)
- func (s *APIV1Service) GetUserSetting(ctx context.Context, request *v1pb.GetUserSettingRequest) (*v1pb.UserSetting, error)
- func (s *APIV1Service) GetUserStats(ctx context.Context, request *v1pb.GetUserStatsRequest) (*v1pb.UserStats, error)
- func (s *APIV1Service) ListAllUserStats(ctx context.Context, _ *v1pb.ListAllUserStatsRequest) (*v1pb.ListAllUserStatsResponse, error)
- func (s *APIV1Service) ListAttachments(ctx context.Context, request *v1pb.ListAttachmentsRequest) (*v1pb.ListAttachmentsResponse, error)
- func (s *APIV1Service) ListIdentityProviders(ctx context.Context, _ *v1pb.ListIdentityProvidersRequest) (*v1pb.ListIdentityProvidersResponse, error)
- func (s *APIV1Service) ListMemoAttachments(ctx context.Context, request *v1pb.ListMemoAttachmentsRequest) (*v1pb.ListMemoAttachmentsResponse, error)
- func (s *APIV1Service) ListMemoComments(ctx context.Context, request *v1pb.ListMemoCommentsRequest) (*v1pb.ListMemoCommentsResponse, error)
- func (s *APIV1Service) ListMemoReactions(ctx context.Context, request *v1pb.ListMemoReactionsRequest) (*v1pb.ListMemoReactionsResponse, error)
- func (s *APIV1Service) ListMemoRelations(ctx context.Context, request *v1pb.ListMemoRelationsRequest) (*v1pb.ListMemoRelationsResponse, error)
- func (s *APIV1Service) ListMemoShares(ctx context.Context, request *v1pb.ListMemoSharesRequest) (*v1pb.ListMemoSharesResponse, error)
- func (s *APIV1Service) ListMemos(ctx context.Context, request *v1pb.ListMemosRequest) (*v1pb.ListMemosResponse, error)
- func (s *APIV1Service) ListPersonalAccessTokens(ctx context.Context, request *v1pb.ListPersonalAccessTokensRequest) (*v1pb.ListPersonalAccessTokensResponse, error)
- func (s *APIV1Service) ListShortcuts(ctx context.Context, request *v1pb.ListShortcutsRequest) (*v1pb.ListShortcutsResponse, error)
- func (s *APIV1Service) ListUserNotifications(ctx context.Context, request *v1pb.ListUserNotificationsRequest) (*v1pb.ListUserNotificationsResponse, error)
- func (s *APIV1Service) ListUserSettings(ctx context.Context, request *v1pb.ListUserSettingsRequest) (*v1pb.ListUserSettingsResponse, error)
- func (s *APIV1Service) ListUserWebhooks(ctx context.Context, request *v1pb.ListUserWebhooksRequest) (*v1pb.ListUserWebhooksResponse, error)
- func (s *APIV1Service) ListUsers(ctx context.Context, request *v1pb.ListUsersRequest) (*v1pb.ListUsersResponse, error)
- func (s *APIV1Service) RefreshToken(ctx context.Context, _ *v1pb.RefreshTokenRequest) (*v1pb.RefreshTokenResponse, error)
- func (s *APIV1Service) RegisterGateway(ctx context.Context, echoServer *echo.Echo) error
- func (s *APIV1Service) SetMemoAttachments(ctx context.Context, request *v1pb.SetMemoAttachmentsRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) SetMemoRelations(ctx context.Context, request *v1pb.SetMemoRelationsRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) SignIn(ctx context.Context, request *v1pb.SignInRequest) (*v1pb.SignInResponse, error)
- func (s *APIV1Service) SignOut(ctx context.Context, _ *v1pb.SignOutRequest) (*emptypb.Empty, error)
- func (s *APIV1Service) Transcribe(ctx context.Context, request *v1pb.TranscribeRequest) (*v1pb.TranscribeResponse, error)
- func (s *APIV1Service) UpdateAttachment(ctx context.Context, request *v1pb.UpdateAttachmentRequest) (*v1pb.Attachment, error)
- func (s *APIV1Service) UpdateIdentityProvider(ctx context.Context, request *v1pb.UpdateIdentityProviderRequest) (*v1pb.IdentityProvider, error)
- func (s *APIV1Service) UpdateInstanceSetting(ctx context.Context, request *v1pb.UpdateInstanceSettingRequest) (*v1pb.InstanceSetting, error)
- func (s *APIV1Service) UpdateMemo(ctx context.Context, request *v1pb.UpdateMemoRequest) (*v1pb.Memo, error)
- func (s *APIV1Service) UpdateShortcut(ctx context.Context, request *v1pb.UpdateShortcutRequest) (*v1pb.Shortcut, error)
- func (s *APIV1Service) UpdateUser(ctx context.Context, request *v1pb.UpdateUserRequest) (*v1pb.User, error)
- func (s *APIV1Service) UpdateUserNotification(ctx context.Context, request *v1pb.UpdateUserNotificationRequest) (*v1pb.UserNotification, error)
- func (s *APIV1Service) UpdateUserSetting(ctx context.Context, request *v1pb.UpdateUserSettingRequest) (*v1pb.UserSetting, error)
- func (s *APIV1Service) UpdateUserWebhook(ctx context.Context, request *v1pb.UpdateUserWebhookRequest) (*v1pb.UserWebhook, error)
- func (s *APIV1Service) UpsertMemoReaction(ctx context.Context, request *v1pb.UpsertMemoReactionRequest) (*v1pb.Reaction, error)
- type AuthInterceptor
- type ConnectServiceHandler
- func (s *ConnectServiceHandler) BatchDeleteAttachments(ctx context.Context, req *connect.Request[v1pb.BatchDeleteAttachmentsRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) BatchGetUsers(ctx context.Context, req *connect.Request[v1pb.BatchGetUsersRequest]) (*connect.Response[v1pb.BatchGetUsersResponse], error)
- func (s *ConnectServiceHandler) CreateAttachment(ctx context.Context, req *connect.Request[v1pb.CreateAttachmentRequest]) (*connect.Response[v1pb.Attachment], error)
- func (s *ConnectServiceHandler) CreateIdentityProvider(ctx context.Context, req *connect.Request[v1pb.CreateIdentityProviderRequest]) (*connect.Response[v1pb.IdentityProvider], error)
- func (s *ConnectServiceHandler) CreateMemo(ctx context.Context, req *connect.Request[v1pb.CreateMemoRequest]) (*connect.Response[v1pb.Memo], error)
- func (s *ConnectServiceHandler) CreateMemoComment(ctx context.Context, req *connect.Request[v1pb.CreateMemoCommentRequest]) (*connect.Response[v1pb.Memo], error)
- func (s *ConnectServiceHandler) CreateMemoShare(ctx context.Context, req *connect.Request[v1pb.CreateMemoShareRequest]) (*connect.Response[v1pb.MemoShare], error)
- func (s *ConnectServiceHandler) CreatePersonalAccessToken(ctx context.Context, ...) (*connect.Response[v1pb.CreatePersonalAccessTokenResponse], error)
- func (s *ConnectServiceHandler) CreateShortcut(ctx context.Context, req *connect.Request[v1pb.CreateShortcutRequest]) (*connect.Response[v1pb.Shortcut], error)
- func (s *ConnectServiceHandler) CreateUser(ctx context.Context, req *connect.Request[v1pb.CreateUserRequest]) (*connect.Response[v1pb.User], error)
- func (s *ConnectServiceHandler) CreateUserWebhook(ctx context.Context, req *connect.Request[v1pb.CreateUserWebhookRequest]) (*connect.Response[v1pb.UserWebhook], error)
- func (s *ConnectServiceHandler) DeleteAttachment(ctx context.Context, req *connect.Request[v1pb.DeleteAttachmentRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) DeleteIdentityProvider(ctx context.Context, req *connect.Request[v1pb.DeleteIdentityProviderRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) DeleteMemo(ctx context.Context, req *connect.Request[v1pb.DeleteMemoRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) DeleteMemoReaction(ctx context.Context, req *connect.Request[v1pb.DeleteMemoReactionRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) DeleteMemoShare(ctx context.Context, req *connect.Request[v1pb.DeleteMemoShareRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) DeletePersonalAccessToken(ctx context.Context, ...) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) DeleteShortcut(ctx context.Context, req *connect.Request[v1pb.DeleteShortcutRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) DeleteUser(ctx context.Context, req *connect.Request[v1pb.DeleteUserRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) DeleteUserNotification(ctx context.Context, req *connect.Request[v1pb.DeleteUserNotificationRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) DeleteUserWebhook(ctx context.Context, req *connect.Request[v1pb.DeleteUserWebhookRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) GetAttachment(ctx context.Context, req *connect.Request[v1pb.GetAttachmentRequest]) (*connect.Response[v1pb.Attachment], error)
- func (s *ConnectServiceHandler) GetCurrentUser(ctx context.Context, req *connect.Request[v1pb.GetCurrentUserRequest]) (*connect.Response[v1pb.GetCurrentUserResponse], error)
- func (s *ConnectServiceHandler) GetIdentityProvider(ctx context.Context, req *connect.Request[v1pb.GetIdentityProviderRequest]) (*connect.Response[v1pb.IdentityProvider], error)
- func (s *ConnectServiceHandler) GetInstanceProfile(ctx context.Context, req *connect.Request[v1pb.GetInstanceProfileRequest]) (*connect.Response[v1pb.InstanceProfile], error)
- func (s *ConnectServiceHandler) GetInstanceSetting(ctx context.Context, req *connect.Request[v1pb.GetInstanceSettingRequest]) (*connect.Response[v1pb.InstanceSetting], error)
- func (s *ConnectServiceHandler) GetMemo(ctx context.Context, req *connect.Request[v1pb.GetMemoRequest]) (*connect.Response[v1pb.Memo], error)
- func (s *ConnectServiceHandler) GetMemoByShare(ctx context.Context, req *connect.Request[v1pb.GetMemoByShareRequest]) (*connect.Response[v1pb.Memo], error)
- func (s *ConnectServiceHandler) GetShortcut(ctx context.Context, req *connect.Request[v1pb.GetShortcutRequest]) (*connect.Response[v1pb.Shortcut], error)
- func (s *ConnectServiceHandler) GetUser(ctx context.Context, req *connect.Request[v1pb.GetUserRequest]) (*connect.Response[v1pb.User], error)
- func (s *ConnectServiceHandler) GetUserSetting(ctx context.Context, req *connect.Request[v1pb.GetUserSettingRequest]) (*connect.Response[v1pb.UserSetting], error)
- func (s *ConnectServiceHandler) GetUserStats(ctx context.Context, req *connect.Request[v1pb.GetUserStatsRequest]) (*connect.Response[v1pb.UserStats], error)
- func (s *ConnectServiceHandler) ListAllUserStats(ctx context.Context, req *connect.Request[v1pb.ListAllUserStatsRequest]) (*connect.Response[v1pb.ListAllUserStatsResponse], error)
- func (s *ConnectServiceHandler) ListAttachments(ctx context.Context, req *connect.Request[v1pb.ListAttachmentsRequest]) (*connect.Response[v1pb.ListAttachmentsResponse], error)
- func (s *ConnectServiceHandler) ListIdentityProviders(ctx context.Context, req *connect.Request[v1pb.ListIdentityProvidersRequest]) (*connect.Response[v1pb.ListIdentityProvidersResponse], error)
- func (s *ConnectServiceHandler) ListMemoAttachments(ctx context.Context, req *connect.Request[v1pb.ListMemoAttachmentsRequest]) (*connect.Response[v1pb.ListMemoAttachmentsResponse], error)
- func (s *ConnectServiceHandler) ListMemoComments(ctx context.Context, req *connect.Request[v1pb.ListMemoCommentsRequest]) (*connect.Response[v1pb.ListMemoCommentsResponse], error)
- func (s *ConnectServiceHandler) ListMemoReactions(ctx context.Context, req *connect.Request[v1pb.ListMemoReactionsRequest]) (*connect.Response[v1pb.ListMemoReactionsResponse], error)
- func (s *ConnectServiceHandler) ListMemoRelations(ctx context.Context, req *connect.Request[v1pb.ListMemoRelationsRequest]) (*connect.Response[v1pb.ListMemoRelationsResponse], error)
- func (s *ConnectServiceHandler) ListMemoShares(ctx context.Context, req *connect.Request[v1pb.ListMemoSharesRequest]) (*connect.Response[v1pb.ListMemoSharesResponse], error)
- func (s *ConnectServiceHandler) ListMemos(ctx context.Context, req *connect.Request[v1pb.ListMemosRequest]) (*connect.Response[v1pb.ListMemosResponse], error)
- func (s *ConnectServiceHandler) ListPersonalAccessTokens(ctx context.Context, ...) (*connect.Response[v1pb.ListPersonalAccessTokensResponse], error)
- func (s *ConnectServiceHandler) ListShortcuts(ctx context.Context, req *connect.Request[v1pb.ListShortcutsRequest]) (*connect.Response[v1pb.ListShortcutsResponse], error)
- func (s *ConnectServiceHandler) ListUserNotifications(ctx context.Context, req *connect.Request[v1pb.ListUserNotificationsRequest]) (*connect.Response[v1pb.ListUserNotificationsResponse], error)
- func (s *ConnectServiceHandler) ListUserSettings(ctx context.Context, req *connect.Request[v1pb.ListUserSettingsRequest]) (*connect.Response[v1pb.ListUserSettingsResponse], error)
- func (s *ConnectServiceHandler) ListUserWebhooks(ctx context.Context, req *connect.Request[v1pb.ListUserWebhooksRequest]) (*connect.Response[v1pb.ListUserWebhooksResponse], error)
- func (s *ConnectServiceHandler) ListUsers(ctx context.Context, req *connect.Request[v1pb.ListUsersRequest]) (*connect.Response[v1pb.ListUsersResponse], error)
- func (s *ConnectServiceHandler) RefreshToken(ctx context.Context, req *connect.Request[v1pb.RefreshTokenRequest]) (*connect.Response[v1pb.RefreshTokenResponse], error)
- func (s *ConnectServiceHandler) RegisterConnectHandlers(mux *http.ServeMux, opts ...connect.HandlerOption)
- func (s *ConnectServiceHandler) SetMemoAttachments(ctx context.Context, req *connect.Request[v1pb.SetMemoAttachmentsRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) SetMemoRelations(ctx context.Context, req *connect.Request[v1pb.SetMemoRelationsRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) SignIn(ctx context.Context, req *connect.Request[v1pb.SignInRequest]) (*connect.Response[v1pb.SignInResponse], error)
- func (s *ConnectServiceHandler) SignOut(ctx context.Context, req *connect.Request[v1pb.SignOutRequest]) (*connect.Response[emptypb.Empty], error)
- func (s *ConnectServiceHandler) Transcribe(ctx context.Context, req *connect.Request[v1pb.TranscribeRequest]) (*connect.Response[v1pb.TranscribeResponse], error)
- func (s *ConnectServiceHandler) UpdateAttachment(ctx context.Context, req *connect.Request[v1pb.UpdateAttachmentRequest]) (*connect.Response[v1pb.Attachment], error)
- func (s *ConnectServiceHandler) UpdateIdentityProvider(ctx context.Context, req *connect.Request[v1pb.UpdateIdentityProviderRequest]) (*connect.Response[v1pb.IdentityProvider], error)
- func (s *ConnectServiceHandler) UpdateInstanceSetting(ctx context.Context, req *connect.Request[v1pb.UpdateInstanceSettingRequest]) (*connect.Response[v1pb.InstanceSetting], error)
- func (s *ConnectServiceHandler) UpdateMemo(ctx context.Context, req *connect.Request[v1pb.UpdateMemoRequest]) (*connect.Response[v1pb.Memo], error)
- func (s *ConnectServiceHandler) UpdateShortcut(ctx context.Context, req *connect.Request[v1pb.UpdateShortcutRequest]) (*connect.Response[v1pb.Shortcut], error)
- func (s *ConnectServiceHandler) UpdateUser(ctx context.Context, req *connect.Request[v1pb.UpdateUserRequest]) (*connect.Response[v1pb.User], error)
- func (s *ConnectServiceHandler) UpdateUserNotification(ctx context.Context, req *connect.Request[v1pb.UpdateUserNotificationRequest]) (*connect.Response[v1pb.UserNotification], error)
- func (s *ConnectServiceHandler) UpdateUserSetting(ctx context.Context, req *connect.Request[v1pb.UpdateUserSettingRequest]) (*connect.Response[v1pb.UserSetting], error)
- func (s *ConnectServiceHandler) UpdateUserWebhook(ctx context.Context, req *connect.Request[v1pb.UpdateUserWebhookRequest]) (*connect.Response[v1pb.UserWebhook], error)
- func (s *ConnectServiceHandler) UpsertMemoReaction(ctx context.Context, req *connect.Request[v1pb.UpsertMemoReactionRequest]) (*connect.Response[v1pb.Reaction], error)
- type HeaderCarrier
- type LoggingInterceptor
- func (*LoggingInterceptor) WrapStreamingClient(next connect.StreamingClientFunc) connect.StreamingClientFunc
- func (*LoggingInterceptor) WrapStreamingHandler(next connect.StreamingHandlerFunc) connect.StreamingHandlerFunc
- func (in *LoggingInterceptor) WrapUnary(next connect.UnaryFunc) connect.UnaryFunc
- type MetadataInterceptor
- func (*MetadataInterceptor) WrapStreamingClient(next connect.StreamingClientFunc) connect.StreamingClientFunc
- func (*MetadataInterceptor) WrapStreamingHandler(next connect.StreamingHandlerFunc) connect.StreamingHandlerFunc
- func (*MetadataInterceptor) WrapUnary(next connect.UnaryFunc) connect.UnaryFunc
- type RecoveryInterceptor
- func (*RecoveryInterceptor) WrapStreamingClient(next connect.StreamingClientFunc) connect.StreamingClientFunc
- func (*RecoveryInterceptor) WrapStreamingHandler(next connect.StreamingHandlerFunc) connect.StreamingHandlerFunc
- func (in *RecoveryInterceptor) WrapUnary(next connect.UnaryFunc) connect.UnaryFunc
- type SSEClient
- type SSEEvent
- type SSEEventType
- type SSEHub
Constants ¶
const ( // The upload memory buffer is 32 MiB. // It should be kept low, so RAM usage doesn't get out of control. // This is unrelated to maximum upload size limit, which is now set through system setting. MaxUploadBufferSizeBytes = 32 << 20 MebiByte = 1024 * 1024 // ThumbnailCacheFolder is the folder name where the thumbnail images are stored. ThumbnailCacheFolder = ".thumbnail_cache" )
const ( // DefaultPageSize is the default page size for requests. DefaultPageSize = 10 // MaxPageSize is the maximum page size for requests. MaxPageSize = 1000 )
const ( InstanceSettingNamePrefix = "instance/settings/" UserNamePrefix = "users/" MemoNamePrefix = "memos/" AttachmentNamePrefix = "attachments/" ReactionNamePrefix = "reactions/" InboxNamePrefix = "inboxes/" IdentityProviderNamePrefix = "identity-providers/" WebhookNamePrefix = "webhooks/" )
Variables ¶
var PublicMethods = map[string]struct{}{
"/memos.api.v1.AuthService/SignIn": {},
"/memos.api.v1.AuthService/RefreshToken": {},
"/memos.api.v1.InstanceService/GetInstanceProfile": {},
"/memos.api.v1.InstanceService/GetInstanceSetting": {},
"/memos.api.v1.UserService/CreateUser": {},
"/memos.api.v1.UserService/GetUser": {},
"/memos.api.v1.UserService/BatchGetUsers": {},
"/memos.api.v1.UserService/GetUserAvatar": {},
"/memos.api.v1.UserService/GetUserStats": {},
"/memos.api.v1.UserService/ListAllUserStats": {},
"/memos.api.v1.IdentityProviderService/ListIdentityProviders": {},
"/memos.api.v1.MemoService/GetMemo": {},
"/memos.api.v1.MemoService/ListMemos": {},
"/memos.api.v1.MemoService/ListMemoComments": {},
"/memos.api.v1.MemoService/GetMemoByShare": {},
}
PublicMethods defines API endpoints that don't require authentication. All other endpoints require a valid session or access token.
This is the SINGLE SOURCE OF TRUTH for public endpoints. Both Connect interceptor and gRPC-Gateway interceptor use this map.
Format: Full gRPC procedure path as returned by req.Spec().Procedure (Connect) or info.FullMethod (gRPC interceptor).
var SupportedThumbnailMimeTypes = []string{
"image/png",
"image/jpeg",
}
Functions ¶
func BuildUserName ¶ added in v0.27.0
BuildUserName returns the canonical public resource name for a user.
func ExtractAttachmentUIDFromName ¶ added in v0.25.0
ExtractAttachmentUIDFromName returns the attachment UID from a resource name.
func ExtractIdentityProviderUIDFromName ¶ added in v0.27.0
func ExtractInboxIDFromName ¶
ExtractInboxIDFromName returns the inbox ID from a resource name.
func ExtractInstanceSettingKeyFromName ¶ added in v0.25.3
func ExtractMemoReactionIDFromName ¶ added in v0.26.0
ExtractMemoReactionIDFromName returns the memo UID and reaction ID from a resource name. e.g., "memos/abc/reactions/123" -> ("abc", 123).
func ExtractMemoUIDFromName ¶ added in v0.24.0
ExtractMemoUIDFromName returns the memo UID from a resource name. e.g., "memos/uuid" -> "uuid".
func ExtractUserIDFromName ¶
ExtractUserIDFromName returns the uid from a resource name.
func ExtractUsernameFromName ¶ added in v0.27.0
ExtractUsernameFromName extracts the username token from a user resource name.
func GetNameParentTokens ¶
GetNameParentTokens returns the tokens from a resource name.
func IsPublicMethod ¶ added in v0.26.0
IsPublicMethod checks if a procedure path is public (no authentication required). Returns true for public methods, false for protected methods.
func RegisterSSERoutes ¶ added in v0.27.0
func RegisterSSERoutes(router sseRouteRegistrar, hub *SSEHub, storeInstance *store.Store, secret string)
RegisterSSERoutes registers the SSE endpoint on the given Echo router.
func ResolveUserByName ¶ added in v0.27.0
ResolveUserByName resolves a username-based user resource name to a store user.
func SaveAttachmentBlob ¶ added in v0.25.0
func SaveAttachmentBlob(ctx context.Context, profile *profile.Profile, stores *store.Store, create *store.Attachment) error
SaveAttachmentBlob saves the blob of attachment based on the storage config.
func SetResponseHeader ¶ added in v0.26.0
SetResponseHeader sets a header in the response.
This function works for both gRPC and Connect protocols:
- For gRPC: Uses grpc.SetHeader to set headers in gRPC metadata
- For Connect: Stores in HeaderCarrier for Connect wrapper to apply later
The protocol is automatically detected based on whether a HeaderCarrier exists in the context (injected by Connect wrappers).
func ValidateAndGenerateUID ¶ added in v0.27.0
ValidateAndGenerateUID validates a user-provided UID or generates a new one. If provided is empty, a new shortuuid is generated. If provided is non-empty, it is validated against base.UIDMatcher.
Types ¶
type APIV1Service ¶
type APIV1Service struct {
v1pb.UnimplementedInstanceServiceServer
v1pb.UnimplementedAuthServiceServer
v1pb.UnimplementedUserServiceServer
v1pb.UnimplementedMemoServiceServer
v1pb.UnimplementedAttachmentServiceServer
v1pb.UnimplementedAIServiceServer
v1pb.UnimplementedShortcutServiceServer
v1pb.UnimplementedIdentityProviderServiceServer
Secret string
Profile *profile.Profile
Store *store.Store
MarkdownService markdown.Service
SSEHub *SSEHub
// contains filtered or unexported fields
}
func NewAPIV1Service ¶
func (*APIV1Service) BatchDeleteAttachments ¶ added in v0.27.0
func (s *APIV1Service) BatchDeleteAttachments(ctx context.Context, request *v1pb.BatchDeleteAttachmentsRequest) (*emptypb.Empty, error)
func (*APIV1Service) BatchGetUsers ¶ added in v0.27.0
func (s *APIV1Service) BatchGetUsers(ctx context.Context, request *v1pb.BatchGetUsersRequest) (*v1pb.BatchGetUsersResponse, error)
func (*APIV1Service) Check ¶ added in v0.24.2
func (s *APIV1Service) Check(ctx context.Context, _ *grpc_health_v1.HealthCheckRequest) (*grpc_health_v1.HealthCheckResponse, error)
func (*APIV1Service) CreateAttachment ¶ added in v0.25.0
func (s *APIV1Service) CreateAttachment(ctx context.Context, request *v1pb.CreateAttachmentRequest) (*v1pb.Attachment, error)
func (*APIV1Service) CreateIdentityProvider ¶
func (s *APIV1Service) CreateIdentityProvider(ctx context.Context, request *v1pb.CreateIdentityProviderRequest) (*v1pb.IdentityProvider, error)
func (*APIV1Service) CreateMemo ¶
func (s *APIV1Service) CreateMemo(ctx context.Context, request *v1pb.CreateMemoRequest) (*v1pb.Memo, error)
func (*APIV1Service) CreateMemoComment ¶
func (s *APIV1Service) CreateMemoComment(ctx context.Context, request *v1pb.CreateMemoCommentRequest) (*v1pb.Memo, error)
func (*APIV1Service) CreateMemoShare ¶ added in v0.27.0
func (s *APIV1Service) CreateMemoShare(ctx context.Context, request *v1pb.CreateMemoShareRequest) (*v1pb.MemoShare, error)
CreateMemoShare creates an opaque share link for a memo. Only the memo's creator or an admin may call this.
func (*APIV1Service) CreatePersonalAccessToken ¶ added in v0.26.0
func (s *APIV1Service) CreatePersonalAccessToken(ctx context.Context, request *v1pb.CreatePersonalAccessTokenRequest) (*v1pb.CreatePersonalAccessTokenResponse, error)
CreatePersonalAccessToken creates a new Personal Access Token (PAT) for a user.
Use cases: - User manually creates token in settings for mobile app - User creates token for CLI tool - User creates token for third-party integration
Token properties: - Random string with memos_pat_ prefix - SHA-256 hash stored in database - Optional expiration time (can be never-expiring) - User-provided description for identification
Security considerations: - Full token is only shown ONCE (in this response) - User should copy and store it securely - Token can be revoked by deleting it from settings
Authentication: Required (session cookie or access token) Authorization: User can only create tokens for themselves.
func (*APIV1Service) CreateShortcut ¶ added in v0.24.0
func (s *APIV1Service) CreateShortcut(ctx context.Context, request *v1pb.CreateShortcutRequest) (*v1pb.Shortcut, error)
func (*APIV1Service) CreateUser ¶
func (s *APIV1Service) CreateUser(ctx context.Context, request *v1pb.CreateUserRequest) (*v1pb.User, error)
func (*APIV1Service) CreateUserWebhook ¶ added in v0.25.1
func (s *APIV1Service) CreateUserWebhook(ctx context.Context, request *v1pb.CreateUserWebhookRequest) (*v1pb.UserWebhook, error)
func (*APIV1Service) DeleteAttachment ¶ added in v0.25.0
func (s *APIV1Service) DeleteAttachment(ctx context.Context, request *v1pb.DeleteAttachmentRequest) (*emptypb.Empty, error)
func (*APIV1Service) DeleteIdentityProvider ¶
func (s *APIV1Service) DeleteIdentityProvider(ctx context.Context, request *v1pb.DeleteIdentityProviderRequest) (*emptypb.Empty, error)
func (*APIV1Service) DeleteMemo ¶
func (s *APIV1Service) DeleteMemo(ctx context.Context, request *v1pb.DeleteMemoRequest) (*emptypb.Empty, error)
func (*APIV1Service) DeleteMemoReaction ¶
func (s *APIV1Service) DeleteMemoReaction(ctx context.Context, request *v1pb.DeleteMemoReactionRequest) (*emptypb.Empty, error)
func (*APIV1Service) DeleteMemoShare ¶ added in v0.27.0
func (s *APIV1Service) DeleteMemoShare(ctx context.Context, request *v1pb.DeleteMemoShareRequest) (*emptypb.Empty, error)
DeleteMemoShare revokes a share link. Only the memo's creator or an admin may call this.
func (*APIV1Service) DeletePersonalAccessToken ¶ added in v0.26.0
func (s *APIV1Service) DeletePersonalAccessToken(ctx context.Context, request *v1pb.DeletePersonalAccessTokenRequest) (*emptypb.Empty, error)
DeletePersonalAccessToken revokes a Personal Access Token.
This endpoint: 1. Removes the token from the user's access tokens list 2. Immediately invalidates the token (subsequent API calls with it will fail)
Use cases: - User revokes a compromised token - User removes token for unused app/device - User cleans up old tokens
Authentication: Required (session cookie or access token) Authorization: User can only delete their own tokens.
func (*APIV1Service) DeleteShortcut ¶ added in v0.24.0
func (s *APIV1Service) DeleteShortcut(ctx context.Context, request *v1pb.DeleteShortcutRequest) (*emptypb.Empty, error)
func (*APIV1Service) DeleteUser ¶
func (s *APIV1Service) DeleteUser(ctx context.Context, request *v1pb.DeleteUserRequest) (*emptypb.Empty, error)
func (*APIV1Service) DeleteUserNotification ¶ added in v0.25.3
func (s *APIV1Service) DeleteUserNotification(ctx context.Context, request *v1pb.DeleteUserNotificationRequest) (*emptypb.Empty, error)
DeleteUserNotification permanently deletes a notification. Only the notification owner can delete their notifications.
func (*APIV1Service) DeleteUserWebhook ¶ added in v0.25.1
func (s *APIV1Service) DeleteUserWebhook(ctx context.Context, request *v1pb.DeleteUserWebhookRequest) (*emptypb.Empty, error)
func (*APIV1Service) DispatchMemoCommentCreatedWebhook ¶ added in v0.27.0
func (s *APIV1Service) DispatchMemoCommentCreatedWebhook(ctx context.Context, commentMemo *v1pb.Memo, relatedMemoCreatorID int32) error
DispatchMemoCommentCreatedWebhook dispatches webhook to the related memo owner when a comment is created.
func (*APIV1Service) DispatchMemoCreatedWebhook ¶
DispatchMemoCreatedWebhook dispatches webhook when memo is created.
func (*APIV1Service) DispatchMemoDeletedWebhook ¶
DispatchMemoDeletedWebhook dispatches webhook when memo is deleted.
func (*APIV1Service) DispatchMemoUpdatedWebhook ¶
DispatchMemoUpdatedWebhook dispatches webhook when memo is updated.
func (*APIV1Service) GetAttachment ¶ added in v0.25.0
func (s *APIV1Service) GetAttachment(ctx context.Context, request *v1pb.GetAttachmentRequest) (*v1pb.Attachment, error)
func (*APIV1Service) GetAttachmentBlob ¶ added in v0.25.0
func (s *APIV1Service) GetAttachmentBlob(attachment *store.Attachment) ([]byte, error)
func (*APIV1Service) GetCurrentUser ¶ added in v0.22.1
func (s *APIV1Service) GetCurrentUser(ctx context.Context, _ *v1pb.GetCurrentUserRequest) (*v1pb.GetCurrentUserResponse, error)
GetCurrentUser returns the authenticated user's information. Validates the access token and returns user details.
Authentication: Required (access token). Returns: User information.
func (*APIV1Service) GetIdentityProvider ¶
func (s *APIV1Service) GetIdentityProvider(ctx context.Context, request *v1pb.GetIdentityProviderRequest) (*v1pb.IdentityProvider, error)
func (*APIV1Service) GetInstanceAdmin ¶ added in v0.26.0
func (*APIV1Service) GetInstanceProfile ¶ added in v0.25.3
func (s *APIV1Service) GetInstanceProfile(ctx context.Context, _ *v1pb.GetInstanceProfileRequest) (*v1pb.InstanceProfile, error)
GetInstanceProfile returns the instance profile.
func (*APIV1Service) GetInstanceSetting ¶ added in v0.25.3
func (s *APIV1Service) GetInstanceSetting(ctx context.Context, request *v1pb.GetInstanceSettingRequest) (*v1pb.InstanceSetting, error)
func (*APIV1Service) GetMemo ¶
func (s *APIV1Service) GetMemo(ctx context.Context, request *v1pb.GetMemoRequest) (*v1pb.Memo, error)
func (*APIV1Service) GetMemoByShare ¶ added in v0.27.0
func (s *APIV1Service) GetMemoByShare(ctx context.Context, request *v1pb.GetMemoByShareRequest) (*v1pb.Memo, error)
GetMemoByShare resolves a share token to its memo. No authentication required. Returns NOT_FOUND for invalid or expired tokens (no information leakage).
func (*APIV1Service) GetShortcut ¶ added in v0.25.0
func (s *APIV1Service) GetShortcut(ctx context.Context, request *v1pb.GetShortcutRequest) (*v1pb.Shortcut, error)
func (*APIV1Service) GetUser ¶
func (s *APIV1Service) GetUser(ctx context.Context, request *v1pb.GetUserRequest) (*v1pb.User, error)
func (*APIV1Service) GetUserSetting ¶
func (s *APIV1Service) GetUserSetting(ctx context.Context, request *v1pb.GetUserSettingRequest) (*v1pb.UserSetting, error)
func (*APIV1Service) GetUserStats ¶ added in v0.23.1
func (s *APIV1Service) GetUserStats(ctx context.Context, request *v1pb.GetUserStatsRequest) (*v1pb.UserStats, error)
func (*APIV1Service) ListAllUserStats ¶ added in v0.23.1
func (s *APIV1Service) ListAllUserStats(ctx context.Context, _ *v1pb.ListAllUserStatsRequest) (*v1pb.ListAllUserStatsResponse, error)
func (*APIV1Service) ListAttachments ¶ added in v0.25.0
func (s *APIV1Service) ListAttachments(ctx context.Context, request *v1pb.ListAttachmentsRequest) (*v1pb.ListAttachmentsResponse, error)
func (*APIV1Service) ListIdentityProviders ¶
func (s *APIV1Service) ListIdentityProviders(ctx context.Context, _ *v1pb.ListIdentityProvidersRequest) (*v1pb.ListIdentityProvidersResponse, error)
func (*APIV1Service) ListMemoAttachments ¶ added in v0.25.0
func (s *APIV1Service) ListMemoAttachments(ctx context.Context, request *v1pb.ListMemoAttachmentsRequest) (*v1pb.ListMemoAttachmentsResponse, error)
func (*APIV1Service) ListMemoComments ¶
func (s *APIV1Service) ListMemoComments(ctx context.Context, request *v1pb.ListMemoCommentsRequest) (*v1pb.ListMemoCommentsResponse, error)
func (*APIV1Service) ListMemoReactions ¶
func (s *APIV1Service) ListMemoReactions(ctx context.Context, request *v1pb.ListMemoReactionsRequest) (*v1pb.ListMemoReactionsResponse, error)
func (*APIV1Service) ListMemoRelations ¶
func (s *APIV1Service) ListMemoRelations(ctx context.Context, request *v1pb.ListMemoRelationsRequest) (*v1pb.ListMemoRelationsResponse, error)
func (*APIV1Service) ListMemoShares ¶ added in v0.27.0
func (s *APIV1Service) ListMemoShares(ctx context.Context, request *v1pb.ListMemoSharesRequest) (*v1pb.ListMemoSharesResponse, error)
ListMemoShares lists all share links for a memo. Only the memo's creator or an admin may call this.
func (*APIV1Service) ListMemos ¶
func (s *APIV1Service) ListMemos(ctx context.Context, request *v1pb.ListMemosRequest) (*v1pb.ListMemosResponse, error)
func (*APIV1Service) ListPersonalAccessTokens ¶ added in v0.26.0
func (s *APIV1Service) ListPersonalAccessTokens(ctx context.Context, request *v1pb.ListPersonalAccessTokensRequest) (*v1pb.ListPersonalAccessTokensResponse, error)
ListPersonalAccessTokens retrieves all Personal Access Tokens (PATs) for a user.
Personal Access Tokens are used for: - Mobile app authentication - CLI tool authentication - API client authentication - Any programmatic access requiring Bearer token auth
Security: - Only the token owner can list their tokens - Returns token metadata only (not the actual token value) - Invalid or expired tokens are filtered out
Authentication: Required (session cookie or access token) Authorization: User can only list their own tokens.
func (*APIV1Service) ListShortcuts ¶ added in v0.24.0
func (s *APIV1Service) ListShortcuts(ctx context.Context, request *v1pb.ListShortcutsRequest) (*v1pb.ListShortcutsResponse, error)
func (*APIV1Service) ListUserNotifications ¶ added in v0.25.3
func (s *APIV1Service) ListUserNotifications(ctx context.Context, request *v1pb.ListUserNotificationsRequest) (*v1pb.ListUserNotificationsResponse, error)
ListUserNotifications lists all notifications for a user. Notifications are backed by the inbox storage layer and represent activities that require user attention (e.g., memo comments).
func (*APIV1Service) ListUserSettings ¶ added in v0.25.1
func (s *APIV1Service) ListUserSettings(ctx context.Context, request *v1pb.ListUserSettingsRequest) (*v1pb.ListUserSettingsResponse, error)
func (*APIV1Service) ListUserWebhooks ¶ added in v0.25.1
func (s *APIV1Service) ListUserWebhooks(ctx context.Context, request *v1pb.ListUserWebhooksRequest) (*v1pb.ListUserWebhooksResponse, error)
func (*APIV1Service) ListUsers ¶
func (s *APIV1Service) ListUsers(ctx context.Context, request *v1pb.ListUsersRequest) (*v1pb.ListUsersResponse, error)
func (*APIV1Service) RefreshToken ¶ added in v0.26.0
func (s *APIV1Service) RefreshToken(ctx context.Context, _ *v1pb.RefreshTokenRequest) (*v1pb.RefreshTokenResponse, error)
RefreshToken exchanges a valid refresh token for a new access token.
This endpoint implements refresh token rotation with sliding window sessions: 1. Extracts the refresh token from the HttpOnly cookie (memos_refresh) 2. Validates the refresh token against the database (checking expiry and revocation) 3. Rotates the refresh token: generates a new one with fresh 30-day expiry 4. Generates a new short-lived access token (15 minutes) 5. Sets the new refresh token as HttpOnly cookie 6. Returns the new access token and its expiry time
Token rotation provides: - Sliding window sessions: active users stay logged in indefinitely - Better security: stolen refresh tokens become invalid after legitimate refresh
Authentication: Requires valid refresh token in cookie (public endpoint) Returns: New access token and expiry timestamp.
func (*APIV1Service) RegisterGateway ¶
RegisterGateway registers the gRPC-Gateway and Connect handlers with the given Echo instance.
func (*APIV1Service) SetMemoAttachments ¶ added in v0.25.0
func (s *APIV1Service) SetMemoAttachments(ctx context.Context, request *v1pb.SetMemoAttachmentsRequest) (*emptypb.Empty, error)
func (*APIV1Service) SetMemoRelations ¶
func (s *APIV1Service) SetMemoRelations(ctx context.Context, request *v1pb.SetMemoRelationsRequest) (*emptypb.Empty, error)
func (*APIV1Service) SignIn ¶
func (s *APIV1Service) SignIn(ctx context.Context, request *v1pb.SignInRequest) (*v1pb.SignInResponse, error)
SignIn authenticates a user with credentials and returns tokens. On success, returns an access token and sets a refresh token cookie.
Supports two authentication methods: 1. Password-based authentication (username + password). 2. SSO authentication (OAuth2 authorization code).
Authentication: Not required (public endpoint). Returns: User info, access token, and token expiry.
func (*APIV1Service) SignOut ¶
func (s *APIV1Service) SignOut(ctx context.Context, _ *v1pb.SignOutRequest) (*emptypb.Empty, error)
SignOut terminates the user's authentication. Revokes the refresh token and clears the authentication cookie.
Authentication: Required (access token). Returns: Empty response on success.
func (*APIV1Service) Transcribe ¶ added in v0.27.0
func (s *APIV1Service) Transcribe(ctx context.Context, request *v1pb.TranscribeRequest) (*v1pb.TranscribeResponse, error)
Transcribe transcribes an audio file using an instance AI provider.
func (*APIV1Service) UpdateAttachment ¶ added in v0.25.0
func (s *APIV1Service) UpdateAttachment(ctx context.Context, request *v1pb.UpdateAttachmentRequest) (*v1pb.Attachment, error)
func (*APIV1Service) UpdateIdentityProvider ¶
func (s *APIV1Service) UpdateIdentityProvider(ctx context.Context, request *v1pb.UpdateIdentityProviderRequest) (*v1pb.IdentityProvider, error)
func (*APIV1Service) UpdateInstanceSetting ¶ added in v0.25.3
func (s *APIV1Service) UpdateInstanceSetting(ctx context.Context, request *v1pb.UpdateInstanceSettingRequest) (*v1pb.InstanceSetting, error)
func (*APIV1Service) UpdateMemo ¶
func (s *APIV1Service) UpdateMemo(ctx context.Context, request *v1pb.UpdateMemoRequest) (*v1pb.Memo, error)
func (*APIV1Service) UpdateShortcut ¶ added in v0.24.0
func (s *APIV1Service) UpdateShortcut(ctx context.Context, request *v1pb.UpdateShortcutRequest) (*v1pb.Shortcut, error)
func (*APIV1Service) UpdateUser ¶
func (s *APIV1Service) UpdateUser(ctx context.Context, request *v1pb.UpdateUserRequest) (*v1pb.User, error)
func (*APIV1Service) UpdateUserNotification ¶ added in v0.25.3
func (s *APIV1Service) UpdateUserNotification(ctx context.Context, request *v1pb.UpdateUserNotificationRequest) (*v1pb.UserNotification, error)
UpdateUserNotification updates a notification's status (e.g., marking as read/archived). Only the notification owner can update their notifications.
func (*APIV1Service) UpdateUserSetting ¶
func (s *APIV1Service) UpdateUserSetting(ctx context.Context, request *v1pb.UpdateUserSettingRequest) (*v1pb.UserSetting, error)
func (*APIV1Service) UpdateUserWebhook ¶ added in v0.25.1
func (s *APIV1Service) UpdateUserWebhook(ctx context.Context, request *v1pb.UpdateUserWebhookRequest) (*v1pb.UserWebhook, error)
func (*APIV1Service) UpsertMemoReaction ¶
func (s *APIV1Service) UpsertMemoReaction(ctx context.Context, request *v1pb.UpsertMemoReactionRequest) (*v1pb.Reaction, error)
type AuthInterceptor ¶ added in v0.26.0
type AuthInterceptor struct {
// contains filtered or unexported fields
}
AuthInterceptor handles authentication for Connect handlers.
It enforces authentication for all endpoints except those listed in PublicMethods. Role-based authorization (admin checks) remains in the service layer.
func NewAuthInterceptor ¶ added in v0.26.0
func NewAuthInterceptor(store *store.Store, secret string) *AuthInterceptor
NewAuthInterceptor creates a new auth interceptor.
func (*AuthInterceptor) WrapStreamingClient ¶ added in v0.26.0
func (*AuthInterceptor) WrapStreamingClient(next connect.StreamingClientFunc) connect.StreamingClientFunc
func (*AuthInterceptor) WrapStreamingHandler ¶ added in v0.26.0
func (*AuthInterceptor) WrapStreamingHandler(next connect.StreamingHandlerFunc) connect.StreamingHandlerFunc
type ConnectServiceHandler ¶ added in v0.26.0
type ConnectServiceHandler struct {
*APIV1Service
}
ConnectServiceHandler wraps APIV1Service to implement Connect handler interfaces. It adapts the existing gRPC service implementations to work with Connect's request/response wrapper types.
This wrapper pattern allows us to: - Reuse existing gRPC service implementations - Support both native gRPC and Connect protocols - Maintain a single source of truth for business logic.
func NewConnectServiceHandler ¶ added in v0.26.0
func NewConnectServiceHandler(svc *APIV1Service) *ConnectServiceHandler
NewConnectServiceHandler creates a new Connect service handler.
func (*ConnectServiceHandler) BatchDeleteAttachments ¶ added in v0.27.0
func (*ConnectServiceHandler) BatchGetUsers ¶ added in v0.27.0
func (s *ConnectServiceHandler) BatchGetUsers(ctx context.Context, req *connect.Request[v1pb.BatchGetUsersRequest]) (*connect.Response[v1pb.BatchGetUsersResponse], error)
func (*ConnectServiceHandler) CreateAttachment ¶ added in v0.26.0
func (s *ConnectServiceHandler) CreateAttachment(ctx context.Context, req *connect.Request[v1pb.CreateAttachmentRequest]) (*connect.Response[v1pb.Attachment], error)
func (*ConnectServiceHandler) CreateIdentityProvider ¶ added in v0.26.0
func (s *ConnectServiceHandler) CreateIdentityProvider(ctx context.Context, req *connect.Request[v1pb.CreateIdentityProviderRequest]) (*connect.Response[v1pb.IdentityProvider], error)
func (*ConnectServiceHandler) CreateMemo ¶ added in v0.26.0
func (*ConnectServiceHandler) CreateMemoComment ¶ added in v0.26.0
func (*ConnectServiceHandler) CreateMemoShare ¶ added in v0.27.0
func (*ConnectServiceHandler) CreatePersonalAccessToken ¶ added in v0.26.0
func (s *ConnectServiceHandler) CreatePersonalAccessToken(ctx context.Context, req *connect.Request[v1pb.CreatePersonalAccessTokenRequest]) (*connect.Response[v1pb.CreatePersonalAccessTokenResponse], error)
func (*ConnectServiceHandler) CreateShortcut ¶ added in v0.26.0
func (*ConnectServiceHandler) CreateUser ¶ added in v0.26.0
func (*ConnectServiceHandler) CreateUserWebhook ¶ added in v0.26.0
func (s *ConnectServiceHandler) CreateUserWebhook(ctx context.Context, req *connect.Request[v1pb.CreateUserWebhookRequest]) (*connect.Response[v1pb.UserWebhook], error)
func (*ConnectServiceHandler) DeleteAttachment ¶ added in v0.26.0
func (*ConnectServiceHandler) DeleteIdentityProvider ¶ added in v0.26.0
func (*ConnectServiceHandler) DeleteMemo ¶ added in v0.26.0
func (*ConnectServiceHandler) DeleteMemoReaction ¶ added in v0.26.0
func (*ConnectServiceHandler) DeleteMemoShare ¶ added in v0.27.0
func (*ConnectServiceHandler) DeletePersonalAccessToken ¶ added in v0.26.0
func (*ConnectServiceHandler) DeleteShortcut ¶ added in v0.26.0
func (*ConnectServiceHandler) DeleteUser ¶ added in v0.26.0
func (*ConnectServiceHandler) DeleteUserNotification ¶ added in v0.26.0
func (*ConnectServiceHandler) DeleteUserWebhook ¶ added in v0.26.0
func (*ConnectServiceHandler) GetAttachment ¶ added in v0.26.0
func (s *ConnectServiceHandler) GetAttachment(ctx context.Context, req *connect.Request[v1pb.GetAttachmentRequest]) (*connect.Response[v1pb.Attachment], error)
func (*ConnectServiceHandler) GetCurrentUser ¶ added in v0.26.0
func (s *ConnectServiceHandler) GetCurrentUser(ctx context.Context, req *connect.Request[v1pb.GetCurrentUserRequest]) (*connect.Response[v1pb.GetCurrentUserResponse], error)
func (*ConnectServiceHandler) GetIdentityProvider ¶ added in v0.26.0
func (s *ConnectServiceHandler) GetIdentityProvider(ctx context.Context, req *connect.Request[v1pb.GetIdentityProviderRequest]) (*connect.Response[v1pb.IdentityProvider], error)
func (*ConnectServiceHandler) GetInstanceProfile ¶ added in v0.26.0
func (s *ConnectServiceHandler) GetInstanceProfile(ctx context.Context, req *connect.Request[v1pb.GetInstanceProfileRequest]) (*connect.Response[v1pb.InstanceProfile], error)
func (*ConnectServiceHandler) GetInstanceSetting ¶ added in v0.26.0
func (s *ConnectServiceHandler) GetInstanceSetting(ctx context.Context, req *connect.Request[v1pb.GetInstanceSettingRequest]) (*connect.Response[v1pb.InstanceSetting], error)
func (*ConnectServiceHandler) GetMemoByShare ¶ added in v0.27.0
func (*ConnectServiceHandler) GetShortcut ¶ added in v0.26.0
func (*ConnectServiceHandler) GetUserSetting ¶ added in v0.26.0
func (s *ConnectServiceHandler) GetUserSetting(ctx context.Context, req *connect.Request[v1pb.GetUserSettingRequest]) (*connect.Response[v1pb.UserSetting], error)
func (*ConnectServiceHandler) GetUserStats ¶ added in v0.26.0
func (*ConnectServiceHandler) ListAllUserStats ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListAllUserStats(ctx context.Context, req *connect.Request[v1pb.ListAllUserStatsRequest]) (*connect.Response[v1pb.ListAllUserStatsResponse], error)
func (*ConnectServiceHandler) ListAttachments ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListAttachments(ctx context.Context, req *connect.Request[v1pb.ListAttachmentsRequest]) (*connect.Response[v1pb.ListAttachmentsResponse], error)
func (*ConnectServiceHandler) ListIdentityProviders ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListIdentityProviders(ctx context.Context, req *connect.Request[v1pb.ListIdentityProvidersRequest]) (*connect.Response[v1pb.ListIdentityProvidersResponse], error)
func (*ConnectServiceHandler) ListMemoAttachments ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListMemoAttachments(ctx context.Context, req *connect.Request[v1pb.ListMemoAttachmentsRequest]) (*connect.Response[v1pb.ListMemoAttachmentsResponse], error)
func (*ConnectServiceHandler) ListMemoComments ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListMemoComments(ctx context.Context, req *connect.Request[v1pb.ListMemoCommentsRequest]) (*connect.Response[v1pb.ListMemoCommentsResponse], error)
func (*ConnectServiceHandler) ListMemoReactions ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListMemoReactions(ctx context.Context, req *connect.Request[v1pb.ListMemoReactionsRequest]) (*connect.Response[v1pb.ListMemoReactionsResponse], error)
func (*ConnectServiceHandler) ListMemoRelations ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListMemoRelations(ctx context.Context, req *connect.Request[v1pb.ListMemoRelationsRequest]) (*connect.Response[v1pb.ListMemoRelationsResponse], error)
func (*ConnectServiceHandler) ListMemoShares ¶ added in v0.27.0
func (s *ConnectServiceHandler) ListMemoShares(ctx context.Context, req *connect.Request[v1pb.ListMemoSharesRequest]) (*connect.Response[v1pb.ListMemoSharesResponse], error)
func (*ConnectServiceHandler) ListMemos ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListMemos(ctx context.Context, req *connect.Request[v1pb.ListMemosRequest]) (*connect.Response[v1pb.ListMemosResponse], error)
func (*ConnectServiceHandler) ListPersonalAccessTokens ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListPersonalAccessTokens(ctx context.Context, req *connect.Request[v1pb.ListPersonalAccessTokensRequest]) (*connect.Response[v1pb.ListPersonalAccessTokensResponse], error)
func (*ConnectServiceHandler) ListShortcuts ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListShortcuts(ctx context.Context, req *connect.Request[v1pb.ListShortcutsRequest]) (*connect.Response[v1pb.ListShortcutsResponse], error)
func (*ConnectServiceHandler) ListUserNotifications ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListUserNotifications(ctx context.Context, req *connect.Request[v1pb.ListUserNotificationsRequest]) (*connect.Response[v1pb.ListUserNotificationsResponse], error)
func (*ConnectServiceHandler) ListUserSettings ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListUserSettings(ctx context.Context, req *connect.Request[v1pb.ListUserSettingsRequest]) (*connect.Response[v1pb.ListUserSettingsResponse], error)
func (*ConnectServiceHandler) ListUserWebhooks ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListUserWebhooks(ctx context.Context, req *connect.Request[v1pb.ListUserWebhooksRequest]) (*connect.Response[v1pb.ListUserWebhooksResponse], error)
func (*ConnectServiceHandler) ListUsers ¶ added in v0.26.0
func (s *ConnectServiceHandler) ListUsers(ctx context.Context, req *connect.Request[v1pb.ListUsersRequest]) (*connect.Response[v1pb.ListUsersResponse], error)
func (*ConnectServiceHandler) RefreshToken ¶ added in v0.26.0
func (s *ConnectServiceHandler) RefreshToken(ctx context.Context, req *connect.Request[v1pb.RefreshTokenRequest]) (*connect.Response[v1pb.RefreshTokenResponse], error)
func (*ConnectServiceHandler) RegisterConnectHandlers ¶ added in v0.26.0
func (s *ConnectServiceHandler) RegisterConnectHandlers(mux *http.ServeMux, opts ...connect.HandlerOption)
RegisterConnectHandlers registers all Connect service handlers on the given mux.
func (*ConnectServiceHandler) SetMemoAttachments ¶ added in v0.26.0
func (*ConnectServiceHandler) SetMemoRelations ¶ added in v0.26.0
func (*ConnectServiceHandler) SignIn ¶ added in v0.26.0
func (s *ConnectServiceHandler) SignIn(ctx context.Context, req *connect.Request[v1pb.SignInRequest]) (*connect.Response[v1pb.SignInResponse], error)
func (*ConnectServiceHandler) Transcribe ¶ added in v0.27.0
func (s *ConnectServiceHandler) Transcribe(ctx context.Context, req *connect.Request[v1pb.TranscribeRequest]) (*connect.Response[v1pb.TranscribeResponse], error)
func (*ConnectServiceHandler) UpdateAttachment ¶ added in v0.26.0
func (s *ConnectServiceHandler) UpdateAttachment(ctx context.Context, req *connect.Request[v1pb.UpdateAttachmentRequest]) (*connect.Response[v1pb.Attachment], error)
func (*ConnectServiceHandler) UpdateIdentityProvider ¶ added in v0.26.0
func (s *ConnectServiceHandler) UpdateIdentityProvider(ctx context.Context, req *connect.Request[v1pb.UpdateIdentityProviderRequest]) (*connect.Response[v1pb.IdentityProvider], error)
func (*ConnectServiceHandler) UpdateInstanceSetting ¶ added in v0.26.0
func (s *ConnectServiceHandler) UpdateInstanceSetting(ctx context.Context, req *connect.Request[v1pb.UpdateInstanceSettingRequest]) (*connect.Response[v1pb.InstanceSetting], error)
func (*ConnectServiceHandler) UpdateMemo ¶ added in v0.26.0
func (*ConnectServiceHandler) UpdateShortcut ¶ added in v0.26.0
func (*ConnectServiceHandler) UpdateUser ¶ added in v0.26.0
func (*ConnectServiceHandler) UpdateUserNotification ¶ added in v0.26.0
func (s *ConnectServiceHandler) UpdateUserNotification(ctx context.Context, req *connect.Request[v1pb.UpdateUserNotificationRequest]) (*connect.Response[v1pb.UserNotification], error)
func (*ConnectServiceHandler) UpdateUserSetting ¶ added in v0.26.0
func (s *ConnectServiceHandler) UpdateUserSetting(ctx context.Context, req *connect.Request[v1pb.UpdateUserSettingRequest]) (*connect.Response[v1pb.UserSetting], error)
func (*ConnectServiceHandler) UpdateUserWebhook ¶ added in v0.26.0
func (s *ConnectServiceHandler) UpdateUserWebhook(ctx context.Context, req *connect.Request[v1pb.UpdateUserWebhookRequest]) (*connect.Response[v1pb.UserWebhook], error)
func (*ConnectServiceHandler) UpsertMemoReaction ¶ added in v0.26.0
type HeaderCarrier ¶ added in v0.26.0
type HeaderCarrier struct {
// contains filtered or unexported fields
}
HeaderCarrier stores headers that need to be set in the response.
Problem: The codebase supports two protocols simultaneously:
- Native gRPC: Uses grpc.SetHeader() to set response headers
- Connect-RPC: Uses connect.Response.Header().Set() to set response headers
Solution: HeaderCarrier provides a protocol-agnostic way to set headers.
- Service methods call SetResponseHeader() regardless of protocol
- For gRPC requests: SetResponseHeader uses grpc.SetHeader directly
- For Connect requests: SetResponseHeader stores headers in HeaderCarrier
- Connect wrappers extract headers from HeaderCarrier and apply to response
This allows service methods to work with both protocols without knowing which one is being used.
func GetHeaderCarrier ¶ added in v0.26.0
func GetHeaderCarrier(ctx context.Context) *HeaderCarrier
GetHeaderCarrier retrieves the header carrier from the context. Returns nil if no carrier is present.
func (*HeaderCarrier) All ¶ added in v0.26.0
func (h *HeaderCarrier) All() map[string]string
All returns all headers.
func (*HeaderCarrier) Get ¶ added in v0.26.0
func (h *HeaderCarrier) Get(key string) string
Get retrieves a header from the carrier.
func (*HeaderCarrier) Set ¶ added in v0.26.0
func (h *HeaderCarrier) Set(key, value string)
Set adds a header to the carrier.
type LoggingInterceptor ¶ added in v0.26.0
type LoggingInterceptor struct {
// contains filtered or unexported fields
}
LoggingInterceptor logs Connect RPC requests with appropriate log levels.
Log levels: - INFO: Successful requests and expected client errors (not found, permission denied, etc.) - ERROR: Server errors (internal, unavailable, etc.)
func NewLoggingInterceptor ¶ added in v0.26.0
func NewLoggingInterceptor(logStacktrace bool) *LoggingInterceptor
NewLoggingInterceptor creates a new logging interceptor.
func (*LoggingInterceptor) WrapStreamingClient ¶ added in v0.26.0
func (*LoggingInterceptor) WrapStreamingClient(next connect.StreamingClientFunc) connect.StreamingClientFunc
func (*LoggingInterceptor) WrapStreamingHandler ¶ added in v0.26.0
func (*LoggingInterceptor) WrapStreamingHandler(next connect.StreamingHandlerFunc) connect.StreamingHandlerFunc
type MetadataInterceptor ¶ added in v0.26.0
type MetadataInterceptor struct{}
MetadataInterceptor converts Connect HTTP headers to gRPC metadata.
This ensures service methods can use metadata.FromIncomingContext() to access headers like User-Agent, X-Forwarded-For, etc., regardless of whether the request came via Connect RPC or gRPC-Gateway.
func NewMetadataInterceptor ¶ added in v0.26.0
func NewMetadataInterceptor() *MetadataInterceptor
NewMetadataInterceptor creates a new metadata interceptor.
func (*MetadataInterceptor) WrapStreamingClient ¶ added in v0.26.0
func (*MetadataInterceptor) WrapStreamingClient(next connect.StreamingClientFunc) connect.StreamingClientFunc
func (*MetadataInterceptor) WrapStreamingHandler ¶ added in v0.26.0
func (*MetadataInterceptor) WrapStreamingHandler(next connect.StreamingHandlerFunc) connect.StreamingHandlerFunc
type RecoveryInterceptor ¶ added in v0.26.0
type RecoveryInterceptor struct {
// contains filtered or unexported fields
}
RecoveryInterceptor recovers from panics in Connect handlers and returns an internal error.
func NewRecoveryInterceptor ¶ added in v0.26.0
func NewRecoveryInterceptor(logStacktrace bool) *RecoveryInterceptor
NewRecoveryInterceptor creates a new recovery interceptor.
func (*RecoveryInterceptor) WrapStreamingClient ¶ added in v0.26.0
func (*RecoveryInterceptor) WrapStreamingClient(next connect.StreamingClientFunc) connect.StreamingClientFunc
func (*RecoveryInterceptor) WrapStreamingHandler ¶ added in v0.26.0
func (*RecoveryInterceptor) WrapStreamingHandler(next connect.StreamingHandlerFunc) connect.StreamingHandlerFunc
type SSEClient ¶ added in v0.27.0
type SSEClient struct {
// contains filtered or unexported fields
}
SSEClient represents a single SSE connection.
type SSEEvent ¶ added in v0.27.0
type SSEEvent struct {
Type SSEEventType `json:"type"`
// Name is the affected resource name (e.g., "memos/xxxx").
// For reaction events, this is the memo resource name that the reaction belongs to.
Name string `json:"name"`
// Parent is the parent memo resource name when the affected resource is a comment.
Parent string `json:"parent,omitempty"`
// Visibility and CreatorID are used only for server-side delivery filtering.
Visibility store.Visibility `json:"-"`
CreatorID int32 `json:"-"`
}
SSEEvent represents a change event sent to SSE clients.
type SSEEventType ¶ added in v0.27.0
type SSEEventType string
SSEEventType represents the type of change event.
const ( SSEEventMemoCreated SSEEventType = "memo.created" SSEEventMemoUpdated SSEEventType = "memo.updated" SSEEventMemoDeleted SSEEventType = "memo.deleted" SSEEventMemoCommentCreated SSEEventType = "memo.comment.created" SSEEventReactionUpserted SSEEventType = "reaction.upserted" SSEEventReactionDeleted SSEEventType = "reaction.deleted" )
type SSEHub ¶ added in v0.27.0
type SSEHub struct {
// contains filtered or unexported fields
}
SSEHub manages SSE client connections and broadcasts events. It is safe for concurrent use.
func (*SSEHub) Broadcast ¶ added in v0.27.0
Broadcast sends an event to all connected clients. Slow clients that have a full buffer will have the event dropped to avoid blocking the broadcaster.
func (*SSEHub) Close ¶ added in v0.27.0
func (h *SSEHub) Close()
Close disconnects all subscribed SSE clients.
func (*SSEHub) Subscribe ¶ added in v0.27.0
Subscribe registers a new client and returns it. The caller must call Unsubscribe when done.
func (*SSEHub) Unsubscribe ¶ added in v0.27.0
Unsubscribe removes a client and closes its channel.
Source Files
¶
- acl_config.go
- ai_service.go
- attachment_motion.go
- attachment_service.go
- auth_service.go
- common.go
- connect_handler.go
- connect_interceptors.go
- connect_services.go
- header_carrier.go
- health_service.go
- idp_service.go
- instance_service.go
- memo_attachment_service.go
- memo_batch_helpers.go
- memo_mention_helpers.go
- memo_relation_service.go
- memo_service.go
- memo_service_converter.go
- memo_service_filter.go
- memo_share_service.go
- memo_update_helpers.go
- reaction_service.go
- resource_name.go
- shortcut_service.go
- sse_event_helpers.go
- sse_handler.go
- sse_hub.go
- user_resource_name.go
- user_service.go
- user_service_stats.go
- v1.go