server

package
v0.0.0-...-af5bed0 Latest Latest
Warning

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

Go to latest
Published: May 26, 2026 License: AGPL-3.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Argon2Memory    = 64 * 1024
	Argon2Time      = 2
	Argon2Threads   = 4
	Argon2KeyLength = 32
)

Variables

View Source
var JSONResponseOK = JSONResponse{Status: "ok"}

Functions

func AccountIDFromCtx

func AccountIDFromCtx(ctx context.Context) (uuid.UUID, bool)

func CheckPasswordHash

func CheckPasswordHash(password []byte, passwordHash string) (bool, error)

func CtxWithAccountID

func CtxWithAccountID(parent context.Context, accountID uuid.UUID) context.Context

func CtxWithID

func CtxWithID(parent context.Context, id uuid.UUID) context.Context

func CtxWithSessionID

func CtxWithSessionID(parent context.Context, accountID uuid.UUID) context.Context

func IDFromCtx

func IDFromCtx(ctx context.Context) (uuid.UUID, bool)

func JSONError

func JSONError(rw http.ResponseWriter, r *http.Request, msg string, code int)

func NewPasswordHash

func NewPasswordHash(password, salt []byte) string

func RequireRequestBody

func RequireRequestBody(next http.Handler) http.Handler

func SessionIDFromCtx

func SessionIDFromCtx(ctx context.Context) (uuid.UUID, bool)

func WithUUIDFromURL

func WithUUIDFromURL(next http.Handler) http.Handler

Types

type AccountDeleteResponse

type AccountDeleteResponse struct {
	JSONResponse
}

type AccountGetResponse

type AccountGetResponse struct {
	JSONResponse
	ID         uuid.UUID `json:"id"`
	InstanceID uuid.UUID `json:"instance_id"`
	CreatedAt  time.Time `json:"created_at"`
}

type AccountPostResponse

type AccountPostResponse struct {
	JSONResponse
}

type AccountPutRequest

type AccountPutRequest struct {
	Username *string `json:"username"`
	Email    *string `json:"email"`
	Password string  `json:"password"`
}

type AccountPutResponse

type AccountPutResponse struct {
	JSONResponse
	ID uuid.UUID `json:"id"`
}

type Configuration

type Configuration struct {
	Address *netip.AddrPort `toml:"address"`

	Host string `toml:"host"`

	Sessions struct {
		PublicKey  string `toml:"public_key"`
		PrivateKey string `toml:"private_key"`
	} `toml:"sessions"`

	Database struct {
		Type string `toml:"type"`
		DSN  string `toml:"dsn"`
	} `toml:"database"`

	DisableWebUI bool `toml:"disable_web_ui"`
}

type EmojiDeleteResponse

type EmojiDeleteResponse struct {
	JSONResponse
}

type EmojiGetResponse

type EmojiGetResponse struct {
	JSONResponse
}

type EmojiPostResponse

type EmojiPostResponse struct {
	JSONResponse
}

type EmojiPutRequest

type EmojiPutRequest struct{}

type EmojiPutResponse

type EmojiPutResponse struct {
	JSONResponse
}

type FileDeleteResponse

type FileDeleteResponse struct {
	JSONResponse
}

type FileGetResponse

type FileGetResponse struct {
	JSONResponse
}

type FilePostResponse

type FilePostResponse struct {
	JSONResponse
}

type FilePutRequest

type FilePutRequest struct{}

type FilePutResponse

type FilePutResponse struct {
	JSONResponse
}

type FilterDeleteResponse

type FilterDeleteResponse struct {
	JSONResponse
}

type FilterGetResponse

type FilterGetResponse struct {
	JSONResponse
}

type FilterPostResponse

type FilterPostResponse struct {
	JSONResponse
}

type FilterPutRequest

type FilterPutRequest struct{}

type FilterPutResponse

type FilterPutResponse struct {
	JSONResponse
}

type GroupDeleteResponse

type GroupDeleteResponse struct {
	JSONResponse
}

type GroupGetResponse

type GroupGetResponse struct {
	JSONResponse
}

type GroupPostResponse

type GroupPostResponse struct {
	JSONResponse
}

type GroupPutRequest

type GroupPutRequest struct{}

type GroupPutResponse

type GroupPutResponse struct {
	JSONResponse
}

type InstanceDeleteResponse

type InstanceDeleteResponse struct {
	JSONResponse
}

type InstanceGetResponse

type InstanceGetResponse struct {
	JSONResponse
}

type InstancePostResponse

type InstancePostResponse struct {
	JSONResponse
}

type InstancePutRequest

type InstancePutRequest struct{}

type InstancePutResponse

type InstancePutResponse struct {
	JSONResponse
}

