Files
kleiax 904d14b64c
CI / test (push) Canceled after 0s
Initial commit
2026-09-12 22:22:17 +02:00

49 lines
2.1 KiB
Go

package client
import (
"context"
"net/http"
)
// UpdateAccountProfile changes the current user's display name and color.
func (c *Client) UpdateAccountProfile(ctx context.Context, name, color string) (User, *Response, error) {
var envelope struct {
User User `json:"user"`
}
response, err := c.do(ctx, http.MethodPatch, "v1/account", map[string]string{"name": name, "color": color}, &envelope)
return envelope.User, response, err
}
// UpdateAccountPassword changes the current user's password after verifying the old one.
func (c *Client) UpdateAccountPassword(ctx context.Context, currentPassword, newPassword string) (*Response, error) {
return c.do(ctx, http.MethodPut, "v1/account/password", map[string]string{"current_password": currentPassword, "new_password": newPassword}, nil)
}
// RequestAccountEmailChange starts email verification after password confirmation.
func (c *Client) RequestAccountEmailChange(ctx context.Context, email, currentPassword string) (*Response, error) {
return c.do(ctx, http.MethodPost, "v1/account/email", map[string]string{"email": email, "current_password": currentPassword}, nil)
}
// ConfirmAccountEmail applies a pending email change using its verification token.
func (c *Client) ConfirmAccountEmail(ctx context.Context, token string) (User, *Response, error) {
var envelope struct {
User User `json:"user"`
}
response, err := c.do(ctx, http.MethodPost, "v1/account/email/confirm", map[string]string{"token": token}, &envelope)
return envelope.User, response, err
}
// AccountSessions lists the current user's active login sessions.
func (c *Client) AccountSessions(ctx context.Context) ([]AccountSession, *Response, error) {
var envelope struct {
Sessions []AccountSession `json:"sessions"`
}
response, err := c.do(ctx, http.MethodGet, "v1/account/sessions", nil, &envelope)
return envelope.Sessions, response, err
}
// DeleteAccountSession revokes one login session owned by the current user.
func (c *Client) DeleteAccountSession(ctx context.Context, id string) (*Response, error) {
return c.do(ctx, http.MethodDelete, "v1/account/sessions/"+id, nil, nil)
}