api

package
v0.24.2 Latest Latest
Warning

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

Go to latest
Published: Sep 3, 2023 License: GPL-3.0 Imports: 12 Imported by: 6

Documentation

Index

Constants

View Source
const ATTEMPT_CHANGE_EMAIL_R = "/user/:uid/attemptchangeemail"
View Source
const ATTEMPT_SET_ID_EMAIL_R = "/user/:uid/attemptsetidemail"
View Source
const CHANGE_EMAIL_R = "/user/:uid/changeemail"
View Source
const CHANGE_PASSWD_R = "/user/:uid/changepasswd" //nolint
View Source
const CHECK_EXISTS_USER_R = "/existsuser"
View Source
const CREATE_ARTICLE_R = "/board/:bid/article"
View Source
const CREATE_BOARD_R = "/class/:cls/board"
View Source
const CREATE_COMMENT_R = "/board/:bid/article/:aid/comment"
View Source
const CROSS_POST_R = "/board/:bid/article/:aid/crosspost"
View Source
const DELETE_ARTICLES_R = "/board/:bid/deletearticles"
View Source
const EDIT_ARTICLE_R = "/board/:bid/article/:aid/edit"
View Source
const (
	EPSILON_EXPIRE_TS = 2
)
View Source
const GET_ARTICLE_R = "/board/:bid/article/:aid"
View Source
const GET_EMAIL_TOKEN_INFO_R = "/emailtoken/info"
View Source
const GET_FAV_R = "/user/:uid/favorites"
View Source
const GET_POST_TEMPLATE_R = "/board/:bid/posttemplate/:tid"
View Source
const GET_REFRESH_TOKEN_INFO_R = "/refreshtoken/info"
View Source
const GET_TOKEN_INFO_R = "/token/info"
View Source
const GET_USER_R = "/user/:uid/information"
View Source
const GET_USER_VISIT_COUNT_R = "/uservisitcount"
View Source
const GET_VERSION_R = "/version"
View Source
const INDEX_R = "/"
View Source
const IS_BOARDS_VALID_USER_R = "/boards/isvalid"
View Source
const IS_BOARD_VALID_USER_R = "/board/:bid/isvalid"
View Source
const LOAD_AUTO_COMPLETE_BOARDS_R = "/boards/autocomplete"
View Source
const LOAD_BOARDS_BY_BIDS_R = "/boards/bybids"
View Source
const LOAD_BOARD_DETAIL_R = "/board/:bid/detail"
View Source
const LOAD_BOARD_SUMMARY_R = "/board/:bid/summary"
View Source
const LOAD_BOTTOM_ARTICLES_R = "/board/:bid/articles/bottom"
View Source
const LOAD_CLASS_BOARDS_R = "/cls/:clsid/boards"
View Source
const LOAD_FULL_CLASS_BOARDS_R = "/cls/boards"
View Source
const LOAD_GENERAL_ARTICLES_R = "/board/:bid/articles"
View Source
const LOAD_GENERAL_BOARDS_BY_CLASS_R = "/boards/byclass"
View Source
const LOAD_GENERAL_BOARDS_R = "/boards"
View Source
const LOAD_GENERAL_BOARD_DETAILS_R = "/boards/detail"
View Source
const LOAD_HOT_BOARDS_R = "/boards/popular"
View Source
const LOGIN_R = "/token"
View Source
const READ_POST_NOTE_R = "/board/:bid/postnote"
View Source
const READ_POST_TYPE_R = "/board/:bid/posttype"
View Source
const REFRESH_R = "/refresh"
View Source
const REGISTER_R = "/register"
View Source
const RELOAD_UHASH_R = "/admin/reloaduhash"
View Source
const SET_ID_EMAIL_R = "/user/:uid/setidemail"
View Source
const SET_USER_PERM_R = "/admin/user/:uid/setperm"
View Source
const WRITE_FAV_R = "/user/:uid/favorites/post"

Variables

View Source
var (
	// Creating JWT Token
	JWT_ISSUER = "go-pttbbs"
	GUEST      = "guest"

	JWT_SECRET                = []byte("jwt_secret")
	JWT_TOKEN_EXPIRE_TS       = 86400 * 1 // 1 days
	JWT_TOKEN_EXPIRE_DURATION = time.Duration(JWT_TOKEN_EXPIRE_TS) * time.Second

	EMAIL_JWT_SECRET                = []byte("email_jwt_secret")
	EMAIL_JWT_TOKEN_EXPIRE_TS       = 60 * 15 // 15 mins
	EMAIL_JWT_TOKEN_EXPIRE_DURATION = time.Duration(EMAIL_JWT_TOKEN_EXPIRE_TS) * time.Second

	REFRESH_JWT_CLAIM_TYPE            = "refresh"
	REFRESH_JWT_SECRET                = []byte("refresh_jwt_secret")
	REFRESH_JWT_TOKEN_EXPIRE_TS       = 86400 * 7 // 7 days
	REFRESH_JWT_TOKEN_EXPIRE_DURATION = time.Duration(REFRESH_JWT_TOKEN_EXPIRE_TS) * time.Second
)
View Source
var (
	ErrInvalidHost       = errors.New("invalid host")
	ErrInvalidRemoteAddr = errors.New("invalid remote-addr")

	ErrInvalidParams  = errors.New("invalid params")
	ErrInvalidPath    = errors.New("invalid path")
	ErrLoginFailed    = errors.New("login failed")
	ErrInvalidToken   = errors.New("invalid token")
	ErrInvalidUser    = errors.New("invalid user")
	ErrInvalidIDEmail = errors.New("invalid id email")
)