type JSONResponse

type JSONResponse struct {
	Status  string `json:"status"`
	Message string `json:"message,omitzero"`
}

type PollDeleteResponse

type PollDeleteResponse struct {
	JSONResponse
}

type PollGetResponse

type PollGetResponse struct {
	JSONResponse
}

type PollPostResponse

type PollPostResponse struct {
	JSONResponse
}

type PollPutRequest

type PollPutRequest struct{}

type PollPutResponse

type PollPutResponse struct {
	JSONResponse
}

type PostDeleteResponse

type PostDeleteResponse struct {
	JSONResponse
}

type PostGetResponse

type PostGetResponse struct {
	JSONResponse
	ID        uuid.UUID  `json:"id"`
	ProfileID uuid.UUID  `json:"profile_id"`
	ReplyToID *uuid.UUID `json:"reply_to_id,omitempty"`
	Subject   *string    `json:"subject,omitempty"`
	Content   string     `json:"content"`
	Tags      []string   `json:"tags,omitempty"`

	PollID   *uuid.UUID  `json:"poll_id,omitempty"`
	GroupIDs []uuid.UUID `json:"group_ids,omitempty"`
	FileIDs  []uuid.UUID `json:"file_ids,omitempty"`
}

type PostPostResponse

type PostPostResponse struct {
	JSONResponse
}

type PostPutRequest

type PostPutRequest struct {
	ProfileID uuid.UUID  `json:"profile_id"`
	ReplyToID *uuid.UUID `json:"reply_to_id"`
	Subject   *string    `json:"subject"`
	Content   string     `json:"content"`
	Tags      []string   `json:"tags"`

	PollID   *uuid.UUID  `json:"poll_id"`
	GroupIDs []uuid.UUID `json:"group_ids"`
	FileIDs  []uuid.UUID `json:"file_ids"`
}

type PostPutResponse

type PostPutResponse struct {
	JSONResponse
	ID      uuid.UUID `json:"id"`
	Version uint      `json:"version"`
}

type ProfileDeleteResponse

type ProfileDeleteResponse struct {
	JSONResponse
}

type ProfileGetResponse

type ProfileGetResponse struct {
	JSONResponse
	ID               uuid.UUID     `json:"id"`
	AccountID        uuid.UUID     `json:"account_id"`
	Name             string        `json:"name"`
	DisplayName      *string       `json:"display_name"`
	Description      *string       `json:"description"`
	AvatarFileID     *uuid.UUID    `json:"avatar_file_id"`
	HeaderFileID     *uuid.UUID    `json:"header_file_id"`
	BackgroundFileID *uuid.UUID    `json:"background_file_id"`
	AccentColor      *schema.Color `json:"accent_color"`
	CreatedAt        time.Time     `json:"created_at"`
}

type ProfilePostResponse

type ProfilePostResponse struct {
	JSONResponse
}

type ProfilePutRequest

type ProfilePutRequest struct {
	Name        string  `json:"name"`
	DisplayName *string `json:"display_name"`
	Description *string `json:"description"`
}

type ProfilePutResponse

type ProfilePutResponse struct {
	JSONResponse
	ID        uuid.UUID `json:"id"`
	AccountID uuid.UUID `json:"account_id"`
}

type ReportDeleteResponse

type ReportDeleteResponse struct {
	JSONResponse
}

type ReportGetResponse

type ReportGetResponse struct {
	JSONResponse
}

type ReportPostResponse

type ReportPostResponse struct {
	JSONResponse
}

type ReportPutRequest

type ReportPutRequest struct{}

type ReportPutResponse

type ReportPutResponse struct {
	JSONResponse
}

type Server

type Server struct {
	Config *Configuration
	// contains filtered or unexported fields
}

func NewServerFromFile

func NewServerFromFile(path string) (*Server, error)

func (*Server) APIv1Router

func (server *Server) APIv1Router(r chi.Router)

func (*Server) AccountDelete

func (server *Server) AccountDelete(rw http.ResponseWriter, r *http.Request)

func (*Server) AccountGet

func (server *Server) AccountGet(rw http.ResponseWriter, r *http.Request)

func (*Server) AccountHead

func (server *Server) AccountHead(rw http.ResponseWriter, r *http.Request)

func (*Server) AccountPost

func (server *Server) AccountPost(rw http.ResponseWriter, r *http.Request)

func (*Server) AccountPut

func (server *Server) AccountPut(rw http.ResponseWriter, r *http.Request)

func (*Server) AutoCleanupExpiredSessions

func (server *Server) AutoCleanupExpiredSessions(every time.Duration)

func (*Server) Close

func (server *Server) Close()

func (*Server) Conn