Functions

func AttemptChangeEmail added in v0.7.0

func AttemptChangeEmail(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func AttemptChangeEmailWrapper added in v0.7.0

func AttemptChangeEmailWrapper(c *gin.Context)

func AttemptSetIDEmail added in v0.8.1

func AttemptSetIDEmail(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func AttemptSetIDEmailWrapper added in v0.8.1

func AttemptSetIDEmailWrapper(c *gin.Context)

func ChangeEmail added in v0.7.0

func ChangeEmail(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

ChangeEmail

Sysop initiates only attempt-change-mail. Sysop does not change email directly.

func ChangeEmailWrapper added in v0.7.0

func ChangeEmailWrapper(c *gin.Context)

func ChangePasswd added in v0.6.0

func ChangePasswd(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func ChangePasswdWrapper added in v0.6.0

func ChangePasswdWrapper(c *gin.Context)

func CheckExistsUser added in v0.9.4

func CheckExistsUser(remoteAddr string, params interface{}, c *gin.Context) (result interface{}, err error)

func CheckExistsUserWrapper added in v0.9.4

func CheckExistsUserWrapper(c *gin.Context)

func CreateArticle added in v0.12.0

func CreateArticle(remoteAddr string, uuser bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func CreateArticleWrapper added in v0.12.0

func CreateArticleWrapper(c *gin.Context)

func CreateBoard added in v0.11.1

func CreateBoard(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func CreateBoardWrapper added in v0.11.1

func CreateBoardWrapper(c *gin.Context)

func CreateComment added in v0.14.0

func CreateComment(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func CreateCommentWrapper added in v0.14.0

func CreateCommentWrapper(c *gin.Context)

func CreateEmailToken added in v0.7.3

func CreateEmailToken(userID bbs.UUserID, clientInfo string, email string, context EmailTokenContext) (raw string, err error)

func CreateRefreshToken added in v0.24.0

func CreateRefreshToken(userID bbs.UUserID, clientInfo string) (raw string, expireTime types.Time4, err error)

func CreateToken added in v0.7.3

func CreateToken(userID bbs.UUserID, clientInfo string) (raw string, expireTime types.Time4, err error)

func CrossPost added in v0.16.0

func CrossPost(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func CrossPostWrapper added in v0.16.0

func CrossPostWrapper(c *gin.Context)

func DeleteArticles added in v0.19.0

func DeleteArticles(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func DeleteArticlesWrapper added in v0.19.0

func DeleteArticlesWrapper(c *gin.Context)

func EditArticle added in v0.18.0

func EditArticle(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func EditArticleWrapper added in v0.18.0

func EditArticleWrapper(c *gin.Context)

func GetArticle added in v0.4.0

func GetArticle(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

GetArticle

Require middleware to handle deleted files (by owner-name and by title). We will handle user-board relation and filename prefix.

Require middleware to parse the content. Require middleware to take care of user-read-article.

func GetArticleWrapper added in v0.4.4

func GetArticleWrapper(c *gin.Context)

func GetEmailTokenInfo added in v0.7.3

func GetEmailTokenInfo(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (result interface{}, err error)

func GetEmailTokenInfoWrapper added in v0.7.3

func GetEmailTokenInfoWrapper(c *gin.Context)

func GetFavorites added in v0.9.0

func GetFavorites(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func GetFavoritesWrapper added in v0.9.0

func GetFavoritesWrapper(c *gin.Context)

func GetJwt added in v0.4.5

func GetJwt(c *gin.Context) (jwt string)

func GetPostTemplate added in v0.23.3

func GetPostTemplate(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func GetPostTemplateWrapper added in v0.23.3

func GetPostTemplateWrapper(c *gin.Context)

func GetRefreshTokenInfo added in v0.24.0

func GetRefreshTokenInfo(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (result interface{}, err error)

func GetRefreshTokenInfoWrapper added in v0.24.0

func GetRefreshTokenInfoWrapper(c *gin.Context)

func GetTokenInfo added in v0.7.3

func GetTokenInfo(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (result interface{}, err error)

func GetTokenInfoWrapper added in v0.7.3

func GetTokenInfoWrapper(c *gin.Context)

func GetUser added in v0.5.0

func GetUser(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func GetUserVisitCount added in v0.19.2

func GetUserVisitCount(remoteAddr string, params interface{}, c *gin.Context) (interface{}, error)

func GetUserVisitCountWrapper added in v0.19.2

func GetUserVisitCountWrapper(c *gin.Context)

func GetUserWrapper added in v0.5.0

func GetUserWrapper(c *gin.Context)

func GetVersion added in v0.12.3

func GetVersion(remoteAddr string, params interface{}, c *gin.Context) (interface{}, error)

func GetVersionWrapper added in v0.12.3

func GetVersionWrapper(c *gin.Context)

func Index

func Index(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (interface{}, error)

func IndexWrapper added in v0.4.4

func IndexWrapper(c *gin.Context)

func InitConfig

func InitConfig() error

func IsBoardValidUser added in v0.9.5

func IsBoardValidUser(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func IsBoardValidUserWrapper added in v0.9.5

func IsBoardValidUserWrapper(c *gin.Context)

func IsBoardsValidUser added in v0.17.0

func IsBoardsValidUser(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (result interface{}, err error)

func IsBoardsValidUserWrapper added in v0.17.0

func IsBoardsValidUserWrapper(c *gin.Context)

func JSON added in v0.4.4

func JSON(theFunc APIFunc, params interface{}, c *gin.Context)

func LoadAutoCompleteBoards added in v0.10.0

func LoadAutoCompleteBoards(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (interface{}, error)

func LoadAutoCompleteBoardsWrapper added in v0.10.0

func LoadAutoCompleteBoardsWrapper(c *gin.Context)

func LoadBoardDetail added in v0.18.0

func LoadBoardDetail(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (ret interface{}, err error)

func LoadBoardDetailWrapper added in v0.18.0

func LoadBoardDetailWrapper(c *gin.Context)

func LoadBoardSummary added in v0.8.0

func LoadBoardSummary(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func LoadBoardSummaryWrapper added in v0.8.0

func LoadBoardSummaryWrapper(c *gin.Context)

func LoadBoardsByBids added in v0.9.2

func LoadBoardsByBids(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (result interface{}, err error)

func LoadBoardsByBidsWrapper added in v0.9.2

func LoadBoardsByBidsWrapper(c *gin.Context)

func LoadBottomArticles added in v0.15.0

func LoadBottomArticles(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func LoadBottomArticlesWrapper added in v0.15.0

func LoadBottomArticlesWrapper(c *gin.Context)

func LoadClassBoards added in v0.17.0

func LoadClassBoards(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (ret interface{}, err error)

func LoadClassBoardsWrapper added in v0.17.0

func LoadClassBoardsWrapper(c *gin.Context)

func LoadFullClassBoards added in v0.17.0

func LoadFullClassBoards(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (ret interface{}, err error)

func LoadFullClassBoardsWrapper added in v0.17.0

func LoadFullClassBoardsWrapper(c *gin.Context)

func LoadGeneralArticles added in v0.3.0

func LoadGeneralArticles(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func LoadGeneralArticlesWrapper added in v0.4.4

func LoadGeneralArticlesWrapper(c *gin.Context)

func LoadGeneralBoardDetails added in v0.23.0

func LoadGeneralBoardDetails(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (interface{}, error)

func LoadGeneralBoardDetailsWrapper added in v0.23.0

func LoadGeneralBoardDetailsWrapper(c *gin.Context)

func LoadGeneralBoards added in v0.2.3

func LoadGeneralBoards(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (interface{}, error)

func LoadGeneralBoardsByClass added in v0.9.0

func LoadGeneralBoardsByClass(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (interface{}, error)

func LoadGeneralBoardsByClassWrapper added in v0.9.0

func LoadGeneralBoardsByClassWrapper(c *gin.Context)

func LoadGeneralBoardsWrapper added in v0.4.4

func LoadGeneralBoardsWrapper(c *gin.Context)

func LoadHotBoards added in v0.9.0

func LoadHotBoards(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (result interface{}, err error)

We have only 128 hot-boards.

func LoadHotBoardsWrapper added in v0.9.0

func LoadHotBoardsWrapper(c *gin.Context)

func Login added in v0.2.3

func Login(remoteAddr string, params interface{}, c *gin.Context) (interface{}, error)

func LoginRequiredJSON added in v0.4.4

func LoginRequiredJSON(theFunc LoginRequiredAPIFunc, params interface{}, c *gin.Context)

func LoginRequiredPathJSON added in v0.4.4

func LoginRequiredPathJSON(theFunc LoginRequiredPathAPIFunc, params interface{}, path interface{}, c *gin.Context)

func LoginRequiredPathQuery added in v0.4.4

func LoginRequiredPathQuery(theFunc LoginRequiredPathAPIFunc, params interface{}, path interface{}, c *gin.Context)

func LoginRequiredQuery added in v0.4.4

func LoginRequiredQuery(theFunc LoginRequiredAPIFunc, params interface{}, c *gin.Context)

func LoginWrapper added in v0.4.4

func LoginWrapper(c *gin.Context)

func OptionsWrapper added in v0.9.8

func OptionsWrapper(c *gin.Context)

func ParseClaimInt added in v0.15.2

func ParseClaimInt(claim jwt.MapClaims, idx string) (ret int, err error)

func ParseClaimString added in v0.15.2

func ParseClaimString(claim jwt.MapClaims, idx string) (ret string, err error)

func ParseJwt added in v0.15.2

func ParseJwt(raw string, secret []byte) (tok *jwt.Token, err error)

func Query added in v0.4.4

func Query(theFunc APIFunc, params interface{}, c *gin.Context)

func Refresh added in v0.24.0

func Refresh(remoteAddr string, params interface{}, c *gin.Context) (result interface{}, err error)

func RefreshWrapper added in v0.24.0

func RefreshWrapper(c *gin.Context)

func Register added in v0.2.3

func Register(remoteAddr string, params interface{}, c *gin.Context) (interface{}, error)

func RegisterWrapper added in v0.4.4

func RegisterWrapper(c *gin.Context)

func ReloadUHash added in v0.13.0

func ReloadUHash(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (result interface{}, err error)

func ReloadUHashWrapper added in v0.13.0

func ReloadUHashWrapper(c *gin.Context)

func SetIDEmail added in v0.7.1

func SetIDEmail(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func SetIDEmailWrapper added in v0.7.1

func SetIDEmailWrapper(c *gin.Context)

func SetUserPerm added in v0.13.1

func SetUserPerm(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func SetUserPermWrapper added in v0.13.1

func SetUserPermWrapper(c *gin.Context)

func VerifyEmailJwt added in v0.7.0

func VerifyEmailJwt(raw string, context EmailTokenContext) (userID bbs.UUserID, expireTS int, clientInfo string, email string, err error)

func VerifyJwt added in v0.4.1

func VerifyJwt(raw string, isCheckExpire bool) (userID bbs.UUserID, expireTS int, clientInfo string, err error)

func VerifyRefreshJwt added in v0.24.0

func VerifyRefreshJwt(raw string) (userID bbs.UUserID, expireTS int, clientInfo string, err error)

func WriteFavorites added in v0.23.6

func WriteFavorites(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (result interface{}, err error)

func WriteFavoritesWrapper added in v0.23.6

func WriteFavoritesWrapper(c *gin.Context)

Types

type APIFunc added in v0.15.2

type APIFunc func(remoteAddr string, params interface{}, c *gin.Context) (interface{}, error)

type AttemptChangeEmailParams added in v0.7.0

type AttemptChangeEmailParams struct {
	ClientInfo string `json:"client_info"`
	Passwd     string `json:"password"`
	Email      string `json:"email"`
}

type AttemptChangeEmailPath added in v0.7.0

type AttemptChangeEmailPath struct {
	UserID bbs.UUserID `uri:"uid" binding:"required"`
}

type AttemptChangeEmailResult added in v0.7.0

type AttemptChangeEmailResult struct {
	UserID bbs.UUserID `json:"user_id"`
	Jwt    string      `json:"email_token"`
}

type AttemptSetIDEmailParams added in v0.8.1

type AttemptSetIDEmailParams struct {
	ClientInfo string `json:"client_info"`
	Passwd     string `json:"password"`
	Email      string `json:"email"`
}

type AttemptSetIDEmailPath added in v0.8.1

type AttemptSetIDEmailPath struct {
	UserID bbs.UUserID `uri:"uid" binding:"required"`
}

type AttemptSetIDEmailResult added in v0.8.1

type AttemptSetIDEmailResult struct {
	UserID bbs.UUserID `json:"user_id"`
	Jwt    string      `json:"email_token"`
}

type ChangeEmailParams added in v0.7.0

type ChangeEmailParams struct {
	Jwt string `json:"email_token"`
}

type ChangeEmailPath added in v0.7.0

type ChangeEmailPath struct {
	UserID bbs.UUserID `uri:"uid" binding:"required"`
}

type ChangeEmailResult added in v0.7.0

type ChangeEmailResult struct {
	UserID bbs.UUserID `json:"user_id"`
	Email  string      `json:"email"`
}

type ChangePasswdParams added in v0.6.0

type ChangePasswdParams struct {
	ClientInfo string `json:"client_info"`
	OrigPasswd string `json:"orig_password"`
	Passwd     string `json:"password"`
}

type ChangePasswdPath added in v0.6.0

type ChangePasswdPath struct {
	UserID bbs.UUserID `uri:"uid" binding:"required"`
}

type ChangePasswdResult added in v0.6.0

type ChangePasswdResult LoginResult

type CheckExistsUserParams added in v0.9.4

type CheckExistsUserParams struct {
	Username string `json:"username"`
}

type CheckExistsUserResult added in v0.9.4

type CheckExistsUserResult struct {
	UserID   bbs.UUserID `json:"user_id"`
	IsExists bool        `json:"is_exists"`
}

type CreateArticleParams added in v0.12.0

type CreateArticleParams struct {
	PostType []byte   `json:"class" form:"class" url:"class"`
	Title    []byte   `json:"title" form:"title" url:"title"`
	Content  [][]byte `json:"content" form:"content" url:"content"`
}

type CreateArticlePath added in v0.12.0

type CreateArticlePath struct {
	BBoardID bbs.BBoardID `uri:"bid" binding:"required"`
}

type CreateArticleResult added in v0.12.0

type CreateArticleResult *bbs.ArticleSummary

type CreateBoardParams added in v0.11.1

type CreateBoardParams struct {
	Brdname      string            `json:"brdname" form:"brdname" url:"brdname"`
	BrdClass     []byte            `json:"class" form:"class" url:"class"`
	BrdTitle     []byte            `json:"title" form:"title" url:"title"`
	BMs          []bbs.UUserID     `json:"bms" form:"bms" url:"bms"`
	BrdAttr      ptttype.BrdAttr   `json:"brdattr" form:"brdattr" url:"brdattr"`
	Level        ptttype.PERM      `json:"level,omitempty" form:"level,omitempty" url:"level,omitempty"`
	ChessCountry ptttype.ChessCode `json:"chess_country,omitempty" form:"chess_country,omitempty" url:"chess_country,omitempty"`
	IsGroup      bool              `json:"is_group" form:"is_group" url:"is_group"`
}

type CreateBoardPath added in v0.11.1

type CreateBoardPath struct {
	ClsBid ptttype.Bid `uri:"cls" binding:"required"`
}

type CreateBoardResult added in v0.11.1

type CreateBoardResult *bbs.BoardSummary

type CreateCommentParams added in v0.14.0

type CreateCommentParams struct {
	CommentType ptttype.CommentType `json:"type" form:"type" url:"type"`
	Content     []byte              `json:"content" form:"content" url:"content"`
}

type CreateCommentPath added in v0.14.0

type CreateCommentPath struct {
	BBoardID  bbs.BBoardID  `uri:"bid" binding:"required"`
	ArticleID bbs.ArticleID `uri:"aid" binding:"required"`
}

type CreateCommentResult added in v0.14.0

type CreateCommentResult struct {
	Content []byte      `json:"content"`
	MTime   types.Time4 `json:"mtime"`
}

type CrossPostParams added in v0.16.0

type CrossPostParams struct {
	XBoardID bbs.BBoardID `json:"xbid" form:"xbid" url:"xbid"`
}

type CrossPostPath added in v0.16.0

type CrossPostPath struct {
	BBoardID  bbs.BBoardID  `uri:"bid" binding:"required"`
	ArticleID bbs.ArticleID `uri:"aid" binding:"required"`
}

type CrossPostResult added in v0.16.0

type CrossPostResult struct {
	// bbs.ArticleSummary
	ArticleSummary *bbs.ArticleSummary `json:"article"`

	Comment      []byte      `json:"comment"`
	CommentMTime types.Time4 `json:"comment_mtime"`
}

type DeleteArticlesParams added in v0.19.0

type DeleteArticlesParams struct {
	ArticleIDs []bbs.ArticleID `json:"aids" form:"aids" url:"aids" binding:"required"`
}

type DeleteArticlesPath added in v0.19.0

type DeleteArticlesPath struct {
	BBoardID bbs.BBoardID `uri:"bid" binding:"required"`
}

type DeleteArticlesResult added in v0.19.0

type DeleteArticlesResult struct {
	ArticleIDs []bbs.ArticleID `json:"aids"`
}

type EditArticleParams added in v0.18.0

type EditArticleParams struct {
	PostType []byte   `json:"class" form:"class" url:"class"`
	Title    []byte   `json:"title,omitempty" form:"title,omitempty" url:"title,omitempty"`
	Content  [][]byte `json:"content" form:"content" url:"content"`

	OldSZ  int           `json:"oldsz" form:"oldsz" url:"oldsz"`
	OldSum cmsys.Fnv64_t `json:"oldsum" form:"oldsum" url:"oldsum"`
}

type EditArticlePath added in v0.18.0

type EditArticlePath struct {
	BBoardID  bbs.BBoardID  `uri:"bid" binding:"required"`
	ArticleID bbs.ArticleID `uri:"aid" binding:"required"`
}

type EditArticleResult added in v0.18.0

type EditArticleResult struct {
	MTime     types.Time4 `json:"mtime"`
	Content   []byte      `json:"content"` // content contains all the necessary information.
	RealTitle []byte      `json:"title"`
	Class     []byte      `json:"class"`
	FullTitle []byte      `json:"full_title"`
}

type EmailJwtClaim added in v0.7.0

type EmailJwtClaim struct {
	ClientInfo string `json:"cli"`
	UUserID    string `json:"sub"`
	Email      string `json:"eml"`
	Expire     int    `json:"exp"`
	Context    string `json:"ctx"`
}

type EmailTokenContext added in v0.8.1

type EmailTokenContext string
const (
	CONTEXT_CHANGE_EMAIL EmailTokenContext = "email"
	CONTEXT_SET_ID_EMAIL EmailTokenContext = "id_email"
)

type GetArticleParams added in v0.4.0

type GetArticleParams struct {
	RetrieveTS types.Time4 `json:"last_ts,omitempty" form:"last_ts,omitempty" url:"last_ts,omitempty"`
	IsSystem   bool        `json:"system,omitempty" form:"system,omitempty" url:"system,omitempty"`
	IsHash     bool        `json:"hash,omitempty" form:"hash,omitempty" url:"hash,omitempty"`
}

type GetArticlePath added in v0.4.0

type GetArticlePath struct {
	BBoardID  bbs.BBoardID  `uri:"bid" binding:"required"`
	ArticleID bbs.ArticleID `uri:"aid" binding:"required"`
}

type GetArticleResult added in v0.4.0

type GetArticleResult struct {
	MTime   types.Time4   `json:"mtime"`
	Content []byte        `json:"content"` // content contains all the necessary information.
	Hash    cmsys.Fnv64_t `json:"hash"`
}

type GetEmailTokenInfoParams added in v0.7.3

type GetEmailTokenInfoParams struct {
	Jwt     string            `json:"token" form:"token" url:"token"`
	Context EmailTokenContext `json:"context" form:"context" url:"context"`
}

type GetEmailTokenInfoResult added in v0.7.3

type GetEmailTokenInfoResult struct {
	ClientInfo string      `json:"client_info"`
	UserID     bbs.UUserID `json:"user_id"`
	Email      string      `json:"email"`
	Expire     int         `json:"expire"`
}

type GetFavoritesParams added in v0.9.0

type GetFavoritesParams struct {
	RetrieveTS types.Time4 `json:"last_ts,omitempty" form:"last_ts,omitempty" url:"last_ts,omitempty"`
}

type GetFavoritesPath added in v0.9.0

type GetFavoritesPath struct {
	UserID bbs.UUserID `uri:"uid" binding:"required"`
}

type GetFavoritesResult added in v0.9.0

type GetFavoritesResult struct {
	MTime   types.Time4 `json:"mtime"`
	Content []byte      `json:"content"`
}

type GetPostTemplateParams added in v0.23.3

type GetPostTemplateParams struct {
	RetrieveTS types.Time4 `json:"last_ts,omitempty" form:"last_ts,omitempty" url:"last_ts,omitempty"`
	IsSystem   bool        `json:"system,omitempty" form:"system,omitempty" url:"system,omitempty"`
	IsHash     bool        `json:"hash,omitempty" form:"hash,omitempty" url:"hash,omitempty"`
}

type GetPostTemplatePath added in v0.23.3

type GetPostTemplatePath struct {
	BBoardID   bbs.BBoardID    `uri:"bid" binding:"required"`
	TemplateID ptttype.SortIdx `uri:"tid" binding:"required"`
}

type GetPostTemplateResult added in v0.23.3

type GetPostTemplateResult struct {
	MTime   types.Time4   `json:"mtime"`
	Content []byte        `json:"content"` // content contains all the necessary information.
	Hash    cmsys.Fnv64_t `json:"hash"`
}

type GetRefreshTokenInfoParams added in v0.24.0

type GetRefreshTokenInfoParams struct {
	Jwt string `json:"token" form:"token" url:"token"`
}

type GetRefreshTokenInfoResult added in v0.24.0

type GetRefreshTokenInfoResult struct {
	ClientInfo string      `json:"client_info"`
	UserID     bbs.UUserID `json:"user_id"`
	Expire     int         `json:"expire"`
}

type GetTokenInfoParams added in v0.7.3

type GetTokenInfoParams struct {
	Jwt string `json:"token" form:"token" url:"token"`
}

type GetTokenInfoResult added in v0.7.3

type GetTokenInfoResult struct {
	ClientInfo string      `json:"client_info"`
	UserID     bbs.UUserID `json:"user_id"`
	Expire     int         `json:"expire"`
}

type GetUserParams added in v0.5.0

type GetUserParams struct{}

type GetUserPath added in v0.5.0

type GetUserPath struct {
	UserID bbs.UUserID `uri:"uid" binding:"required"`
}

type GetUserResult added in v0.5.0

type GetUserResult *bbs.Userec

type GetUserVisitCountResult added in v0.19.2

type GetUserVisitCountResult struct {
	Total int32 `json:"total"`
}

type GetVersionResult added in v0.12.3

type GetVersionResult struct {
	Version    string `json:"version"`
	GitVersion string `json:"commit"`
}

type IndexParams

type IndexParams struct{}

type IndexResult

type IndexResult struct {
	Data string
}

type IsBoardValidUserPath added in v0.9.5

type IsBoardValidUserPath struct {
	BoardID bbs.BBoardID `uri:"bid" binding:"required"`
}

type IsBoardValidUserResult added in v0.9.5

type IsBoardValidUserResult struct {
	IsValid bool `json:"is_valid"`
}

type IsBoardsValidUserParams added in v0.17.0

type IsBoardsValidUserParams struct {
	BoardIDs []bbs.BBoardID `uri:"bids" binding:"required"`
}

type IsBoardsValidUserResult added in v0.17.0

type IsBoardsValidUserResult struct {
	IsValid map[bbs.BBoardID]bool `json:"is_valid"`
}

type JwtClaim

type JwtClaim struct {
	ClientInfo string `json:"cli"`
	UUserID    string `json:"sub"`
	Expire     int    `json:"exp"`
}

type LoadAutoCompleteBoardsParams added in v0.10.0

type LoadAutoCompleteBoardsParams struct {
	StartIdx string `json:"start_idx,omitempty" form:"start_idx,omitempty" url:"start_idx,omitempty"`
	NBoards  int    `json:"max,omitempty" form:"max,omitempty" url:"max,omitempty"`
	Keyword  string `json:"brdname,omitempty" form:"brdname,omitempty" url:"brdname,omitempty"`
	Asc      bool   `json:"asc,omitempty" form:"asc,omitempty" url:"asc,omitempty"`
}

type LoadBoardDetailParams added in v0.18.0

type LoadBoardDetailParams struct{}

type LoadBoardDetailPath added in v0.18.0

type LoadBoardDetailPath struct {
	BBoardID bbs.BBoardID `uri:"bid" binding:"required"`
}

type LoadBoardDetailResult added in v0.18.0

type LoadBoardDetailResult *bbs.BoardDetail

XXX LoadBoardDetailResult is a pointer

It's possible that this is unavoidable,
and we need to change all the result-type to be pointer-based.

type LoadBoardSummaryParams added in v0.8.0

type LoadBoardSummaryParams struct{}

type LoadBoardSummaryPath added in v0.8.0

type LoadBoardSummaryPath struct {
	BBoardID bbs.BBoardID `uri:"bid" binding:"required"`
}

type LoadBoardSummaryResult added in v0.8.0

type LoadBoardSummaryResult *bbs.BoardSummary

XXX LoadBoardSummaryResult is a pointer

It's possible that this is unavoidable,
and we need to change all the result-type to be pointer-based.

type LoadBoardsByBidsParams added in v0.9.2

type LoadBoardsByBidsParams struct {
	Bids []ptttype.Bid `json:"bids"`
}

type LoadBoardsByBidsResult added in v0.9.2

type LoadBoardsByBidsResult struct {
	Boards []*bbs.BoardSummary `json:"data"`
}

type LoadBottomArticlesPath added in v0.15.0

type LoadBottomArticlesPath struct {
	BBoardID bbs.BBoardID `uri:"bid" binding:"required"`
}

type LoadBottomArticlesResult added in v0.15.0

type LoadBottomArticlesResult struct {
	Articles []*bbs.ArticleSummary `json:"data"`
}

type LoadClassBoardsParams added in v0.17.0

type LoadClassBoardsParams struct {
	BSortBy  ptttype.BSortBy `json:"sortby,omitempty" form:"sortby,omitempty" url:"sortby,omitempty"`
	IsSystem bool            `json:"system,omitempty" form:"system,omitempty" url:"system"`
}

type LoadClassBoardsPath added in v0.17.0

type LoadClassBoardsPath struct {
	ClsID ptttype.Bid `uri:"clsid" binding:"required"`
}

type LoadClassBoardsResult added in v0.17.0

type LoadClassBoardsResult struct {
	Boards []*bbs.BoardSummary `json:"data"`
}

type LoadFullClassBoardsParams added in v0.17.0

type LoadFullClassBoardsParams struct {
	StartBid ptttype.Bid `json:"start_bid,omitempty" form:"start_bid,omitempty" url:"start_bid,omitempty"`
	NBoards  int         `json:"max" form:"max" url:"max"`
	IsSystem bool        `json:"system,omitempty" form:"system,omitempty" url:"system"`
}

type LoadFullClassBoardsResult added in v0.17.0

type LoadFullClassBoardsResult struct {
	Boards  []*bbs.BoardSummary `json:"data"`
	NextBid ptttype.Bid         `json:"next_bid"`
}

type LoadGeneralArticlesParams added in v0.3.0

type LoadGeneralArticlesParams struct {
	StartIdx  string `json:"start_idx,omitempty" form:"start_idx,omitempty" url:"start_idx,omitempty"`
	NArticles int    `json:"max" form:"max" url:"max"`
	Desc      bool   `json:"desc,omitempty" form:"desc,omitempty" url:"desc"`
	IsSystem  bool   `json:"system,omitempty" form:"system,omitempty" url:"system"`
}

func NewLoadGeneralArticlesParams added in v0.10.0

func NewLoadGeneralArticlesParams() *LoadGeneralArticlesParams

type LoadGeneralArticlesPath added in v0.3.0

type LoadGeneralArticlesPath struct {
	BBoardID bbs.BBoardID `uri:"bid" binding:"required"`
}

type LoadGeneralArticlesResult added in v0.3.0

type LoadGeneralArticlesResult struct {
	Articles       []*bbs.ArticleSummary `json:"data"`
	IsNewest       bool                  `json:"is_newest"`
	NextIdx        string                `json:"next_idx"`
	NextCreateTime types.Time4           `json:"next_create_time"`
	StartNumIdx    ptttype.SortIdx       `json:"start_num_idx"`
}

type LoadGeneralBoardDetailsParams added in v0.23.0

type LoadGeneralBoardDetailsParams struct {
	StartIdx string `json:"start_idx,omitempty" form:"start_idx,omitempty" url:"start_idx,omitempty"`
	NBoards  int    `json:"max" form:"max" url:"max"`
	Asc      bool   `json:"asc,omitempty" form:"asc,omitempty" url:"asc"`
	IsSystem bool   `json:"system,omitempty" form:"system,omitempty" url:"system"`
}

func NewLoadGeneralBoardDetailsParams added in v0.23.0

func NewLoadGeneralBoardDetailsParams() *LoadGeneralBoardDetailsParams

type LoadGeneralBoardDetailsResult added in v0.23.0

type LoadGeneralBoardDetailsResult struct {
	Boards  []*bbs.BoardDetail `json:"data"`
	NextIdx string             `json:"next_idx"`
}

type LoadGeneralBoardsParams added in v0.2.3

type LoadGeneralBoardsParams struct {
	StartIdx string `json:"start_idx,omitempty" form:"start_idx,omitempty" url:"start_idx,omitempty"`
	NBoards  int    `json:"max" form:"max" url:"max"`
	Title    []byte `json:"title,omitempty" form:"title,omitempty" url:"title,omitempty"`       // sending utf8-bytes from middleware
	Keyword  []byte `json:"keyword,omitempty" form:"keyword,omitempty" url:"keyword,omitempty"` // sending utf8-bytes from middleware
	Asc      bool   `json:"asc,omitempty" form:"asc,omitempty" url:"asc"`
	IsSystem bool   `json:"system,omitempty" form:"system,omitempty" url:"system"`
}

func NewLoadGeneralBoardsParams added in v0.11.1

func NewLoadGeneralBoardsParams() *LoadGeneralBoardsParams

type LoadGeneralBoardsResult added in v0.2.3

type LoadGeneralBoardsResult struct {
	Boards  []*bbs.BoardSummary `json:"data"`
	NextIdx string              `json:"next_idx"`
}

type LoadHotBoardsResult added in v0.9.3

type LoadHotBoardsResult struct {
	Boards []*bbs.BoardSummary `json:"data"`
}

type LoginParams added in v0.2.3

type LoginParams struct {
	ClientInfo string `json:"client_info"`
	Username   string `json:"username"`
	Passwd     string `json:"password"`
}

type LoginRequiredAPIFunc added in v0.15.2

type LoginRequiredAPIFunc func(remoteAddr string, uuserID bbs.UUserID, params interface{}, c *gin.Context) (interface{}, error)

type LoginRequiredPathAPIFunc added in v0.15.2

type LoginRequiredPathAPIFunc func(remoteAddr string, uuserID bbs.UUserID, params interface{}, path interface{}, c *gin.Context) (interface{}, error)

type LoginResult added in v0.2.3

type LoginResult struct {
	UserID        bbs.UUserID `json:"user_id"`
	Jwt           string      `json:"access_token"`
	TokenType     string      `json:"token_type"`
	Refresh       string      `json:"refresh_token"`
	AccessExpire  types.Time4 `json:"access_expire"`
	RefreshExpire types.Time4 `json:"refresh_expire"`
}

type RefreshJwtClaim added in v0.24.0

type RefreshJwtClaim struct {
	ClientInfo string `json:"cli"`
	UUserID    string `json:"sub"`
	Expire     int    `json:"exp"`
	TheType    string `json:"typ"`
}

type RefreshParams added in v0.24.0

type RefreshParams struct {
	ClientInfo string `json:"client_info"`
	Refresh    string `json:"refresh_token"`
}

type RefreshResult added in v0.24.0

type RefreshResult LoginResult

type RegisterParams added in v0.2.3

type RegisterParams struct {
	ClientInfo string `json:"client_info"`
	Username   string `json:"username"`
	Passwd     string `json:"password"`
	Email      string `json:"email,omitempty"`

	Nickname []byte `json:"nickname,omitempty"` // sending utf8-bytes from middleware.
	Realname []byte `json:"realname,omitempty"`
	Career   []byte `json:"career,omitempty"`
	Address  []byte `json:"address,omitempty"`
	Over18   bool   `json:"over18"`
}

type RegisterResult added in v0.2.3

type RegisterResult LoginResult

type ReloadUHashResult added in v0.13.0

type ReloadUHashResult struct {
	Success bool `json:"success"`
}

type SetIDEmailParams added in v0.7.1

type SetIDEmailParams struct {
	IsSet bool   `json:"is_set"`
	Jwt   string `json:"email_token"`
}

type SetIDEmailPath added in v0.7.1

type SetIDEmailPath struct {
	UserID bbs.UUserID `uri:"uid" binding:"required"`
}

type SetIDEmailResult added in v0.7.1

type SetIDEmailResult struct {
	UserID     bbs.UUserID   `json:"user_id"`
	Email      string        `json:"email"`
	UserLevel2 ptttype.PERM2 `json:"perm2"`
}

type SetUserPermParams added in v0.13.1

type SetUserPermParams struct {
	Perm ptttype.PERM `json:"perm"`
}

type SetUserPermPath added in v0.13.1

type SetUserPermPath struct {
	UserID bbs.UUserID `uri:"uid" binding:"required"`
}

type SetUserPermResult added in v0.13.1

type SetUserPermResult struct {
	Perm ptttype.PERM `json:"perm"`
}

type WriteFavoritesParams added in v0.23.6

type WriteFavoritesParams struct {
	Content []byte `json:"content,omitempty" form:"content,omitempty" url:"content,omitempty"`
}

type WriteFavoritesPath added in v0.23.6

type WriteFavoritesPath struct {
	UserID bbs.UUserID `uri:"uid" binding:"required"`
}

type WriteFavoritesResult added in v0.23.6

type WriteFavoritesResult struct {
	MTime types.Time4 `json:"mtime"`
}

Jump to

Keyboard shortcuts

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