func (server *Server) Conn(ctx context.Context) (conn *pgx.Conn, release func(), err error)

func (*Server) EmojiDelete

func (server *Server) EmojiDelete(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) EmojiGet

func (server *Server) EmojiGet(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) EmojiHead

func (server *Server) EmojiHead(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) EmojiPost

func (server *Server) EmojiPost(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) EmojiPut

func (server *Server) EmojiPut(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) FileDelete

func (server *Server) FileDelete(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) FileGet

func (server *Server) FileGet(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) FileHead

func (server *Server) FileHead(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) FilePost

func (server *Server) FilePost(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) FilePut

func (server *Server) FilePut(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) FilterDelete

func (server *Server) FilterDelete(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) FilterGet

func (server *Server) FilterGet(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) FilterHead

func (server *Server) FilterHead(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) FilterPost

func (server *Server) FilterPost(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) FilterPut

func (server *Server) FilterPut(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) GroupDelete

func (server *Server) GroupDelete(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) GroupGet

func (server *Server) GroupGet(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) GroupHead

func (server *Server) GroupHead(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) GroupPost

func (server *Server) GroupPost(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) GroupPut

func (server *Server) GroupPut(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) InstanceDelete

func (server *Server) InstanceDelete(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) InstanceGet

func (server *Server) InstanceGet(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) InstanceHead

func (server *Server) InstanceHead(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) InstancePost

func (server *Server) InstancePost(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) InstancePut

func (server *Server) InstancePut(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) PollDelete

func (server *Server) PollDelete(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) PollGet

func (server *Server) PollGet(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) PollHead

func (server *Server) PollHead(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) PollPost

func (server *Server) PollPost(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) PollPut

func (server *Server) PollPut(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) PostDelete

func (server *Server) PostDelete(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) PostGet

func (server *Server) PostGet(rw http.ResponseWriter, r *http.Request)

func (*Server) PostHead

func (server *Server) PostHead(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) PostPost

func (server *Server) PostPost(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) PostPut

func (server *Server) PostPut(rw http.ResponseWriter, r *http.Request)

func (*Server) ProfileDelete

func (server *Server) ProfileDelete(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) ProfileGet

func (server *Server) ProfileGet(rw http.ResponseWriter, r *http.Request)

func (*Server) ProfileHead

func (server *Server) ProfileHead(rw http.ResponseWriter, r *http.Request)

func (*Server) ProfilePost

func (server *Server) ProfilePost(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) ProfilePut

func (server *Server) ProfilePut(rw http.ResponseWriter, r *http.Request)

func (*Server) ReportDelete

func (server *Server) ReportDelete(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) ReportGet

func (server *Server) ReportGet(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) ReportHead

func (server *Server) ReportHead(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) ReportPost

func (server *Server) ReportPost(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) ReportPut

func (server *Server) ReportPut(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) SessionDelete

func (server *Server) SessionDelete(rw http.ResponseWriter, r *http.Request)

func (*Server) SessionPut

func (server *Server) SessionPut(rw http.ResponseWriter, r *http.Request)

func (*Server) SetLocalInstance

func (server *Server) SetLocalInstance(create bool) (created bool, err error)

func (*Server) Setup

func (server *Server) Setup(create bool) error

func (*Server) TimelineDelete

func (server *Server) TimelineDelete(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) TimelineGet

func (server *Server) TimelineGet(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) TimelineHead

func (server *Server) TimelineHead(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) TimelinePost

func (server *Server) TimelinePost(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) TimelinePut

func (server *Server) TimelinePut(rw http.ResponseWriter, r *http.Request)

TODO.

func (*Server) Transaction

func (server *Server) Transaction(fn func(ctx context.Context, tx pgx.Tx) error) error

func (*Server) ValidateSession

func (server *Server) ValidateSession(next http.Handler) http.Handler

type SessionDeleteResponse

type SessionDeleteResponse struct {
	JSONResponse
}

type SessionPutRequest

type SessionPutRequest struct {
	Username *string `json:"username"`
	Email    *string `json:"email"`
	Password string  `json:"password"`
}

type SessionPutResponse

type SessionPutResponse struct {
	JSONResponse
	ID    uuid.UUID `json:"id"`
	Token string    `json:"token"`
}

type TimelineDeleteResponse

type TimelineDeleteResponse struct {
	JSONResponse
}

type TimelineGetResponse

type TimelineGetResponse struct {
	JSONResponse
}

type TimelinePostResponse

type TimelinePostResponse struct {
	JSONResponse
}

type TimelinePutRequest

type TimelinePutRequest struct{}

type TimelinePutResponse

type TimelinePutResponse struct {
	JSONResponse
}

Jump to

Keyboard shortcuts

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