Initial Commit
This commit is contained in:
commit
af8249097e
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/test
|
29
README.md
Normal file
29
README.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Go-Lemmy
|
||||||
|
|
||||||
|
Go bindings to the [Lemmy](https://join-lemmy.org) API
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```go
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
c, err := lemmy.New("https://lemmy.ml")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = c.Login(ctx, types.Login{
|
||||||
|
UsernameOrEmail: "email@example.com",
|
||||||
|
Password: `TestPwd`,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = c.SaveUserSettings(ctx, types.SaveUserSettings{
|
||||||
|
BotAccount: types.NewOptional(true),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
```
|
128
admin.go
Normal file
128
admin.go
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
package lemmy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"go.arsenm.dev/go-lemmy/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *Client) AddAdmin(ctx context.Context, d types.AddAdmin) (*types.AddAdminResponse, error) {
|
||||||
|
ar := &types.AddAdminResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/admin/add", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) ApproveRegistrationApplication(ctx context.Context, d types.ApproveRegistrationApplication) (*types.RegistrationApplicationResponse, error) {
|
||||||
|
ar := &types.RegistrationApplicationResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/admin/registration_application/approve", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) UnreadRegistrationApplicationCount(ctx context.Context, d types.GetUnreadRegistrationApplicationCount) (*types.GetUnreadRegistrationApplicationCountResponse, error) {
|
||||||
|
ar := &types.GetUnreadRegistrationApplicationCountResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/admin/registration_application/count", nil, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) ListRegistrationApplications(ctx context.Context, d types.ListRegistrationApplications) (*types.ListRegistrationApplicationsResponse, error) {
|
||||||
|
ar := &types.ListRegistrationApplicationsResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/admin/registration_application/list", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) PurgeComment(ctx context.Context, d types.PurgeComment) (*types.PurgeItemResponse, error) {
|
||||||
|
ar := &types.PurgeItemResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/admin/purge/comment", nil, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) PurgeCommunity(ctx context.Context, d types.PurgeCommunity) (*types.PurgeItemResponse, error) {
|
||||||
|
ar := &types.PurgeItemResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/admin/purge/community", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) PurgePerson(ctx context.Context, d types.PurgePerson) (*types.PurgeItemResponse, error) {
|
||||||
|
ar := &types.PurgeItemResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/admin/purge/person", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) PurgePost(ctx context.Context, d types.PurgePost) (*types.PurgeItemResponse, error) {
|
||||||
|
ar := &types.PurgeItemResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/admin/purge/post", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
158
comment.go
Normal file
158
comment.go
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
package lemmy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"go.arsenm.dev/go-lemmy/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *Client) Comments(ctx context.Context, d types.GetComments) (*types.GetCommentsResponse, error) {
|
||||||
|
ar := &types.GetCommentsResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/comment/list", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) CreateComment(ctx context.Context, d types.CreateComment) (*types.CommentResponse, error) {
|
||||||
|
ar := &types.CommentResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/comment", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) CreateCommentReport(ctx context.Context, d types.CreateCommentReport) (*types.CommentReportResponse, error) {
|
||||||
|
ar := &types.CommentReportResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/comment/report", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) DeleteComment(ctx context.Context, d types.DeleteComment) (*types.CommentResponse, error) {
|
||||||
|
ar := &types.CommentResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/comment/delete", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) RemoveComment(ctx context.Context, d types.RemoveComment) (*types.CommentResponse, error) {
|
||||||
|
ar := &types.CommentResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/comment/remove", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) EditComment(ctx context.Context, d types.EditComment) (*types.CommentResponse, error) {
|
||||||
|
ar := &types.CommentResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/comment", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) LikeComment(ctx context.Context, d types.CreateCommentLike) (*types.CommentResponse, error) {
|
||||||
|
ar := &types.CommentResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/comment/like", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) ListCommentReports(ctx context.Context, d types.ListCommentReports) (*types.ListCommentReportsResponse, error) {
|
||||||
|
ar := &types.ListCommentReportsResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/comments/report/list", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) MarkCommentReplyRead(ctx context.Context, d types.MarkCommentReplyAsRead) (*types.CommentResponse, error) {
|
||||||
|
ar := &types.CommentResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/comment/mark_as_read", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) SaveComment(ctx context.Context, d types.SaveComment) (*types.CommentResponse, error) {
|
||||||
|
ar := &types.CommentResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/comment/save", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
173
community.go
Normal file
173
community.go
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
package lemmy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"go.arsenm.dev/go-lemmy/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *Client) AddModToCommunity(ctx context.Context, d types.AddModToCommunity) (*types.AddModToCommunityResponse, error) {
|
||||||
|
ar := &types.AddModToCommunityResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/community/mod", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) BanFromCommunity(ctx context.Context, d types.BanFromCommunity) (*types.BanFromCommunityResponse, error) {
|
||||||
|
ar := &types.BanFromCommunityResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/community/ban_user", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) BlockCommunity(ctx context.Context, d types.BlockCommunity) (*types.BlockCommunityResponse, error) {
|
||||||
|
ar := &types.BlockCommunityResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/community/block", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) CreateCommunity(ctx context.Context, d types.CreateCommunity) (*types.CommunityResponse, error) {
|
||||||
|
ar := &types.CommunityResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/community", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) EditCommunity(ctx context.Context, d types.EditCommunity) (*types.CommunityResponse, error) {
|
||||||
|
ar := &types.CommunityResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/community", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) FollowCommunity(ctx context.Context, d types.FollowCommunity) (*types.CommunityResponse, error) {
|
||||||
|
ar := &types.CommunityResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/community/follow", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) DeleteCommunity(ctx context.Context, d types.DeleteCommunity) (*types.CommunityResponse, error) {
|
||||||
|
ar := &types.CommunityResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/community/delete", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) RemoveCommunity(ctx context.Context, d types.RemoveCommunity) (*types.CommunityResponse, error) {
|
||||||
|
ar := &types.CommunityResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/community/remove", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Community(ctx context.Context, d types.GetCommunity) (*types.GetCommunityResponse, error) {
|
||||||
|
ar := &types.GetCommunityResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/community", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Communities(ctx context.Context, d types.ListCommunities) (*types.ListCommunitiesResponse, error) {
|
||||||
|
ar := &types.ListCommunitiesResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/community/list", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) TransferCommunity(ctx context.Context, d types.TransferCommunity) (*types.GetCommunityResponse, error) {
|
||||||
|
ar := &types.GetCommunityResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/community/transfer", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
8
go.mod
Normal file
8
go.mod
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
module go.arsenm.dev/go-lemmy
|
||||||
|
|
||||||
|
go 1.19
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/google/go-querystring v1.1.0
|
||||||
|
github.com/mitchellh/mapstructure v1.5.0
|
||||||
|
)
|
7
go.sum
Normal file
7
go.sum
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
|
||||||
|
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
|
||||||
|
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
|
||||||
|
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
||||||
|
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
169
lemmy.go
Normal file
169
lemmy.go
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
package lemmy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"github.com/google/go-querystring/query"
|
||||||
|
"go.arsenm.dev/go-lemmy/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Client struct {
|
||||||
|
client *http.Client
|
||||||
|
baseURL *url.URL
|
||||||
|
token string
|
||||||
|
}
|
||||||
|
|
||||||
|
func New(baseURL string) (*Client, error) {
|
||||||
|
return NewWithClient(baseURL, http.DefaultClient)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewWithClient(baseURL string, client *http.Client) (*Client, error) {
|
||||||
|
u, err := url.Parse(baseURL)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u = u.JoinPath("/api/v3")
|
||||||
|
|
||||||
|
return &Client{baseURL: u, client: client}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Login(ctx context.Context, l types.Login) error {
|
||||||
|
var lr types.LoginResponse
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/user/login", l, &lr)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, lr.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
c.token = lr.JWT.MustValue()
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Token() string {
|
||||||
|
return c.token
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) SetToken(t string) {
|
||||||
|
c.token = t
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) req(ctx context.Context, method string, path string, data, resp any) (*http.Response, error) {
|
||||||
|
data = c.setAuth(data)
|
||||||
|
|
||||||
|
var r io.Reader
|
||||||
|
if data != nil {
|
||||||
|
jsonData, err := json.Marshal(data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
r = bytes.NewReader(jsonData)
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequestWithContext(
|
||||||
|
ctx,
|
||||||
|
method,
|
||||||
|
c.baseURL.JoinPath(path).String(),
|
||||||
|
r,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
req.Header.Add("Content-Type", "application/json")
|
||||||
|
|
||||||
|
res, err := c.client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer res.Body.Close()
|
||||||
|
|
||||||
|
err = json.NewDecoder(res.Body).Decode(resp)
|
||||||
|
if err == io.EOF {
|
||||||
|
return res, nil
|
||||||
|
} else if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) getReq(ctx context.Context, method string, path string, data, resp any) (*http.Response, error) {
|
||||||
|
data = c.setAuth(data)
|
||||||
|
|
||||||
|
getURL := c.baseURL.JoinPath(path)
|
||||||
|
vals, err := query.Values(data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
getURL.RawQuery = vals.Encode()
|
||||||
|
|
||||||
|
req, err := http.NewRequestWithContext(
|
||||||
|
ctx,
|
||||||
|
method,
|
||||||
|
getURL.String(),
|
||||||
|
nil,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := c.client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer res.Body.Close()
|
||||||
|
|
||||||
|
err = json.NewDecoder(res.Body).Decode(resp)
|
||||||
|
if err == io.EOF {
|
||||||
|
return res, nil
|
||||||
|
} else if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func resError(res *http.Response, lr types.LemmyResponse) error {
|
||||||
|
if lr.Error.IsValid() {
|
||||||
|
return types.LemmyError{
|
||||||
|
Code: res.StatusCode,
|
||||||
|
ErrStr: lr.Error.MustValue(),
|
||||||
|
}
|
||||||
|
} else if res.StatusCode > 299 {
|
||||||
|
return types.HTTPError{
|
||||||
|
Code: res.StatusCode,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) setAuth(data any) any {
|
||||||
|
val := reflect.New(reflect.TypeOf(data))
|
||||||
|
val.Elem().Set(reflect.ValueOf(data))
|
||||||
|
|
||||||
|
authField := val.Elem().FieldByName("Auth")
|
||||||
|
if !authField.IsValid() {
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
|
authType := authField.Kind()
|
||||||
|
if authType != reflect.String {
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
|
authField.SetString(c.token)
|
||||||
|
|
||||||
|
return val.Elem().Interface()
|
||||||
|
}
|
316
person.go
Normal file
316
person.go
Normal file
@ -0,0 +1,316 @@
|
|||||||
|
package lemmy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"go.arsenm.dev/go-lemmy/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *Client) BanPerson(ctx context.Context, d types.BanPerson) (*types.BanPersonResponse, error) {
|
||||||
|
ar := &types.BanPersonResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/user/ban", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) BlockPerson(ctx context.Context, d types.BlockPerson) (*types.BlockPersonResponse, error) {
|
||||||
|
ar := &types.BlockPersonResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/user/block", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) ChangePassword(ctx context.Context, d types.ChangePassword) (*types.LoginResponse, error) {
|
||||||
|
ar := &types.LoginResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/user/change_password", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
c.token = ar.JWT.MustValue()
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) DeleteAccount(ctx context.Context, d types.DeleteAccount) (*types.DeleteAccountResponse, error) {
|
||||||
|
ar := &types.DeleteAccountResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/user/delete_account", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) BannedPersons(ctx context.Context, d types.GetBannedPersons) (*types.BannedPersonsResponse, error) {
|
||||||
|
ar := &types.BannedPersonsResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/user/banned", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Captcha(ctx context.Context, d types.GetCaptcha) (*types.CaptchaResponse, error) {
|
||||||
|
ar := &types.CaptchaResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/user/get_captcha", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) PersonDetails(ctx context.Context, d types.GetPersonDetails) (*types.GetPersonDetailsResponse, error) {
|
||||||
|
ar := &types.GetPersonDetailsResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/user", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) PersonMentions(ctx context.Context, d types.GetPersonMentions) (*types.GetPersonMentionsResponse, error) {
|
||||||
|
ar := &types.GetPersonMentionsResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/user/mention", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Replies(ctx context.Context, d types.GetReplies) (*types.GetRepliesResponse, error) {
|
||||||
|
ar := &types.GetRepliesResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/user/replies", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) ReportCount(ctx context.Context, d types.GetReportCount) (*types.GetReportCountResponse, error) {
|
||||||
|
ar := &types.GetReportCountResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/user/report_count", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) UnreadCount(ctx context.Context, d types.GetUnreadCount) (*types.GetUnreadCountResponse, error) {
|
||||||
|
ar := &types.GetUnreadCountResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/user/unread_count", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) LeaveAdmin(ctx context.Context, d types.LeaveAdmin) (*types.GetSiteResponse, error) {
|
||||||
|
ar := &types.GetSiteResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/user/leave_admin", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) MarkAllAsRead(ctx context.Context, d types.MarkAllAsRead) (*types.GetRepliesResponse, error) {
|
||||||
|
ar := &types.GetRepliesResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/user/mark_all_as_read", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) MarkCommentReplyAsRead(ctx context.Context, d types.MarkCommentReplyAsRead) (*types.CommentResponse, error) {
|
||||||
|
ar := &types.CommentResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/user/mark_as_read", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) MarkPersonMentionAsRead(ctx context.Context, d types.MarkPersonMentionAsRead) (*types.PersonMentionResponse, error) {
|
||||||
|
ar := &types.PersonMentionResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/user/mention/mark_as_read", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) PasswordChange(ctx context.Context, d types.PasswordChange) (*types.LoginResponse, error) {
|
||||||
|
ar := &types.LoginResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/user/password_change", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
c.token = ar.JWT.MustValue()
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) PasswordReset(ctx context.Context, d types.PasswordReset) (*types.PasswordResetResponse, error) {
|
||||||
|
ar := &types.PasswordResetResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/user/password_reset", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Register(ctx context.Context, d types.Register) (*types.LoginResponse, error) {
|
||||||
|
ar := &types.LoginResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/user/register", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
c.token = ar.JWT.MustValue()
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) SaveUserSettings(ctx context.Context, d types.SaveUserSettings) (*types.LoginResponse, error) {
|
||||||
|
ar := &types.LoginResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/user/save_user_settings", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
c.token = ar.JWT.MustValue()
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) VerifyEmail(ctx context.Context, d types.VerifyEmail) (*types.VerifyEmailResponse, error) {
|
||||||
|
ar := &types.VerifyEmailResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/user/verify_email", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
233
post.go
Normal file
233
post.go
Normal file
@ -0,0 +1,233 @@
|
|||||||
|
package lemmy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"go.arsenm.dev/go-lemmy/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *Client) CreatePost(ctx context.Context, d types.CreatePost) (*types.PostResponse, error) {
|
||||||
|
ar := &types.PostResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/post", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) EditPost(ctx context.Context, d types.EditPost) (*types.PostResponse, error) {
|
||||||
|
ar := &types.PostResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/post", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Post(ctx context.Context, d types.GetPost) (*types.GetPostResponse, error) {
|
||||||
|
ar := &types.GetPostResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/post", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) CreatePostReport(ctx context.Context, d types.CreatePostReport) (*types.PostReportResponse, error) {
|
||||||
|
ar := &types.PostReportResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/post/report", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) DeletePost(ctx context.Context, d types.DeletePost) (*types.PostResponse, error) {
|
||||||
|
ar := &types.PostResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/post/delete", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) RemovePost(ctx context.Context, d types.RemovePost) (*types.PostResponse, error) {
|
||||||
|
ar := &types.PostResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/post/remove", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Posts(ctx context.Context, d types.GetPosts) (*types.GetPostsResponse, error) {
|
||||||
|
ar := &types.GetPostsResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/post/list", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) SiteMetadata(ctx context.Context, d types.GetSiteMetadata) (*types.GetSiteMetadataResponse, error) {
|
||||||
|
ar := &types.GetSiteMetadataResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/post/site_metadata", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) LikePost(ctx context.Context, d types.CreatePostLike) (*types.PostResponse, error) {
|
||||||
|
ar := &types.PostResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/post/like", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) ListPostReports(ctx context.Context, d types.ListPostReports) (*types.ListPostReportsResponse, error) {
|
||||||
|
ar := &types.ListPostReportsResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/post/report/list", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) LockPost(ctx context.Context, d types.LockPost) (*types.PostResponse, error) {
|
||||||
|
ar := &types.PostResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/post/lock", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) MarkPostAsRead(ctx context.Context, d types.MarkPostAsRead) (*types.PostResponse, error) {
|
||||||
|
ar := &types.PostResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/post/mark_as_read", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) ResolvePostReport(ctx context.Context, d types.ResolvePostReport) (*types.PostReportResponse, error) {
|
||||||
|
ar := &types.PostReportResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/post/report/resolve", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) SavePost(ctx context.Context, d types.SavePost) (*types.PostResponse, error) {
|
||||||
|
ar := &types.PostResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/post/save", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) StickyPost(ctx context.Context, d types.StickyPost) (*types.PostResponse, error) {
|
||||||
|
ar := &types.PostResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/post/sticky", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
128
privateMessage.go
Normal file
128
privateMessage.go
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
package lemmy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"go.arsenm.dev/go-lemmy/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *Client) CreatePrivateMessage(ctx context.Context, d types.CreatePrivateMessage) (*types.PrivateMessageResponse, error) {
|
||||||
|
ar := &types.PrivateMessageResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/private_message", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) CreatePrivateMessageReport(ctx context.Context, d types.CreatePrivateMessageReport) (*types.PrivateMessageReportResponse, error) {
|
||||||
|
ar := &types.PrivateMessageReportResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/private_message/report", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) DeletePrivateMessage(ctx context.Context, d types.DeletePrivateMessage) (*types.PrivateMessageResponse, error) {
|
||||||
|
ar := &types.PrivateMessageResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/private_message/delete", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) EditPrivateMessage(ctx context.Context, d types.EditPrivateMessage) (*types.PrivateMessageResponse, error) {
|
||||||
|
ar := &types.PrivateMessageResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/private_message", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) PrivateMessages(ctx context.Context, d types.GetPrivateMessages) (*types.PrivateMessagesResponse, error) {
|
||||||
|
ar := &types.PrivateMessagesResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/private_message/list", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) PrivateMessageReports(ctx context.Context, d types.ListPrivateMessageReports) (*types.ListPrivateMessageReportsResponse, error) {
|
||||||
|
ar := &types.ListPrivateMessageReportsResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/private_message/report/list", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) MarkPrivateMessageAsRead(ctx context.Context, d types.MarkPrivateMessageAsRead) (*types.PrivateMessageResponse, error) {
|
||||||
|
ar := &types.PrivateMessageResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/private_message/mark_as_read", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) ResolvePrivateMessageReport(ctx context.Context, d types.ResolvePrivateMessageReport) (*types.PrivateMessageReportResponse, error) {
|
||||||
|
ar := &types.PrivateMessageReportResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/private_message/report/resolve", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
53
site.go
Normal file
53
site.go
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
package lemmy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"go.arsenm.dev/go-lemmy/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *Client) CreateSite(ctx context.Context, d types.CreateSite) (*types.SiteResponse, error) {
|
||||||
|
ar := &types.SiteResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPost, "/site", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) EditSite(ctx context.Context, d types.EditSite) (*types.SiteResponse, error) {
|
||||||
|
ar := &types.SiteResponse{}
|
||||||
|
res, err := c.req(ctx, http.MethodPut, "/site", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Site(ctx context.Context, d types.GetSite) (*types.GetSiteResponse, error) {
|
||||||
|
ar := &types.GetSiteResponse{}
|
||||||
|
res, err := c.getReq(ctx, http.MethodGet, "/site", d, &ar)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = resError(res, ar.LemmyResponse)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ar, nil
|
||||||
|
}
|
55
types/aggregates.go
Normal file
55
types/aggregates.go
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
type PersonAggregates struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
PersonID int `json:"person_id,omitempty" url:"person_id,omitempty"`
|
||||||
|
PostCount int `json:"post_count,omitempty" url:"post_count,omitempty"`
|
||||||
|
PostScore int `json:"post_score,omitempty" url:"post_score,omitempty"`
|
||||||
|
CommentCount int `json:"comment_count,omitempty" url:"comment_count,omitempty"`
|
||||||
|
CommentScore int `json:"comment_score,omitempty" url:"comment_score,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SiteAggregates struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
SiteID int `json:"site_id,omitempty" url:"site_id,omitempty"`
|
||||||
|
Users int `json:"users,omitempty" url:"users,omitempty"`
|
||||||
|
Posts int `json:"posts,omitempty" url:"posts,omitempty"`
|
||||||
|
Comments int `json:"comments,omitempty" url:"comments,omitempty"`
|
||||||
|
Communities int `json:"communities,omitempty" url:"communities,omitempty"`
|
||||||
|
UsersActiveDay int `json:"users_active_day,omitempty" url:"users_active_day,omitempty"`
|
||||||
|
UsersActiveWeek int `json:"users_active_week,omitempty" url:"users_active_week,omitempty"`
|
||||||
|
UsersActiveMonth int `json:"users_active_month,omitempty" url:"users_active_month,omitempty"`
|
||||||
|
UsersActiveHalfYear int `json:"users_active_half_year,omitempty" url:"users_active_half_year,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PostAggregates struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Comments int `json:"comments,omitempty" url:"comments,omitempty"`
|
||||||
|
Score int `json:"score,omitempty" url:"score,omitempty"`
|
||||||
|
Upvotes int `json:"upvotes,omitempty" url:"upvotes,omitempty"`
|
||||||
|
Downvotes int `json:"downvotes,omitempty" url:"downvotes,omitempty"`
|
||||||
|
NewestCommentTimeNecro string `json:"newest_comment_time_necro,omitempty" url:"newest_comment_time_necro,omitempty"`
|
||||||
|
NewestCommentTime string `json:"newest_comment_time,omitempty" url:"newest_comment_time,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommunityAggregates struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Subscribers int `json:"subscribers,omitempty" url:"subscribers,omitempty"`
|
||||||
|
Posts int `json:"posts,omitempty" url:"posts,omitempty"`
|
||||||
|
Comments int `json:"comments,omitempty" url:"comments,omitempty"`
|
||||||
|
UsersActiveDay int `json:"users_active_day,omitempty" url:"users_active_day,omitempty"`
|
||||||
|
UsersActiveWeek int `json:"users_active_week,omitempty" url:"users_active_week,omitempty"`
|
||||||
|
UsersActiveMonth int `json:"users_active_month,omitempty" url:"users_active_month,omitempty"`
|
||||||
|
UsersActiveHalfYear int `json:"users_active_half_year,omitempty" url:"users_active_half_year,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommentAggregates struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Score int `json:"score,omitempty" url:"score,omitempty"`
|
||||||
|
Upvotes int `json:"upvotes,omitempty" url:"upvotes,omitempty"`
|
||||||
|
Downvotes int `json:"downvotes,omitempty" url:"downvotes,omitempty"`
|
||||||
|
ChildCount int `json:"child_count,omitempty" url:"child_count,omitempty"`
|
||||||
|
}
|
105
types/comment.go
Normal file
105
types/comment.go
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
type CreateComment struct {
|
||||||
|
Content string `json:"content,omitempty" url:"content,omitempty"`
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
ParentID Optional[int] `json:"parent_id,omitempty" url:"parent_id,omitempty"`
|
||||||
|
LanguageID Optional[int] `json:"language_id,omitempty" url:"language_id,omitempty"`
|
||||||
|
FormID Optional[string] `json:"form_id,omitempty" url:"form_id,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetComment struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type EditComment struct {
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Content Optional[string] `json:"content,omitempty" url:"content,omitempty"`
|
||||||
|
Distinguished Optional[bool] `json:"distinguished,omitempty" url:"distinguished,omitempty"`
|
||||||
|
LanguageID Optional[int] `json:"language_id,omitempty" url:"language_id,omitempty"`
|
||||||
|
FormID Optional[string] `json:"form_id,omitempty" url:"form_id,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DeleteComment struct {
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Deleted bool `json:"deleted,omitempty" url:"deleted,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RemoveComment struct {
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Removed bool `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SaveComment struct {
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Save bool `json:"save,omitempty" url:"save,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommentResponse struct {
|
||||||
|
CommentView CommentView `json:"comment_view,omitempty" url:"comment_view,omitempty"`
|
||||||
|
RecipientIDs []int `json:"recipient_i_ds,omitempty" url:"recipient_i_ds,omitempty"`
|
||||||
|
FormID Optional[string] `json:"form_id,omitempty" url:"form_id,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type CreateCommentLike struct {
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Score int16 `json:"score,omitempty" url:"score,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetComments struct {
|
||||||
|
Type Optional[ListingType] `json:"type,omitempty" url:"type,omitempty"`
|
||||||
|
Sort Optional[CommentSortType] `json:"sort,omitempty" url:"sort,omitempty"`
|
||||||
|
MaxDepth Optional[int] `json:"max_depth,omitempty" url:"max_depth,omitempty"`
|
||||||
|
Page Optional[int] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Limit Optional[int] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
CommunityID Optional[int] `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
CommunityName Optional[string] `json:"community_name,omitempty" url:"community_name,omitempty"`
|
||||||
|
PostID Optional[int] `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
ParentID Optional[int] `json:"parent_id,omitempty" url:"parent_id,omitempty"`
|
||||||
|
SavedOnly Optional[bool] `json:"saved_only,omitempty" url:"saved_only,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetCommentsResponse struct {
|
||||||
|
Comments []CommentView `json:"comments,omitempty" url:"comments,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type CreateCommentReport struct {
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Reason string `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommentReportResponse struct {
|
||||||
|
CommentReportView CommentReportView `json:"comment_report_view,omitempty" url:"comment_report_view,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResolveCommentReport struct {
|
||||||
|
ReportID int `json:"report_id,omitempty" url:"report_id,omitempty"`
|
||||||
|
Resolved bool `json:"resolved,omitempty" url:"resolved,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListCommentReports struct {
|
||||||
|
Page Optional[int] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Limit Optional[int] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
UnresolvedOnly Optional[bool] `json:"unresolved_only,omitempty" url:"unresolved_only,omitempty"`
|
||||||
|
CommunityID Optional[int] `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListCommentReportsResponse struct {
|
||||||
|
CommentReports []CommentReportView `json:"comment_reports,omitempty" url:"comment_reports,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
131
types/community.go
Normal file
131
types/community.go
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
type GetCommunity struct {
|
||||||
|
ID Optional[int] `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
Name Optional[string] `json:"name,omitempty" url:"name,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetCommunityResponse struct {
|
||||||
|
CommunityView CommunityView `json:"community_view,omitempty" url:"community_view,omitempty"`
|
||||||
|
Site Optional[Site] `json:"site,omitempty" url:"site,omitempty"`
|
||||||
|
Moderators []CommunityModeratorView `json:"moderators,omitempty" url:"moderators,omitempty"`
|
||||||
|
Online uint `json:"online,omitempty" url:"online,omitempty"`
|
||||||
|
DiscussionLanguages []int `json:"discussion_languages,omitempty" url:"discussion_languages,omitempty"`
|
||||||
|
DefaultPostLanguage Optional[int] `json:"default_post_language,omitempty" url:"default_post_language,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type CreateCommunity struct {
|
||||||
|
Name string `json:"name,omitempty" url:"name,omitempty"`
|
||||||
|
Title string `json:"title,omitempty" url:"title,omitempty"`
|
||||||
|
Description Optional[string] `json:"description,omitempty" url:"description,omitempty"`
|
||||||
|
Icon Optional[string] `json:"icon,omitempty" url:"icon,omitempty"`
|
||||||
|
Banner Optional[string] `json:"banner,omitempty" url:"banner,omitempty"`
|
||||||
|
NSFW Optional[bool] `json:"nsfw,omitempty" url:"nsfw,omitempty"`
|
||||||
|
PostingRestrictedToMods Optional[bool] `json:"posting_restricted_to_mods,omitempty" url:"posting_restricted_to_mods,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommunityResponse struct {
|
||||||
|
CommunityView CommunityView `json:"community_view,omitempty" url:"community_view,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListCommunities struct {
|
||||||
|
Type Optional[ListingType] `json:"type,omitempty" url:"type,omitempty"`
|
||||||
|
Sort Optional[SortType] `json:"sort,omitempty" url:"sort,omitempty"`
|
||||||
|
Page Optional[int64] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Limit Optional[int64] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListCommunitiesResponse struct {
|
||||||
|
Communities []CommunityView `json:"communities,omitempty" url:"communities,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type BanFromCommunity struct {
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
PersonID int `json:"person_id,omitempty" url:"person_id,omitempty"`
|
||||||
|
Ban bool `json:"ban,omitempty" url:"ban,omitempty"`
|
||||||
|
RemoveData Optional[bool] `json:"remove_data,omitempty" url:"remove_data,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Expires Optional[int64] `json:"expires,omitempty" url:"expires,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type BanFromCommunityResponse struct {
|
||||||
|
PersonView PersonViewSafe `json:"person_view,omitempty" url:"person_view,omitempty"`
|
||||||
|
Banned bool `json:"banned,omitempty" url:"banned,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type AddModToCommunity struct {
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
PersonID int `json:"person_id,omitempty" url:"person_id,omitempty"`
|
||||||
|
Added bool `json:"added,omitempty" url:"added,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AddModToCommunityResponse struct {
|
||||||
|
Moderators []CommunityModeratorView `json:"moderators,omitempty" url:"moderators,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type EditCommunity struct {
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Title Optional[string] `json:"title,omitempty" url:"title,omitempty"`
|
||||||
|
Description Optional[string] `json:"description,omitempty" url:"description,omitempty"`
|
||||||
|
Icon Optional[string] `json:"icon,omitempty" url:"icon,omitempty"`
|
||||||
|
Banner Optional[string] `json:"banner,omitempty" url:"banner,omitempty"`
|
||||||
|
NSFW Optional[bool] `json:"nsfw,omitempty" url:"nsfw,omitempty"`
|
||||||
|
PostingRestrictedToMods Optional[bool] `json:"posting_restricted_to_mods,omitempty" url:"posting_restricted_to_mods,omitempty"`
|
||||||
|
DiscussionLanguages Optional[[]int] `json:"discussion_languages,omitempty" url:"discussion_languages,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HideCommunity struct {
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Hidden bool `json:"hidden,omitempty" url:"hidden,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DeleteCommunity struct {
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Deleted bool `json:"deleted,omitempty" url:"deleted,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RemoveCommunity struct {
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Removed bool `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Expires Optional[int64] `json:"expires,omitempty" url:"expires,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type FollowCommunity struct {
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Follow bool `json:"follow,omitempty" url:"follow,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type BlockCommunity struct {
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Block bool `json:"block,omitempty" url:"block,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type BlockCommunityResponse struct {
|
||||||
|
CommunityView CommunityView `json:"community_view,omitempty" url:"community_view,omitempty"`
|
||||||
|
Blocked bool `json:"blocked,omitempty" url:"blocked,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type TransferCommunity struct {
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
PersonID int `json:"person_id,omitempty" url:"person_id,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
103
types/optional.go
Normal file
103
types/optional.go
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
var ErrOptionalEmpty = errors.New("optional value is empty")
|
||||||
|
|
||||||
|
type Optional[T any] struct {
|
||||||
|
value *T
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewOptional[T any](v T) Optional[T] {
|
||||||
|
return Optional[T]{value: &v}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewOptionalPtr[T any](v *T) Optional[T] {
|
||||||
|
return Optional[T]{value: v}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewOptionalNil[T any]() Optional[T] {
|
||||||
|
return Optional[T]{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Optional[T]) Set(v T) Optional[T] {
|
||||||
|
o.value = &v
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Optional[T]) SetPtr(v *T) Optional[T] {
|
||||||
|
o.value = v
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Optional[T]) SetNil() Optional[T] {
|
||||||
|
o.value = nil
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Optional[T]) IsValid() bool {
|
||||||
|
return o.value != nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Optional[T]) MustValue() T {
|
||||||
|
if o.value == nil {
|
||||||
|
panic("optional value is nil")
|
||||||
|
}
|
||||||
|
return *o.value
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Optional[T]) Value() (T, error) {
|
||||||
|
if o.value != nil {
|
||||||
|
return *o.value, ErrOptionalEmpty
|
||||||
|
}
|
||||||
|
return *new(T), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Optional[T]) ValueOr(fallback T) T {
|
||||||
|
if o.value != nil {
|
||||||
|
return *o.value
|
||||||
|
}
|
||||||
|
return fallback
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Optional[T]) MarshalJSON() ([]byte, error) {
|
||||||
|
return json.Marshal(o.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *Optional[T]) UnmarshalJSON(b []byte) error {
|
||||||
|
if bytes.Equal(b, []byte("null")) {
|
||||||
|
o.value = nil
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
o.value = new(T)
|
||||||
|
return json.Unmarshal(b, o.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Optional[T]) EncodeValues(key string, v *url.Values) error {
|
||||||
|
s := o.String()
|
||||||
|
if s != "<nil>" {
|
||||||
|
v.Set(key, s)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Optional[T]) String() string {
|
||||||
|
if o.value == nil {
|
||||||
|
return "<nil>"
|
||||||
|
}
|
||||||
|
return fmt.Sprint(*o.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o Optional[T]) GoString() string {
|
||||||
|
if o.value == nil {
|
||||||
|
return "nil"
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%#v", *o.value)
|
||||||
|
}
|
169
types/others.go
Normal file
169
types/others.go
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
/*type SiteMetadata struct {
|
||||||
|
Title Optional[string] `json:"title,omitempty" url:"title,omitempty"`
|
||||||
|
Description Optional[string] `json:"description,omitempty" url:"description,omitempty"`
|
||||||
|
Image Optional[string] `json:"image,omitempty" url:"image,omitempty"`
|
||||||
|
HTML Optional[string] `json:"html,omitempty" url:"html,omitempty"`
|
||||||
|
}*/
|
||||||
|
|
||||||
|
type UserOperation int
|
||||||
|
|
||||||
|
const (
|
||||||
|
LoginOp UserOperation = iota
|
||||||
|
RegisterOp
|
||||||
|
GetCaptchaOp
|
||||||
|
CreateCommunityOp
|
||||||
|
CreatePostOp
|
||||||
|
ListCommunitiesOp
|
||||||
|
GetPostOp
|
||||||
|
GetCommunityOp
|
||||||
|
CreateCommentOp
|
||||||
|
EditCommentOp
|
||||||
|
DeleteCommentOp
|
||||||
|
RemoveCommentOp
|
||||||
|
SaveCommentOp
|
||||||
|
CreateCommentLikeOp
|
||||||
|
GetPostsOp
|
||||||
|
CreatePostLikeOp
|
||||||
|
EditPostOp
|
||||||
|
DeletePostOp
|
||||||
|
RemovePostOp
|
||||||
|
LockPostOp
|
||||||
|
StickyPostOp
|
||||||
|
MarkPostAsReadOp
|
||||||
|
SavePostOp
|
||||||
|
EditCommunityOp
|
||||||
|
DeleteCommunityOp
|
||||||
|
RemoveCommunityOp
|
||||||
|
FollowCommunityOp
|
||||||
|
GetPersonDetailsOp
|
||||||
|
GetRepliesOp
|
||||||
|
GetPersonMentionsOp
|
||||||
|
MarkPersonMentionAsReadOp
|
||||||
|
MarkCommentReplyAsReadOp
|
||||||
|
GetModlogOp
|
||||||
|
BanFromCommunityOp
|
||||||
|
AddModToCommunityOp
|
||||||
|
CreateSiteOp
|
||||||
|
EditSiteOp
|
||||||
|
GetSiteOp
|
||||||
|
AddAdminOp
|
||||||
|
GetUnreadRegistrationApplicationCountOp
|
||||||
|
ListRegistrationApplicationsOp
|
||||||
|
ApproveRegistrationApplicationOp
|
||||||
|
BanPersonOp
|
||||||
|
GetBannedPersonsOp
|
||||||
|
SearchOp
|
||||||
|
ResolveObjectOp
|
||||||
|
MarkAllAsReadOp
|
||||||
|
SaveUserSettingsOp
|
||||||
|
TransferCommunityOp
|
||||||
|
LeaveAdminOp
|
||||||
|
DeleteAccountOp
|
||||||
|
PasswordResetOp
|
||||||
|
PasswordChangeOp
|
||||||
|
CreatePrivateMessageOp
|
||||||
|
EditPrivateMessageOp
|
||||||
|
DeletePrivateMessageOp
|
||||||
|
MarkPrivateMessageAsReadOp
|
||||||
|
CreatePrivateMessageReportOp
|
||||||
|
ResolvePrivateMessageReportOp
|
||||||
|
ListPrivateMessageReportsOp
|
||||||
|
GetPrivateMessagesOp
|
||||||
|
UserJoinOp
|
||||||
|
GetCommentsOp
|
||||||
|
PostJoinOp
|
||||||
|
CommunityJoinOp
|
||||||
|
ChangePasswordOp
|
||||||
|
GetSiteMetadataOp
|
||||||
|
BlockCommunityOp
|
||||||
|
BlockPersonOp
|
||||||
|
PurgePersonOp
|
||||||
|
PurgeCommunityOp
|
||||||
|
PurgePostOp
|
||||||
|
PurgeCommentOp
|
||||||
|
CreateCommentReportOp
|
||||||
|
ResolveCommentReportOp
|
||||||
|
ListCommentReportsOp
|
||||||
|
CreatePostReportOp
|
||||||
|
ResolvePostReportOp
|
||||||
|
ListPostReportsOp
|
||||||
|
GetReportCountOp
|
||||||
|
GetUnreadCountOp
|
||||||
|
VerifyEmailOp
|
||||||
|
)
|
||||||
|
|
||||||
|
type SortType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
Active SortType = "Active"
|
||||||
|
Hot SortType = "Hot"
|
||||||
|
New SortType = "New"
|
||||||
|
Old SortType = "Old"
|
||||||
|
TopDay SortType = "TopDay"
|
||||||
|
TopWeek SortType = "TopWeek"
|
||||||
|
TopMonth SortType = "TopMonth"
|
||||||
|
TopYear SortType = "TopYear"
|
||||||
|
TopAll SortType = "TopAll"
|
||||||
|
MostComments SortType = "MostComments"
|
||||||
|
NewComments SortType = "NewComments"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CommentSortType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
CommentSortHot CommentSortType = "Hot"
|
||||||
|
CommentSortTop CommentSortType = "Top"
|
||||||
|
CommentSortNew CommentSortType = "New"
|
||||||
|
CommentSortOld CommentSortType = "Old"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ListingType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
ListingAll ListingType = "All"
|
||||||
|
ListingLocal ListingType = "Local"
|
||||||
|
ListingSubscribed ListingType = "Subscribed"
|
||||||
|
ListingCommunity ListingType = "Community"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SearchType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
SearchAll SearchType = "All"
|
||||||
|
SearchComments SearchType = "Comments"
|
||||||
|
SearchPosts SearchType = "Posts"
|
||||||
|
SearchCommunities SearchType = "Communities"
|
||||||
|
SearchUsers SearchType = "Users"
|
||||||
|
SearchURL SearchType = "URL"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ModlogActionType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
ModlogAll ModlogActionType = "All"
|
||||||
|
ModlogModRemovePost ModlogActionType = "ModRemovePost"
|
||||||
|
ModlogModLockPost ModlogActionType = "ModLockPost"
|
||||||
|
ModlogModStickyPost ModlogActionType = "ModStickyPost"
|
||||||
|
ModlogModRemoveComment ModlogActionType = "ModRemoveComment"
|
||||||
|
ModlogModRemoveCommunity ModlogActionType = "ModRemoveCommunity"
|
||||||
|
ModlogModBanFromCommunity ModlogActionType = "ModBanFromCommunity"
|
||||||
|
ModlogModAddCommunity ModlogActionType = "ModAddCommunity"
|
||||||
|
ModlogModTransferCommunity ModlogActionType = "ModTransferCommunity"
|
||||||
|
ModlogModAdd ModlogActionType = "ModAdd"
|
||||||
|
ModlogModBan ModlogActionType = "ModBan"
|
||||||
|
ModlogModHideCommunity ModlogActionType = "ModHideCommunity"
|
||||||
|
ModlogAdminPurgePerson ModlogActionType = "AdminPurgePerson"
|
||||||
|
ModlogAdminPurgeCommunity ModlogActionType = "AdminPurgeCommunity"
|
||||||
|
ModlogAdminPurgePost ModlogActionType = "AdminPurgePost"
|
||||||
|
ModlogAdminPurgeComment ModlogActionType = "AdminPurgeComment"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SubscribedType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
Subscribed SubscribedType = "Subscribed"
|
||||||
|
NotSubscribed SubscribedType = "NotSubscribed"
|
||||||
|
Pending SubscribedType = "Pending"
|
||||||
|
)
|
243
types/person.go
Normal file
243
types/person.go
Normal file
@ -0,0 +1,243 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
type Login struct {
|
||||||
|
Password string `json:"password,omitempty" url:"password,omitempty"`
|
||||||
|
UsernameOrEmail string `json:"username_or_email,omitempty" url:"username_or_email,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type LoginResponse struct {
|
||||||
|
JWT Optional[string] `json:"jwt,omitempty" url:"jwt,omitempty"`
|
||||||
|
RegistrationCreated bool `json:"registration_created,omitempty" url:"registration_created,omitempty"`
|
||||||
|
VeriftEmailSent bool `json:"verify_email_sent,omitempty" url:"verify_email_sent,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type Register struct {
|
||||||
|
Username string `json:"username,omitempty" url:"username,omitempty"`
|
||||||
|
Password string `json:"password,omitempty" url:"password,omitempty"`
|
||||||
|
PasswordVerify string `json:"password_verify,omitempty" url:"password_verify,omitempty"`
|
||||||
|
ShowNSFW bool `json:"show_nsfw,omitempty" url:"show_nsfw,omitempty"`
|
||||||
|
Email Optional[string] `json:"email,omitempty" url:"email,omitempty"`
|
||||||
|
CaptchaUuid Optional[string] `json:"captcha_uuid,omitempty" url:"captcha_uuid,omitempty"`
|
||||||
|
CaptchaAnswer Optional[string] `json:"captcha_answer,omitempty" url:"captcha_answer,omitempty"`
|
||||||
|
Honeypot Optional[string] `json:"honeypot,omitempty" url:"honeypot,omitempty"`
|
||||||
|
Answer Optional[string] `json:"answer,omitempty" url:"answer,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetCaptcha struct{}
|
||||||
|
|
||||||
|
type CaptchaResponse struct {
|
||||||
|
Png string `json:"png,omitempty" url:"png,omitempty"`
|
||||||
|
Wav string `json:"wav,omitempty" url:"wav,omitempty"`
|
||||||
|
Uuid string `json:"uuid,omitempty" url:"uuid,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type SaveUserSettings struct {
|
||||||
|
ShowNSFW Optional[bool] `json:"show_nsfw,omitempty" url:"show_nsfw,omitempty"`
|
||||||
|
ShowScores Optional[bool] `json:"show_scores,omitempty" url:"show_scores,omitempty"`
|
||||||
|
Theme Optional[string] `json:"theme,omitempty" url:"theme,omitempty"`
|
||||||
|
DefaultSortType Optional[int16] `json:"default_sort_type,omitempty" url:"default_sort_type,omitempty"`
|
||||||
|
DefaultListingType Optional[int16] `json:"default_listing_type,omitempty" url:"default_listing_type,omitempty"`
|
||||||
|
InterfaceLanguage Optional[string] `json:"interface_language,omitempty" url:"interface_language,omitempty"`
|
||||||
|
Avatar Optional[string] `json:"avatar,omitempty" url:"avatar,omitempty"`
|
||||||
|
Banner Optional[string] `json:"banner,omitempty" url:"banner,omitempty"`
|
||||||
|
DisplayName Optional[string] `json:"display_name,omitempty" url:"display_name,omitempty"`
|
||||||
|
Email Optional[string] `json:"email,omitempty" url:"email,omitempty"`
|
||||||
|
Bio Optional[string] `json:"bio,omitempty" url:"bio,omitempty"`
|
||||||
|
MatrixUserID Optional[string] `json:"matrix_user_id,omitempty" url:"matrix_user_id,omitempty"`
|
||||||
|
ShowAvatars Optional[bool] `json:"show_avatars,omitempty" url:"show_avatars,omitempty"`
|
||||||
|
SendNotificationsToEmail Optional[bool] `json:"send_notifications_to_email,omitempty" url:"send_notifications_to_email,omitempty"`
|
||||||
|
BotAccount Optional[bool] `json:"bot_account,omitempty" url:"bot_account,omitempty"`
|
||||||
|
ShowBotAccounts Optional[bool] `json:"show_bot_accounts,omitempty" url:"show_bot_accounts,omitempty"`
|
||||||
|
ShowReadPosts Optional[bool] `json:"show_read_posts,omitempty" url:"show_read_posts,omitempty"`
|
||||||
|
ShowNewPostNotifs Optional[bool] `json:"show_new_post_notifs,omitempty" url:"show_new_post_notifs,omitempty"`
|
||||||
|
DiscussionLanguages Optional[[]int] `json:"discussion_languages,omitempty" url:"discussion_languages,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ChangePassword struct {
|
||||||
|
NewPassword string `json:"new_password,omitempty" url:"new_password,omitempty"`
|
||||||
|
NewPasswordVerify string `json:"new_password_verify,omitempty" url:"new_password_verify,omitempty"`
|
||||||
|
OldPassword string `json:"old_password,omitempty" url:"old_password,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPersonDetails struct {
|
||||||
|
PersonID Optional[int] `json:"person_id,omitempty" url:"person_id,omitempty"`
|
||||||
|
Username Optional[string] `json:"username,omitempty" url:"username,omitempty"`
|
||||||
|
Sort Optional[SortType] `json:"sort,omitempty" url:"sort,omitempty"`
|
||||||
|
Page Optional[int64] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Limit Optional[int64] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
CommunityID Optional[int] `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
SavedOnly Optional[bool] `json:"saved_only,omitempty" url:"saved_only,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPersonDetailsResponse struct {
|
||||||
|
PersonView PersonViewSafe `json:"person_view,omitempty" url:"person_view,omitempty"`
|
||||||
|
Comments []CommentView `json:"comments,omitempty" url:"comments,omitempty"`
|
||||||
|
Posts []PostView `json:"posts,omitempty" url:"posts,omitempty"`
|
||||||
|
Moderates []CommunityModeratorView `json:"moderates,omitempty" url:"moderates,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetReplies struct {
|
||||||
|
Limit Optional[int] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
Page Optional[int] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Sort Optional[CommentSortType] `json:"sort,omitempty" url:"sort,omitempty"`
|
||||||
|
UnreadOnly Optional[bool] `json:"unread_only,omitempty" url:"unread_only,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRepliesResponse struct {
|
||||||
|
Replies []CommentReplyView `json:"replies,omitempty" url:"replies,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPersonMentionsResponse struct {
|
||||||
|
Mentions []PersonMentionView `json:"mentions,omitempty" url:"mentions,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type MarkAllAsRead struct {
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AddAdmin struct {
|
||||||
|
PersonID int `json:"person_id,omitempty" url:"person_id,omitempty"`
|
||||||
|
Added bool `json:"added,omitempty" url:"added,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AddAdminResponse struct {
|
||||||
|
Admins []PersonViewSafe `json:"admins,omitempty" url:"admins,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type BanPerson struct {
|
||||||
|
PersonID int `json:"person_id,omitempty" url:"person_id,omitempty"`
|
||||||
|
Ban bool `json:"ban,omitempty" url:"ban,omitempty"`
|
||||||
|
RemoveData Optional[bool] `json:"remove_data,omitempty" url:"remove_data,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Expires Optional[int64] `json:"expires,omitempty" url:"expires,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetBannedPersons struct {
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type BanPersonResponse struct {
|
||||||
|
PersonView PersonViewSafe `json:"person_view,omitempty" url:"person_view,omitempty"`
|
||||||
|
Banned bool `json:"banned,omitempty" url:"banned,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type BlockPerson struct {
|
||||||
|
PersonID int `json:"person_id,omitempty" url:"person_id,omitempty"`
|
||||||
|
Block bool `json:"block,omitempty" url:"block,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPersonMentions struct {
|
||||||
|
Sort Optional[CommentSortType] `json:"sort,omitempty" url:"sort,omitempty"`
|
||||||
|
Page Optional[int64] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Limit Optional[int64] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
UnreadOnly Optional[bool] `json:"unread_only,omitempty" url:"unread_only,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type MarkPersonMentionAsRead struct {
|
||||||
|
PersonMentionID int `json:"person_mention_id,omitempty" url:"person_mention_id,omitempty"`
|
||||||
|
Read bool `json:"read,omitempty" url:"read,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PersonMentionResponse struct {
|
||||||
|
PersonMentionView PersonMentionView `json:"person_mention_view,omitempty" url:"person_mention_view,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type MarkCommentReplyAsRead struct {
|
||||||
|
CommentReplyID int `json:"comment_reply_id,omitempty" url:"comment_reply_id,omitempty"`
|
||||||
|
Read bool `json:"read,omitempty" url:"read,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommentReplyResponse struct {
|
||||||
|
CommentReplyView CommentReplyView `json:"comment_reply_view,omitempty" url:"comment_reply_view,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type DeleteAccount struct {
|
||||||
|
Password string `json:"password,omitempty" url:"password,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DeleteAccountResponse struct {
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type PasswordReset struct {
|
||||||
|
Email string `json:"email,omitempty" url:"email,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PasswordResetResponse struct {
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type PasswordChangeAfterReset struct {
|
||||||
|
Token string `json:"token,omitempty" url:"token,omitempty"`
|
||||||
|
Password string `json:"password,omitempty" url:"password,omitempty"`
|
||||||
|
PasswordVerify string `json:"password_verify,omitempty" url:"password_verify,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetReportCount struct {
|
||||||
|
CommunityID Optional[int] `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetReportCountResponse struct {
|
||||||
|
CommunityID Optional[int] `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
CommentReports int64 `json:"comment_reports,omitempty" url:"comment_reports,omitempty"`
|
||||||
|
PostReports int64 `json:"post_reports,omitempty" url:"post_reports,omitempty"`
|
||||||
|
PrivateMessageReports Optional[int64] `json:"private_message_reports,omitempty" url:"private_message_reports,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetUnreadCount struct {
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetUnreadCountResponse struct {
|
||||||
|
Replies int64 `json:"replies,omitempty" url:"replies,omitempty"`
|
||||||
|
Mentions int64 `json:"mentions,omitempty" url:"mentions,omitempty"`
|
||||||
|
PrivateMessages int64 `json:"private_messages,omitempty" url:"private_messages,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type VerifyEmail struct {
|
||||||
|
Token string `json:"token,omitempty" url:"token,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type VerifyEmailResponse struct {
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type BlockPersonResponse struct {
|
||||||
|
Blocked bool `json:"blocked,omitempty" url:"blocked,omitempty"`
|
||||||
|
PersonView PersonViewSafe `json:"person_view,omitempty" url:"person_view,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type BannedPersonsResponse struct {
|
||||||
|
Banned []PersonViewSafe `json:"banned,omitempty" url:"banned,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type PasswordChange struct {
|
||||||
|
Password string `json:"password,omitempty" url:"password,omitempty"`
|
||||||
|
PasswordVerify string `json:"password_verify,omitempty" url:"password_verify,omitempty"`
|
||||||
|
Token string `json:"token,omitempty" url:"token,omitempty"`
|
||||||
|
}
|
146
types/post.go
Normal file
146
types/post.go
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
type CreatePost struct {
|
||||||
|
Name string `json:"name,omitempty" url:"name,omitempty"`
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
URL Optional[string] `json:"url,omitempty" url:"url,omitempty"`
|
||||||
|
Body Optional[string] `json:"body,omitempty" url:"body,omitempty"`
|
||||||
|
Honeypot Optional[string] `json:"honeypot,omitempty" url:"honeypot,omitempty"`
|
||||||
|
NSFW Optional[bool] `json:"nsfw,omitempty" url:"nsfw,omitempty"`
|
||||||
|
LanguageID Optional[int] `json:"language_id,omitempty" url:"language_id,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PostResponse struct {
|
||||||
|
PostView PostView `json:"post_view,omitempty" url:"post_view,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPost struct {
|
||||||
|
ID Optional[int] `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
CommentID Optional[int] `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPostResponse struct {
|
||||||
|
PostView PostView `json:"post_view,omitempty" url:"post_view,omitempty"`
|
||||||
|
CommunityView CommunityView `json:"community_view,omitempty" url:"community_view,omitempty"`
|
||||||
|
Moderators []CommunityModeratorView `json:"moderators,omitempty" url:"moderators,omitempty"`
|
||||||
|
Online uint `json:"online,omitempty" url:"online,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPosts struct {
|
||||||
|
Type Optional[ListingType] `json:"type,omitempty" url:"type,omitempty"`
|
||||||
|
Sort Optional[SortType] `json:"sort,omitempty" url:"sort,omitempty"`
|
||||||
|
Page Optional[int64] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Limit Optional[int64] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
CommunityID Optional[int] `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
CommunityName Optional[string] `json:"community_name,omitempty" url:"community_name,omitempty"`
|
||||||
|
SavedOnly Optional[bool] `json:"saved_only,omitempty" url:"saved_only,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPostsResponse struct {
|
||||||
|
Posts []PostView `json:"posts,omitempty" url:"posts,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type CreatePostLike struct {
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Score int16 `json:"score,omitempty" url:"score,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type EditPost struct {
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Name Optional[string] `json:"name,omitempty" url:"name,omitempty"`
|
||||||
|
URL Optional[string] `json:"url,omitempty" url:"url,omitempty"`
|
||||||
|
Body Optional[string] `json:"body,omitempty" url:"body,omitempty"`
|
||||||
|
NSFW Optional[bool] `json:"nsfw,omitempty" url:"nsfw,omitempty"`
|
||||||
|
LanguageID Optional[int] `json:"language_id,omitempty" url:"language_id,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DeletePost struct {
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Deleted bool `json:"deleted,omitempty" url:"deleted,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RemovePost struct {
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Removed bool `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type MarkPostAsRead struct {
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Read bool `json:"read,omitempty" url:"read,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type LockPost struct {
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Locked bool `json:"locked,omitempty" url:"locked,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type StickyPost struct {
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Stickied bool `json:"stickied,omitempty" url:"stickied,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SavePost struct {
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Save bool `json:"save,omitempty" url:"save,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CreatePostReport struct {
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Reason string `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PostReportResponse struct {
|
||||||
|
PostReportView PostReportView `json:"post_report_view,omitempty" url:"post_report_view,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResolvePostReport struct {
|
||||||
|
ReportID int `json:"report_id,omitempty" url:"report_id,omitempty"`
|
||||||
|
Resolved bool `json:"resolved,omitempty" url:"resolved,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListPostReports struct {
|
||||||
|
Page Optional[int64] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Limit Optional[int64] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
UnresolvedOnly Optional[bool] `json:"unresolved_only,omitempty" url:"unresolved_only,omitempty"`
|
||||||
|
CommunityID Optional[int] `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListPostReportsResponse struct {
|
||||||
|
PostReports []PostReportView `json:"post_reports,omitempty" url:"post_reports,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetSiteMetadata struct {
|
||||||
|
URL string `json:"url,omitempty" url:"url,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetSiteMetadataResponse struct {
|
||||||
|
Metadata SiteMetadata `json:"metadata,omitempty" url:"metadata,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type SiteMetadata struct {
|
||||||
|
Title Optional[string] `json:"title,omitempty" url:"title,omitempty"`
|
||||||
|
Description Optional[string] `json:"description,omitempty" url:"description,omitempty"`
|
||||||
|
Image Optional[string] `json:"image,omitempty" url:"image,omitempty"`
|
||||||
|
EmbedVideoURL Optional[string] `json:"embed_video_url,omitempty" url:"embed_video_url,omitempty"`
|
||||||
|
}
|
71
types/privateMessage.go
Normal file
71
types/privateMessage.go
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
type CreatePrivateMessage struct {
|
||||||
|
Content string `json:"content,omitempty" url:"content,omitempty"`
|
||||||
|
RecipientID int `json:"recipient_id,omitempty" url:"recipient_id,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type EditPrivateMessage struct {
|
||||||
|
PrivateMessageID int `json:"private_message_id,omitempty" url:"private_message_id,omitempty"`
|
||||||
|
Content string `json:"content,omitempty" url:"content,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DeletePrivateMessage struct {
|
||||||
|
PrivateMessageID int `json:"private_message_id,omitempty" url:"private_message_id,omitempty"`
|
||||||
|
Deleted bool `json:"deleted,omitempty" url:"deleted,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type MarkPrivateMessageAsRead struct {
|
||||||
|
PrivateMessageID int `json:"private_message_id,omitempty" url:"private_message_id,omitempty"`
|
||||||
|
Read bool `json:"read,omitempty" url:"read,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPrivateMessages struct {
|
||||||
|
UnreadOnly Optional[bool] `json:"unread_only,omitempty" url:"unread_only,omitempty"`
|
||||||
|
Page Optional[int64] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Limit Optional[int64] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PrivateMessagesResponse struct {
|
||||||
|
PrivateMessages []PrivateMessageView `json:"private_messages,omitempty" url:"private_messages,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type PrivateMessageResponse struct {
|
||||||
|
PrivateMessageView PrivateMessageView `json:"private_message_view,omitempty" url:"private_message_view,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type CreatePrivateMessageReport struct {
|
||||||
|
PrivateMessageID int `json:"private_message_id,omitempty" url:"private_message_id,omitempty"`
|
||||||
|
Reason string `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PrivateMessageReportResponse struct {
|
||||||
|
PrivateMessageReportView PrivateMessageReportView `json:"private_message_report_view,omitempty" url:"private_message_report_view,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResolvePrivateMessageReport struct {
|
||||||
|
ReportID int `json:"report_id,omitempty" url:"report_id,omitempty"`
|
||||||
|
Resolved bool `json:"resolved,omitempty" url:"resolved,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListPrivateMessageReports struct {
|
||||||
|
Page Optional[int64] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Limit Optional[int64] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
UnresolvedOnly Optional[bool] `json:"unresolved_only,omitempty" url:"unresolved_only,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListPrivateMessageReportsResponse struct {
|
||||||
|
PrivateMessageReports []PrivateMessageReportView `json:"private_message_reports,omitempty" url:"private_message_reports,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
244
types/site.go
Normal file
244
types/site.go
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
type SearchResponse struct {
|
||||||
|
Type string `json:"type,omitempty" url:"type,omitempty"`
|
||||||
|
Comments []CommentView `json:"comments,omitempty" url:"comments,omitempty"`
|
||||||
|
Posts []PostView `json:"posts,omitempty" url:"posts,omitempty"`
|
||||||
|
Communities []CommunityView `json:"communities,omitempty" url:"communities,omitempty"`
|
||||||
|
Users []PersonViewSafe `json:"users,omitempty" url:"users,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResolveObject struct {
|
||||||
|
Q string `json:"q,omitempty" url:"q,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResolveObjectResponse struct {
|
||||||
|
Comment Optional[CommentView] `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
|
Post Optional[PostView] `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
Community Optional[CommunityView] `json:"community,omitempty" url:"community,omitempty"`
|
||||||
|
Person Optional[PersonViewSafe] `json:"person,omitempty" url:"person,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetModlog struct {
|
||||||
|
ModPersonID Optional[int] `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
CommunityID Optional[int] `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Page Optional[int64] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Limit Optional[int64] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
Type Optional[ModlogActionType] `json:"type,omitempty" url:"type,omitempty"`
|
||||||
|
OtherPersonID Optional[int] `json:"other_person_id,omitempty" url:"other_person_id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetModlogResponse struct {
|
||||||
|
RemovedPosts []ModRemovePostView `json:"removed_posts,omitempty" url:"removed_posts,omitempty"`
|
||||||
|
LockedPosts []ModLockPostView `json:"locked_posts,omitempty" url:"locked_posts,omitempty"`
|
||||||
|
StickiedPosts []ModStickyPostView `json:"stickied_posts,omitempty" url:"stickied_posts,omitempty"`
|
||||||
|
RemovedComments []ModRemoveCommentView `json:"removed_comments,omitempty" url:"removed_comments,omitempty"`
|
||||||
|
RemovedCommunities []ModRemoveCommunityView `json:"removed_communities,omitempty" url:"removed_communities,omitempty"`
|
||||||
|
BannedFromCommunity []ModBanFromCommunityView `json:"banned_from_community,omitempty" url:"banned_from_community,omitempty"`
|
||||||
|
Banned []ModBanView `json:"banned,omitempty" url:"banned,omitempty"`
|
||||||
|
AddedToCommunity []ModAddCommunityView `json:"added_to_community,omitempty" url:"added_to_community,omitempty"`
|
||||||
|
TransferredToCommunity []ModTransferCommunityView `json:"transferred_to_community,omitempty" url:"transferred_to_community,omitempty"`
|
||||||
|
Added []ModAddView `json:"added,omitempty" url:"added,omitempty"`
|
||||||
|
AdminPurgedPersons []AdminPurgePersonView `json:"admin_purged_persons,omitempty" url:"admin_purged_persons,omitempty"`
|
||||||
|
AdminPurgedCommunities []AdminPurgeCommunityView `json:"admin_purged_communities,omitempty" url:"admin_purged_communities,omitempty"`
|
||||||
|
AdminPurgedPosts []AdminPurgePostView `json:"admin_purged_posts,omitempty" url:"admin_purged_posts,omitempty"`
|
||||||
|
AdminPurgedComments []AdminPurgeCommentView `json:"admin_purged_comments,omitempty" url:"admin_purged_comments,omitempty"`
|
||||||
|
HiddenCommunities []ModHideCommunityView `json:"hidden_communities,omitempty" url:"hidden_communities,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type CreateSite struct {
|
||||||
|
Name string `json:"name,omitempty" url:"name,omitempty"`
|
||||||
|
Sidebar Optional[string] `json:"sidebar,omitempty" url:"sidebar,omitempty"`
|
||||||
|
Description Optional[string] `json:"description,omitempty" url:"description,omitempty"`
|
||||||
|
Icon Optional[string] `json:"icon,omitempty" url:"icon,omitempty"`
|
||||||
|
Banner Optional[string] `json:"banner,omitempty" url:"banner,omitempty"`
|
||||||
|
EnableDownvotes Optional[bool] `json:"enable_downvotes,omitempty" url:"enable_downvotes,omitempty"`
|
||||||
|
OpenRegistration Optional[bool] `json:"open_registration,omitempty" url:"open_registration,omitempty"`
|
||||||
|
EnableNSFW Optional[bool] `json:"enable_nsfw,omitempty" url:"enable_nsfw,omitempty"`
|
||||||
|
CommunityCreationAdminOnly Optional[bool] `json:"community_creation_admin_only,omitempty" url:"community_creation_admin_only,omitempty"`
|
||||||
|
RequireEmailVerification Optional[bool] `json:"require_email_verification,omitempty" url:"require_email_verification,omitempty"`
|
||||||
|
RequireApplication Optional[bool] `json:"require_application,omitempty" url:"require_application,omitempty"`
|
||||||
|
ApplicationQuestion Optional[string] `json:"application_question,omitempty" url:"application_question,omitempty"`
|
||||||
|
PrivateInstance Optional[bool] `json:"private_instance,omitempty" url:"private_instance,omitempty"`
|
||||||
|
DefaultTheme Optional[string] `json:"default_theme,omitempty" url:"default_theme,omitempty"`
|
||||||
|
DefaultPostListingType Optional[string] `json:"default_post_listing_type,omitempty" url:"default_post_listing_type,omitempty"`
|
||||||
|
LegalInformation Optional[string] `json:"legal_information,omitempty" url:"legal_information,omitempty"`
|
||||||
|
ApplicationEmailAdmins Optional[bool] `json:"application_email_admins,omitempty" url:"application_email_admins,omitempty"`
|
||||||
|
HideModlogModNames Optional[bool] `json:"hide_modlog_mod_names,omitempty" url:"hide_modlog_mod_names,omitempty"`
|
||||||
|
DiscussionLanguages Optional[[]int] `json:"discussion_languages,omitempty" url:"discussion_languages,omitempty"`
|
||||||
|
SlurFilterRegex Optional[string] `json:"slur_filter_regex,omitempty" url:"slur_filter_regex,omitempty"`
|
||||||
|
ActorNameMaxLength Optional[int] `json:"actor_name_max_length,omitempty" url:"actor_name_max_length,omitempty"`
|
||||||
|
RateLimitMessage Optional[int] `json:"rate_limit_message,omitempty" url:"rate_limit_message,omitempty"`
|
||||||
|
RateLimitMessagePerSecond Optional[int] `json:"rate_limit_message_per_second,omitempty" url:"rate_limit_message_per_second,omitempty"`
|
||||||
|
RateLimitPost Optional[int] `json:"rate_limit_post,omitempty" url:"rate_limit_post,omitempty"`
|
||||||
|
RateLimitPostPerSecond Optional[int] `json:"rate_limit_post_per_second,omitempty" url:"rate_limit_post_per_second,omitempty"`
|
||||||
|
RateLimitRegister Optional[int] `json:"rate_limit_register,omitempty" url:"rate_limit_register,omitempty"`
|
||||||
|
RateLimitRegisterPerSecond Optional[int] `json:"rate_limit_register_per_second,omitempty" url:"rate_limit_register_per_second,omitempty"`
|
||||||
|
RateLimitImage Optional[int] `json:"rate_limit_image,omitempty" url:"rate_limit_image,omitempty"`
|
||||||
|
RateLimitImagePerSecond Optional[int] `json:"rate_limit_image_per_second,omitempty" url:"rate_limit_image_per_second,omitempty"`
|
||||||
|
RateLimitComment Optional[int] `json:"rate_limit_comment,omitempty" url:"rate_limit_comment,omitempty"`
|
||||||
|
RateLimitCommentPerSecond Optional[int] `json:"rate_limit_comment_per_second,omitempty" url:"rate_limit_comment_per_second,omitempty"`
|
||||||
|
RateLimitSearch Optional[int] `json:"rate_limit_search,omitempty" url:"rate_limit_search,omitempty"`
|
||||||
|
RateLimitSearchPerSecond Optional[int] `json:"rate_limit_search_per_second,omitempty" url:"rate_limit_search_per_second,omitempty"`
|
||||||
|
FederationEnabled Optional[bool] `json:"federation_enabled,omitempty" url:"federation_enabled,omitempty"`
|
||||||
|
FederationDebug Optional[bool] `json:"federation_debug,omitempty" url:"federation_debug,omitempty"`
|
||||||
|
FederationWorkerCount Optional[int] `json:"federation_worker_count,omitempty" url:"federation_worker_count,omitempty"`
|
||||||
|
CaptchaEnabled Optional[bool] `json:"captcha_enabled,omitempty" url:"captcha_enabled,omitempty"`
|
||||||
|
CaptchaDifficulty Optional[string] `json:"captcha_difficulty,omitempty" url:"captcha_difficulty,omitempty"`
|
||||||
|
AllowedInstances Optional[[]string] `json:"allowed_instances,omitempty" url:"allowed_instances,omitempty"`
|
||||||
|
BlockedInstances Optional[[]string] `json:"blocked_instances,omitempty" url:"blocked_instances,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type EditSite struct {
|
||||||
|
Name Optional[string] `json:"name,omitempty" url:"name,omitempty"`
|
||||||
|
Sidebar Optional[string] `json:"sidebar,omitempty" url:"sidebar,omitempty"`
|
||||||
|
Description Optional[string] `json:"description,omitempty" url:"description,omitempty"`
|
||||||
|
Icon Optional[string] `json:"icon,omitempty" url:"icon,omitempty"`
|
||||||
|
Banner Optional[string] `json:"banner,omitempty" url:"banner,omitempty"`
|
||||||
|
EnableDownvotes Optional[bool] `json:"enable_downvotes,omitempty" url:"enable_downvotes,omitempty"`
|
||||||
|
OpenRegistration Optional[bool] `json:"open_registration,omitempty" url:"open_registration,omitempty"`
|
||||||
|
EnableNSFW Optional[bool] `json:"enable_nsfw,omitempty" url:"enable_nsfw,omitempty"`
|
||||||
|
CommunityCreationAdminOnly Optional[bool] `json:"community_creation_admin_only,omitempty" url:"community_creation_admin_only,omitempty"`
|
||||||
|
RequireEmailVerification Optional[bool] `json:"require_email_verification,omitempty" url:"require_email_verification,omitempty"`
|
||||||
|
RequireApplication Optional[bool] `json:"require_application,omitempty" url:"require_application,omitempty"`
|
||||||
|
ApplicationQuestion Optional[string] `json:"application_question,omitempty" url:"application_question,omitempty"`
|
||||||
|
PrivateInstance Optional[bool] `json:"private_instance,omitempty" url:"private_instance,omitempty"`
|
||||||
|
DefaultTheme Optional[string] `json:"default_theme,omitempty" url:"default_theme,omitempty"`
|
||||||
|
DefaultPostListingType Optional[string] `json:"default_post_listing_type,omitempty" url:"default_post_listing_type,omitempty"`
|
||||||
|
LegalInformation Optional[string] `json:"legal_information,omitempty" url:"legal_information,omitempty"`
|
||||||
|
ApplicationEmailAdmins Optional[bool] `json:"application_email_admins,omitempty" url:"application_email_admins,omitempty"`
|
||||||
|
HideModlogModNames Optional[bool] `json:"hide_modlog_mod_names,omitempty" url:"hide_modlog_mod_names,omitempty"`
|
||||||
|
DiscussionLanguages Optional[[]int] `json:"discussion_languages,omitempty" url:"discussion_languages,omitempty"`
|
||||||
|
SlurFilterRegex Optional[string] `json:"slur_filter_regex,omitempty" url:"slur_filter_regex,omitempty"`
|
||||||
|
ActorNameMaxLength Optional[int] `json:"actor_name_max_length,omitempty" url:"actor_name_max_length,omitempty"`
|
||||||
|
RateLimitMessage Optional[int] `json:"rate_limit_message,omitempty" url:"rate_limit_message,omitempty"`
|
||||||
|
RateLimitMessagePerSecond Optional[int] `json:"rate_limit_message_per_second,omitempty" url:"rate_limit_message_per_second,omitempty"`
|
||||||
|
RateLimitPost Optional[int] `json:"rate_limit_post,omitempty" url:"rate_limit_post,omitempty"`
|
||||||
|
RateLimitPostPerSecond Optional[int] `json:"rate_limit_post_per_second,omitempty" url:"rate_limit_post_per_second,omitempty"`
|
||||||
|
RateLimitRegister Optional[int] `json:"rate_limit_register,omitempty" url:"rate_limit_register,omitempty"`
|
||||||
|
RateLimitRegisterPerSecond Optional[int] `json:"rate_limit_register_per_second,omitempty" url:"rate_limit_register_per_second,omitempty"`
|
||||||
|
RateLimitImage Optional[int] `json:"rate_limit_image,omitempty" url:"rate_limit_image,omitempty"`
|
||||||
|
RateLimitImagePerSecond Optional[int] `json:"rate_limit_image_per_second,omitempty" url:"rate_limit_image_per_second,omitempty"`
|
||||||
|
RateLimitComment Optional[int] `json:"rate_limit_comment,omitempty" url:"rate_limit_comment,omitempty"`
|
||||||
|
RateLimitCommentPerSecond Optional[int] `json:"rate_limit_comment_per_second,omitempty" url:"rate_limit_comment_per_second,omitempty"`
|
||||||
|
RateLimitSearch Optional[int] `json:"rate_limit_search,omitempty" url:"rate_limit_search,omitempty"`
|
||||||
|
RateLimitSearchPerSecond Optional[int] `json:"rate_limit_search_per_second,omitempty" url:"rate_limit_search_per_second,omitempty"`
|
||||||
|
FederationEnabled Optional[bool] `json:"federation_enabled,omitempty" url:"federation_enabled,omitempty"`
|
||||||
|
FederationDebug Optional[bool] `json:"federation_debug,omitempty" url:"federation_debug,omitempty"`
|
||||||
|
FederationWorkerCount Optional[int] `json:"federation_worker_count,omitempty" url:"federation_worker_count,omitempty"`
|
||||||
|
CaptchaEnabled Optional[bool] `json:"captcha_enabled,omitempty" url:"captcha_enabled,omitempty"`
|
||||||
|
CaptchaDifficulty Optional[string] `json:"captcha_difficulty,omitempty" url:"captcha_difficulty,omitempty"`
|
||||||
|
AllowedInstances Optional[[]string] `json:"allowed_instances,omitempty" url:"allowed_instances,omitempty"`
|
||||||
|
BlockedInstances Optional[[]string] `json:"blocked_instances,omitempty" url:"blocked_instances,omitempty"`
|
||||||
|
Taglines Optional[[]string] `json:"taglines,omitempty" url:"taglines,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetSite struct {
|
||||||
|
Auth Optional[string] `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SiteResponse struct {
|
||||||
|
SiteView SiteView `json:"site_view,omitempty" url:"site_view,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetSiteResponse struct {
|
||||||
|
SiteView SiteView `json:"site_view,omitempty" url:"site_view,omitempty"`
|
||||||
|
Admins []PersonViewSafe `json:"admins,omitempty" url:"admins,omitempty"`
|
||||||
|
Online int `json:"online,omitempty" url:"online,omitempty"`
|
||||||
|
Version string `json:"version,omitempty" url:"version,omitempty"`
|
||||||
|
MyUser Optional[MyUserInfo] `json:"my_user,omitempty" url:"my_user,omitempty"`
|
||||||
|
FederatedInstances Optional[FederatedInstances] `json:"federated_instances,omitempty" url:"federated_instances,omitempty"`
|
||||||
|
AllLanguages []Language `json:"all_languages,omitempty" url:"all_languages,omitempty"`
|
||||||
|
DiscussionLanguages []int `json:"discussion_languages,omitempty" url:"discussion_languages,omitempty"`
|
||||||
|
Taglines Optional[[]Tagline] `json:"taglines,omitempty" url:"taglines,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type MyUserInfo struct {
|
||||||
|
LocalUserView LocalUserSettingsView `json:"local_user_view,omitempty" url:"local_user_view,omitempty"`
|
||||||
|
Follows []CommunityFollowerView `json:"follows,omitempty" url:"follows,omitempty"`
|
||||||
|
Moderates []CommunityModeratorView `json:"moderates,omitempty" url:"moderates,omitempty"`
|
||||||
|
CommunityBlocks []CommunityBlockView `json:"community_blocks,omitempty" url:"community_blocks,omitempty"`
|
||||||
|
PersonBlocks []PersonBlockView `json:"person_blocks,omitempty" url:"person_blocks,omitempty"`
|
||||||
|
DiscussionLanguages []Language `json:"discussion_languages,omitempty" url:"discussion_languages,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type LeaveAdmin struct {
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type FederatedInstances struct {
|
||||||
|
Linked []string `json:"linked,omitempty" url:"linked,omitempty"`
|
||||||
|
Allowed Optional[[]string] `json:"allowed,omitempty" url:"allowed,omitempty"`
|
||||||
|
Blocked Optional[[]string] `json:"blocked,omitempty" url:"blocked,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PurgePerson struct {
|
||||||
|
PersonID int `json:"person_id,omitempty" url:"person_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PurgeCommunity struct {
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PurgePost struct {
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PurgeComment struct {
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PurgeItemResponse struct {
|
||||||
|
Success bool `json:"success,omitempty" url:"success,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListRegistrationApplications struct {
|
||||||
|
UnreadOnly Optional[bool] `json:"unread_only,omitempty" url:"unread_only,omitempty"`
|
||||||
|
Page Optional[int] `json:"page,omitempty" url:"page,omitempty"`
|
||||||
|
Limit Optional[int] `json:"limit,omitempty" url:"limit,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListRegistrationApplicationsResponse struct {
|
||||||
|
RegistrationApplications []RegistrationApplicationView `json:"registration_applications,omitempty" url:"registration_applications,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type ApproveRegistrationApplication struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
Approve bool `json:"approve,omitempty" url:"approve,omitempty"`
|
||||||
|
DenyReason Optional[string] `json:"deny_reason,omitempty" url:"deny_reason,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RegistrationApplicationResponse struct {
|
||||||
|
RegistrationApplication RegistrationApplicationView `json:"registration_application,omitempty" url:"registration_application,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetUnreadRegistrationApplicationCount struct {
|
||||||
|
Auth string `json:"auth,omitempty" url:"auth,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetUnreadRegistrationApplicationCountResponse struct {
|
||||||
|
RegistrationApplications int `json:"registration_applications,omitempty" url:"registration_applications,omitempty"`
|
||||||
|
LemmyResponse
|
||||||
|
}
|
402
types/source.go
Normal file
402
types/source.go
Normal file
@ -0,0 +1,402 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
type LocalUserSettings struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
PersonID int `json:"person_id,omitempty" url:"person_id,omitempty"`
|
||||||
|
Email Optional[string] `json:"email,omitempty" url:"email,omitempty"`
|
||||||
|
ShowNSFW bool `json:"show_nsfw,omitempty" url:"show_nsfw,omitempty"`
|
||||||
|
Theme string `json:"theme,omitempty" url:"theme,omitempty"`
|
||||||
|
DefaultSortType int `json:"default_sort_type,omitempty" url:"default_sort_type,omitempty"`
|
||||||
|
DefaultListingType int `json:"default_listing_type,omitempty" url:"default_listing_type,omitempty"`
|
||||||
|
InterfaceLanguage string `json:"interface_language,omitempty" url:"interface_language,omitempty"`
|
||||||
|
ShowAvatars bool `json:"show_avatars,omitempty" url:"show_avatars,omitempty"`
|
||||||
|
SendNotifications bool `json:"send_notifications_to_email,omitempty" url:"send_notifications_to_email,omitempty"`
|
||||||
|
ValidatorTime string `json:"validator_time,omitempty" url:"validator_time,omitempty"`
|
||||||
|
ShowBotAccounts bool `json:"show_bot_accounts,omitempty" url:"show_bot_accounts,omitempty"`
|
||||||
|
ShowScores bool `json:"show_scores,omitempty" url:"show_scores,omitempty"`
|
||||||
|
ShowReadPosts bool `json:"show_read_posts,omitempty" url:"show_read_posts,omitempty"`
|
||||||
|
ShowNewPostNotifs bool `json:"show_new_post_notifs,omitempty" url:"show_new_post_notifs,omitempty"`
|
||||||
|
EmailVerified bool `json:"email_verified,omitempty" url:"email_verified,omitempty"`
|
||||||
|
AcceptedApplication bool `json:"accepted_application,omitempty" url:"accepted_application,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PersonSafe struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
Name string `json:"name,omitempty" url:"name,omitempty"`
|
||||||
|
DisplayName Optional[string] `json:"display_name,omitempty" url:"display_name,omitempty"`
|
||||||
|
Avatar Optional[string] `json:"avatar,omitempty" url:"avatar,omitempty"`
|
||||||
|
Banned bool `json:"banned,omitempty" url:"banned,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
ActorID string `json:"actor_id,omitempty" url:"actor_id,omitempty"`
|
||||||
|
Bio Optional[string] `json:"bio,omitempty" url:"bio,omitempty"`
|
||||||
|
Local bool `json:"local,omitempty" url:"local,omitempty"`
|
||||||
|
Banner Optional[string] `json:"banner,omitempty" url:"banner,omitempty"`
|
||||||
|
Deleted bool `json:"deleted,omitempty" url:"deleted,omitempty"`
|
||||||
|
InboxURL string `json:"inbox_url,omitempty" url:"inbox_url,omitempty"`
|
||||||
|
SharedInboxURL Optional[string] `json:"shared_inbox_url,omitempty" url:"shared_inbox_url,omitempty"`
|
||||||
|
MatrixUserID Optional[string] `json:"matrix_user_id,omitempty" url:"matrix_user_id,omitempty"`
|
||||||
|
Admin bool `json:"admin,omitempty" url:"admin,omitempty"`
|
||||||
|
BotAccount bool `json:"bot_account,omitempty" url:"bot_account,omitempty"`
|
||||||
|
BanExpires Optional[string] `json:"ban_expires,omitempty" url:"ban_expires,omitempty"`
|
||||||
|
InstanceID int `json:"instance_id,omitempty" url:"instance_id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Site struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
Name string `json:"name,omitempty" url:"name,omitempty"`
|
||||||
|
Sidebar Optional[string] `json:"sidebar,omitempty" url:"sidebar,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
Icon Optional[string] `json:"icon,omitempty" url:"icon,omitempty"`
|
||||||
|
Banner Optional[string] `json:"banner,omitempty" url:"banner,omitempty"`
|
||||||
|
Description Optional[string] `json:"description,omitempty" url:"description,omitempty"`
|
||||||
|
ActorID string `json:"actor_id,omitempty" url:"actor_id,omitempty"`
|
||||||
|
LastRefreshedAt string `json:"last_refreshed_at,omitempty" url:"last_refreshed_at,omitempty"`
|
||||||
|
InboxURL string `json:"inbox_url,omitempty" url:"inbox_url,omitempty"`
|
||||||
|
PrivateKey Optional[string] `json:"private_key,omitempty" url:"private_key,omitempty"`
|
||||||
|
PublicKey string `json:"public_key,omitempty" url:"public_key,omitempty"`
|
||||||
|
InstanceID int `json:"instance_id,omitempty" url:"instance_id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type LocalSite struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
SiteID int `json:"site_id,omitempty" url:"site_id,omitempty"`
|
||||||
|
SiteSetup bool `json:"site_setup,omitempty" url:"site_setup,omitempty"`
|
||||||
|
EnableDownvotes bool `json:"enable_downvotes,omitempty" url:"enable_downvotes,omitempty"`
|
||||||
|
OpenRegistration bool `json:"open_registration,omitempty" url:"open_registration,omitempty"`
|
||||||
|
EnableNSFW bool `json:"enable_nsfw,omitempty" url:"enable_nsfw,omitempty"`
|
||||||
|
AdminOnlyCommunityCreation bool `json:"community_creation_admin_only,omitempty" url:"community_creation_admin_only,omitempty"`
|
||||||
|
RequireEmailVerification bool `json:"require_email_verification,omitempty" url:"require_email_verification,omitempty"`
|
||||||
|
RequireApplication bool `json:"require_application,omitempty" url:"require_application,omitempty"`
|
||||||
|
ApplicationQuestion Optional[string] `json:"application_question,omitempty" url:"application_question,omitempty"`
|
||||||
|
PrivateInstance bool `json:"private_instance,omitempty" url:"private_instance,omitempty"`
|
||||||
|
DefaultTheme string `json:"default_theme,omitempty" url:"default_theme,omitempty"`
|
||||||
|
DefaultPostListingType string `json:"default_post_listing_type,omitempty" url:"default_post_listing_type,omitempty"`
|
||||||
|
LegalInformation Optional[string] `json:"legal_information,omitempty" url:"legal_information,omitempty"`
|
||||||
|
HideModlogModNames bool `json:"hide_modlog_mod_names,omitempty" url:"hide_modlog_mod_names,omitempty"`
|
||||||
|
ApplicationEmailAdmins bool `json:"application_email_admins,omitempty" url:"application_email_admins,omitempty"`
|
||||||
|
SlurFilterRegex Optional[string] `json:"slur_filter_regex,omitempty" url:"slur_filter_regex,omitempty"`
|
||||||
|
ActorNameMaxLength int `json:"actor_name_max_length,omitempty" url:"actor_name_max_length,omitempty"`
|
||||||
|
FederationEnabled bool `json:"federation_enabled,omitempty" url:"federation_enabled,omitempty"`
|
||||||
|
FederationDebug bool `json:"federation_debug,omitempty" url:"federation_debug,omitempty"`
|
||||||
|
FederationStrictAllowlist bool `json:"federation_strict_allowlist,omitempty" url:"federation_strict_allowlist,omitempty"`
|
||||||
|
FederationRetryLimit int `json:"federation_http_fetch_retry_limit,omitempty" url:"federation_http_fetch_retry_limit,omitempty"`
|
||||||
|
FederationWorkerCount int `json:"federation_worker_count,omitempty" url:"federation_worker_count,omitempty"`
|
||||||
|
CaptchaEnabled bool `json:"captcha_enabled,omitempty" url:"captcha_enabled,omitempty"`
|
||||||
|
CaptchaDifficulty string `json:"captcha_difficulty,omitempty" url:"captcha_difficulty,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type LocalSiteRateLimit struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
LocalSiteID int `json:"local_site_id,omitempty" url:"local_site_id,omitempty"`
|
||||||
|
Message int `json:"message,omitempty" url:"message,omitempty"`
|
||||||
|
MessagePerSecond int `json:"message_per_second,omitempty" url:"message_per_second,omitempty"`
|
||||||
|
Post int `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
PostPerSecond int `json:"post_per_second,omitempty" url:"post_per_second,omitempty"`
|
||||||
|
Register int `json:"register,omitempty" url:"register,omitempty"`
|
||||||
|
RegisterPerSecond int `json:"register_per_second,omitempty" url:"register_per_second,omitempty"`
|
||||||
|
Image int `json:"image,omitempty" url:"image,omitempty"`
|
||||||
|
ImagePerSecond int `json:"image_per_second,omitempty" url:"image_per_second,omitempty"`
|
||||||
|
Comment int `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
|
CommentPerSecond int `json:"comment_per_second,omitempty" url:"comment_per_second,omitempty"`
|
||||||
|
Search int `json:"search,omitempty" url:"search,omitempty"`
|
||||||
|
SearchPerSecond int `json:"search_per_second,omitempty" url:"search_per_second,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PrivateMessage struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
CreatorID int `json:"creator_id,omitempty" url:"creator_id,omitempty"`
|
||||||
|
RecipientID int `json:"recipient_id,omitempty" url:"recipient_id,omitempty"`
|
||||||
|
Content string `json:"content,omitempty" url:"content,omitempty"`
|
||||||
|
Deleted bool `json:"deleted,omitempty" url:"deleted,omitempty"`
|
||||||
|
Read bool `json:"read,omitempty" url:"read,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
ApID string `json:"ap_id,omitempty" url:"ap_id,omitempty"`
|
||||||
|
Local bool `json:"local,omitempty" url:"local,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PostReport struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
CreatorID int `json:"creator_id,omitempty" url:"creator_id,omitempty"`
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
OriginalPostName string `json:"original_post_name,omitempty" url:"original_post_name,omitempty"`
|
||||||
|
OriginalPostURL Optional[string] `json:"original_post_url,omitempty" url:"original_post_url,omitempty"`
|
||||||
|
OriginalPostBody Optional[string] `json:"original_post_body,omitempty" url:"original_post_body,omitempty"`
|
||||||
|
Reason string `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Resolved bool `json:"resolved,omitempty" url:"resolved,omitempty"`
|
||||||
|
ResolverID Optional[int] `json:"resolver_id,omitempty" url:"resolver_id,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Post struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
Name string `json:"name,omitempty" url:"name,omitempty"`
|
||||||
|
URL Optional[string] `json:"url,omitempty" url:"url,omitempty"`
|
||||||
|
Body Optional[string] `json:"body,omitempty" url:"body,omitempty"`
|
||||||
|
CreatorID int `json:"creator_id,omitempty" url:"creator_id,omitempty"`
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Removed bool `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
Locked bool `json:"locked,omitempty" url:"locked,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
Deleted bool `json:"deleted,omitempty" url:"deleted,omitempty"`
|
||||||
|
NSFW bool `json:"nsfw,omitempty" url:"nsfw,omitempty"`
|
||||||
|
Stickied bool `json:"stickied,omitempty" url:"stickied,omitempty"`
|
||||||
|
EmbedTitle Optional[string] `json:"embed_title,omitempty" url:"embed_title,omitempty"`
|
||||||
|
EmbedDescription Optional[string] `json:"embed_description,omitempty" url:"embed_description,omitempty"`
|
||||||
|
EmbedVideoURL Optional[string] `json:"embed_video_url,omitempty" url:"embed_video_url,omitempty"`
|
||||||
|
ThumbnailURL Optional[string] `json:"thumbnail_url,omitempty" url:"thumbnail_url,omitempty"`
|
||||||
|
ApID string `json:"ap_id,omitempty" url:"ap_id,omitempty"`
|
||||||
|
Local bool `json:"local,omitempty" url:"local,omitempty"`
|
||||||
|
LanguageID int `json:"language_id,omitempty" url:"language_id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PasswordResetRequest struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
LocalUserID int `json:"local_user_id,omitempty" url:"local_user_id,omitempty"`
|
||||||
|
TokenEncrypted string `json:"token_encrypted,omitempty" url:"token_encrypted,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModRemovePost struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
ModPersonID int `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Removed Optional[bool] `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModLockPost struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
ModPersonID int `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Locked Optional[bool] `json:"locked,omitempty" url:"locked,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModStickyPost represents a post stickied by a moderator.
|
||||||
|
type ModStickyPost struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
ModPersonID int `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Stickied Optional[bool] `json:"stickied,omitempty" url:"stickied,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModRemoveComment represents a comment removal by a moderator.
|
||||||
|
type ModRemoveComment struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
ModPersonID int `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Removed Optional[bool] `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModRemoveCommunity represents a community removal by a moderator.
|
||||||
|
type ModRemoveCommunity struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
ModPersonID int `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Removed Optional[bool] `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
Expires Optional[string] `json:"expires,omitempty" url:"expires,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModBanFromCommunity represents a user being banned from a community by a moderator.
|
||||||
|
type ModBanFromCommunity struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
ModPersonID int `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
OtherPersonID int `json:"other_person_id,omitempty" url:"other_person_id,omitempty"`
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Banned Optional[bool] `json:"banned,omitempty" url:"banned,omitempty"`
|
||||||
|
Expires Optional[string] `json:"expires,omitempty" url:"expires,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModBan represents a user being banned by a moderator.
|
||||||
|
type ModBan struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
ModPersonID int `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
OtherPersonID int `json:"other_person_id,omitempty" url:"other_person_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Banned Optional[bool] `json:"banned,omitempty" url:"banned,omitempty"`
|
||||||
|
Expires Optional[string] `json:"expires,omitempty" url:"expires,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModAddCommunity represents a user being added as a moderator of a community.
|
||||||
|
type ModAddCommunity struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
ModPersonID int `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
OtherPersonID int `json:"other_person_id,omitempty" url:"other_person_id,omitempty"`
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Removed Optional[bool] `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModTransferCommunity represents a community being transferred to another moderator.
|
||||||
|
type ModTransferCommunity struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
ModPersonID int `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
OtherPersonID int `json:"other_person_id,omitempty" url:"other_person_id,omitempty"`
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Removed Optional[bool] `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModAdd represents a user being added as a moderator.
|
||||||
|
type ModAdd struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
ModPersonID int `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
OtherPersonID int `json:"other_person_id,omitempty" url:"other_person_id,omitempty"`
|
||||||
|
Removed Optional[bool] `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminPurgePerson struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
AdminPersonID int `json:"admin_person_id,omitempty" url:"admin_person_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminPurgeCommunity struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
AdminPersonID int `json:"admin_person_id,omitempty" url:"admin_person_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminPurgePost struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
AdminPersonID int `json:"admin_person_id,omitempty" url:"admin_person_id,omitempty"`
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminPurgeComment struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
AdminPersonID int `json:"admin_person_id,omitempty" url:"admin_person_id,omitempty"`
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
When string `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommunitySafe struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
Name string `json:"name,omitempty" url:"name,omitempty"`
|
||||||
|
Title string `json:"title,omitempty" url:"title,omitempty"`
|
||||||
|
Description Optional[string] `json:"description,omitempty" url:"description,omitempty"`
|
||||||
|
Removed bool `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
Deleted bool `json:"deleted,omitempty" url:"deleted,omitempty"`
|
||||||
|
NSFW bool `json:"nsfw,omitempty" url:"nsfw,omitempty"`
|
||||||
|
ActorID string `json:"actor_id,omitempty" url:"actor_id,omitempty"`
|
||||||
|
Local bool `json:"local,omitempty" url:"local,omitempty"`
|
||||||
|
Icon Optional[string] `json:"icon,omitempty" url:"icon,omitempty"`
|
||||||
|
Banner Optional[string] `json:"banner,omitempty" url:"banner,omitempty"`
|
||||||
|
Hidden bool `json:"hidden,omitempty" url:"hidden,omitempty"`
|
||||||
|
PostingRestrictedToMods bool `json:"posting_restricted_to_mods,omitempty" url:"posting_restricted_to_mods,omitempty"`
|
||||||
|
InstanceID int `json:"instance_id,omitempty" url:"instance_id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommentReport struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
CreatorID int `json:"creator_id,omitempty" url:"creator_id,omitempty"`
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
OriginalCommentText string `json:"original_comment_text,omitempty" url:"original_comment_text,omitempty"`
|
||||||
|
Reason string `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Resolved bool `json:"resolved,omitempty" url:"resolved,omitempty"`
|
||||||
|
ResolverID Optional[int] `json:"resolver_id,omitempty" url:"resolver_id,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Comment struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
CreatorID int `json:"creator_id,omitempty" url:"creator_id,omitempty"`
|
||||||
|
PostID int `json:"post_id,omitempty" url:"post_id,omitempty"`
|
||||||
|
Content string `json:"content,omitempty" url:"content,omitempty"`
|
||||||
|
Removed bool `json:"removed,omitempty" url:"removed,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
Deleted bool `json:"deleted,omitempty" url:"deleted,omitempty"`
|
||||||
|
APID string `json:"ap_id,omitempty" url:"ap_id,omitempty"`
|
||||||
|
Local bool `json:"local,omitempty" url:"local,omitempty"`
|
||||||
|
Path string `json:"path,omitempty" url:"path,omitempty"`
|
||||||
|
Distinguished bool `json:"distinguished,omitempty" url:"distinguished,omitempty"`
|
||||||
|
LanguageID int `json:"language_id,omitempty" url:"language_id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PersonMention struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
RecipientID int `json:"recipient_id,omitempty" url:"recipient_id,omitempty"`
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Read bool `json:"read,omitempty" url:"read,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Language struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
Code string `json:"code,omitempty" url:"code,omitempty"`
|
||||||
|
Name string `json:"name,omitempty" url:"name,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PrivateMessageReport struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
CreatorID int `json:"creator_id,omitempty" url:"creator_id,omitempty"`
|
||||||
|
PrivateMessageID int `json:"private_message_id,omitempty" url:"private_message_id,omitempty"`
|
||||||
|
OriginalPMText string `json:"original_pm_text,omitempty" url:"original_pm_text,omitempty"`
|
||||||
|
Reason string `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Resolved bool `json:"resolved,omitempty" url:"resolved,omitempty"`
|
||||||
|
ResolverID Optional[int] `json:"resolver_id,omitempty" url:"resolver_id,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RegistrationApplication struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
LocalUserID int `json:"local_user_id,omitempty" url:"local_user_id,omitempty"`
|
||||||
|
Answer string `json:"answer,omitempty" url:"answer,omitempty"`
|
||||||
|
AdminID Optional[int] `json:"admin_id,omitempty" url:"admin_id,omitempty"`
|
||||||
|
DenyReason Optional[string] `json:"deny_reason,omitempty" url:"deny_reason,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModHideCommunityView struct {
|
||||||
|
ModHideCommunity ModHideCommunity `json:"mod_hide_community,omitempty" url:"mod_hide_community,omitempty"`
|
||||||
|
Admin Optional[PersonSafe] `json:"admin,omitempty" url:"admin,omitempty"`
|
||||||
|
Community CommunitySafe `json:"community,omitempty" url:"community,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModHideCommunity struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
CommunityID int `json:"community_id,omitempty" url:"community_id,omitempty"`
|
||||||
|
ModPersonID int `json:"mod_person_id,omitempty" url:"mod_person_id,omitempty"`
|
||||||
|
Reason Optional[string] `json:"reason,omitempty" url:"reason,omitempty"`
|
||||||
|
Hidden Optional[bool] `json:"hidden,omitempty" url:"hidden,omitempty"`
|
||||||
|
When time.Time `json:"when_,omitempty" url:"when_,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommentReply struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
RecipientID int `json:"recipient_id,omitempty" url:"recipient_id,omitempty"`
|
||||||
|
CommentID int `json:"comment_id,omitempty" url:"comment_id,omitempty"`
|
||||||
|
Read bool `json:"read,omitempty" url:"read,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
}
|
27
types/types.go
Normal file
27
types/types.go
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type LemmyResponse struct {
|
||||||
|
Error Optional[string] `json:"error,omitempty" url:"error,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HTTPError struct {
|
||||||
|
Code int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (he HTTPError) Error() string {
|
||||||
|
return fmt.Sprintf("%d %s", he.Code, http.StatusText(he.Code))
|
||||||
|
}
|
||||||
|
|
||||||
|
type LemmyError struct {
|
||||||
|
ErrStr string
|
||||||
|
Code int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (le LemmyError) Error() string {
|
||||||
|
return fmt.Sprintf("%d %s: %s", le.Code, http.StatusText(le.Code), le.ErrStr)
|
||||||
|
}
|
254
types/views.go
Normal file
254
types/views.go
Normal file
@ -0,0 +1,254 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
type PersonViewSafe struct {
|
||||||
|
Person PersonSafe `json:"person,omitempty" url:"person,omitempty"`
|
||||||
|
Counts PersonAggregates `json:"counts,omitempty" url:"counts,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PersonMentionView struct {
|
||||||
|
PersonMention PersonMention `json:"person_mention,omitempty" url:"person_mention,omitempty"`
|
||||||
|
Comment Comment `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
|
Creator PersonSafe `json:"creator,omitempty" url:"creator,omitempty"`
|
||||||
|
Post Post `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
Recipient PersonSafe `json:"recipient,omitempty" url:"recipient,omitempty"`
|
||||||
|
Counts CommentAggregates `json:"counts,omitempty" url:"counts,omitempty"`
|
||||||
|
CreatorBannedFromCommunity bool `json:"creator_banned_from_community,omitempty" url:"creator_banned_from_community,omitempty"`
|
||||||
|
Subscribed SubscribedType `json:"subscribed,omitempty" url:"subscribed,omitempty"`
|
||||||
|
Saved bool `json:"saved,omitempty" url:"saved,omitempty"`
|
||||||
|
CreatorBlocked bool `json:"creator_blocked,omitempty" url:"creator_blocked,omitempty"`
|
||||||
|
MyVote Optional[int] `json:"my_vote,omitempty" url:"my_vote,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type LocalUserSettingsView struct {
|
||||||
|
LocalUserSettings LocalUserSettings `json:"local_user_settings,omitempty" url:"local_user_settings,omitempty"`
|
||||||
|
Person PersonSafe `json:"person,omitempty" url:"person,omitempty"`
|
||||||
|
Counts PersonAggregates `json:"counts,omitempty" url:"counts,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SiteView struct {
|
||||||
|
Site Site `json:"site,omitempty" url:"site,omitempty"`
|
||||||
|
LocalSite LocalSite `json:"local_site,omitempty" url:"local_site,omitempty"`
|
||||||
|
LocalSiteRateLimit LocalSiteRateLimit `json:"local_site_rate_limit,omitempty" url:"local_site_rate_limit,omitempty"`
|
||||||
|
Taglines Optional[[]Tagline] `json:"taglines,omitempty" url:"taglines,omitempty"`
|
||||||
|
Counts SiteAggregates `json:"counts,omitempty" url:"counts,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PrivateMessageView struct {
|
||||||
|
PrivateMessage PrivateMessage `json:"private_message,omitempty" url:"private_message,omitempty"`
|
||||||
|
Creator PersonSafe `json:"creator,omitempty" url:"creator,omitempty"`
|
||||||
|
Recipient PersonSafe `json:"recipient,omitempty" url:"recipient,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PostView struct {
|
||||||
|
Post Post `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
Creator PersonSafe `json:"creator,omitempty" url:"creator,omitempty"`
|
||||||
|
Community CommunitySafe `json:"community,omitempty" url:"community,omitempty"`
|
||||||
|
CreatorBannedFromCommunity bool `json:"creator_banned_from_community,omitempty" url:"creator_banned_from_community,omitempty"`
|
||||||
|
Counts PostAggregates `json:"counts,omitempty" url:"counts,omitempty"`
|
||||||
|
Subscribed bool `json:"subscribed,omitempty" url:"subscribed,omitempty"`
|
||||||
|
Saved bool `json:"saved,omitempty" url:"saved,omitempty"`
|
||||||
|
Read bool `json:"read,omitempty" url:"read,omitempty"`
|
||||||
|
CreatorBlocked bool `json:"creator_blocked,omitempty" url:"creator_blocked,omitempty"`
|
||||||
|
MyVote Optional[int] `json:"my_vote,omitempty" url:"my_vote,omitempty"`
|
||||||
|
UnreadComments int `json:"unread_comments,omitempty" url:"unread_comments,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PostReportView struct {
|
||||||
|
PostReport PostReport `json:"post_report,omitempty" url:"post_report,omitempty"`
|
||||||
|
Post Post `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
Community CommunitySafe `json:"community,omitempty" url:"community,omitempty"`
|
||||||
|
Creator PersonSafe `json:"creator,omitempty" url:"creator,omitempty"`
|
||||||
|
PostCreator PersonSafe `json:"post_creator,omitempty" url:"post_creator,omitempty"`
|
||||||
|
CreatorBannedFromCommunity bool `json:"creator_banned_from_community,omitempty" url:"creator_banned_from_community,omitempty"`
|
||||||
|
MyVote Optional[int] `json:"my_vote,omitempty" url:"my_vote,omitempty"`
|
||||||
|
Counts PostAggregates `json:"counts,omitempty" url:"counts,omitempty"`
|
||||||
|
Resolver Optional[PersonSafe] `json:"resolver,omitempty" url:"resolver,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommentView struct {
|
||||||
|
Comment Comment `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
|
Creator PersonSafe `json:"creator,omitempty" url:"creator,omitempty"`
|
||||||
|
Post Post `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
Community CommunitySafe `json:"community,omitempty" url:"community,omitempty"`
|
||||||
|
Counts CommentAggregates `json:"counts,omitempty" url:"counts,omitempty"`
|
||||||
|
CreatorBannedFromCommunity bool `json:"creator_banned_from_community,omitempty" url:"creator_banned_from_community,omitempty"`
|
||||||
|
Subscribed SubscribedType `json:"subscribed,omitempty" url:"subscribed,omitempty"`
|
||||||
|
Saved bool `json:"saved,omitempty" url:"saved,omitempty"`
|
||||||
|
CreatorBlocked bool `json:"creator_blocked,omitempty" url:"creator_blocked,omitempty"`
|
||||||
|
MyVote Optional[int] `json:"my_vote,omitempty" url:"my_vote,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommentReportView struct {
|
||||||
|
CommentReport CommentReport `json:"comment_report,omitempty" url:"comment_report,omitempty"`
|
||||||
|
Comment Comment `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
|
Post Post `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
Creator PersonSafe `json:"creator,omitempty" url:"creator,omitempty"`
|
||||||
|
CommentCreator PersonSafe `json:"comment_creator,omitempty" url:"comment_creator,omitempty"`
|
||||||
|
Counts CommentAggregates `json:"counts,omitempty" url:"counts,omitempty"`
|
||||||
|
CreatorBannedFromCommunity bool `json:"creator_banned_from_community,omitempty" url:"creator_banned_from_community,omitempty"`
|
||||||
|
MyVote Optional[int] `json:"my_vote,omitempty" url:"my_vote,omitempty"`
|
||||||
|
Resolver Optional[PersonSafe] `json:"resolver,omitempty" url:"resolver,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModAddCommunityView struct {
|
||||||
|
ModAddCommunity ModAddCommunity `json:"mod_add_community,omitempty" url:"mod_add_community,omitempty"`
|
||||||
|
Moderator Optional[PersonSafe] `json:"moderator,omitempty" url:"moderator,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
ModdedPerson PersonSafe `json:"modded_person,omitempty" url:"modded_person,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModTransferCommunityView struct {
|
||||||
|
ModTransferCommunity ModTransferCommunity `json:"mod_transfer_community,omitempty" url:"mod_transfer_community,omitempty"`
|
||||||
|
Moderator Optional[PersonSafe] `json:"moderator,omitempty" url:"moderator,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
ModdedPerson PersonSafe `json:"modded_person,omitempty" url:"modded_person,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModAddView struct {
|
||||||
|
ModAdd ModAdd `json:"mod_add,omitempty" url:"mod_add,omitempty"`
|
||||||
|
Moderator Optional[PersonSafe] `json:"moderator,omitempty" url:"moderator,omitempty"`
|
||||||
|
ModdedPerson PersonSafe `json:"modded_person,omitempty" url:"modded_person,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModBanFromCommunityView struct {
|
||||||
|
ModBanFromCommunity ModBanFromCommunity `json:"mod_ban_from_community,omitempty" url:"mod_ban_from_community,omitempty"`
|
||||||
|
Moderator Optional[PersonSafe] `json:"moderator,omitempty" url:"moderator,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
BannedPerson PersonSafe `json:"banned_person,omitempty" url:"banned_person,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModBanView struct {
|
||||||
|
ModBan ModBan `json:"mod_ban,omitempty" url:"mod_ban,omitempty"`
|
||||||
|
Moderator Optional[PersonSafe] `json:"moderator,omitempty" url:"moderator,omitempty"`
|
||||||
|
BannedPerson PersonSafe `json:"banned_person,omitempty" url:"banned_person,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModLockPostView struct {
|
||||||
|
ModLockPost ModLockPost `json:"mod_lock_post,omitempty" url:"mod_lock_post,omitempty"`
|
||||||
|
Moderator Optional[PersonSafe] `json:"moderator,omitempty" url:"moderator,omitempty"`
|
||||||
|
Post Post `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModRemoveCommentView struct {
|
||||||
|
ModRemoveComment ModRemoveComment `json:"mod_remove_comment,omitempty" url:"mod_remove_comment,omitempty"`
|
||||||
|
Moderator Optional[PersonSafe] `json:"moderator,omitempty" url:"moderator,omitempty"`
|
||||||
|
Comment Comment `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
|
Commenter PersonSafe `json:"commenter,omitempty" url:"commenter,omitempty"`
|
||||||
|
Post Post `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModRemoveCommunityView struct {
|
||||||
|
ModRemoveCommunity ModRemoveCommunity `json:"mod_remove_community,omitempty" url:"mod_remove_community,omitempty"`
|
||||||
|
Moderator Optional[PersonSafe] `json:"moderator,omitempty" url:"moderator,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModRemovePostView struct {
|
||||||
|
ModRemovePost ModRemovePost `json:"mod_remove_post,omitempty" url:"mod_remove_post,omitempty"`
|
||||||
|
Moderator Optional[PersonSafe] `json:"moderator,omitempty" url:"moderator,omitempty"`
|
||||||
|
Post Post `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ModStickyPostView struct {
|
||||||
|
ModStickyPost ModStickyPost `json:"mod_sticky_post,omitempty" url:"mod_sticky_post,omitempty"`
|
||||||
|
Moderator Optional[PersonSafe] `json:"moderator,omitempty" url:"moderator,omitempty"`
|
||||||
|
Post Post `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminPurgeCommunityView struct {
|
||||||
|
AdminPurgeCommunity AdminPurgeCommunity `json:"admin_purge_community,omitempty" url:"admin_purge_community,omitempty"`
|
||||||
|
Admin Optional[PersonSafe] `json:"admin,omitempty" url:"admin,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminPurgePersonView struct {
|
||||||
|
AdminPurgePerson AdminPurgePerson `json:"admin_purge_person,omitempty" url:"admin_purge_person,omitempty"`
|
||||||
|
Admin Optional[PersonSafe] `json:"admin,omitempty" url:"admin,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminPurgePostView struct {
|
||||||
|
AdminPurgePost AdminPurgePost `json:"admin_purge_post,omitempty" url:"admin_purge_post,omitempty"`
|
||||||
|
Admin Optional[PersonSafe] `json:"admin,omitempty" url:"admin,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminPurgeCommentView struct {
|
||||||
|
AdminPurgeComment AdminPurgeComment `json:"admin_purge_comment,omitempty" url:"admin_purge_comment,omitempty"`
|
||||||
|
Admin Optional[PersonSafe] `json:"admin,omitempty" url:"admin,omitempty"`
|
||||||
|
Post Post `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommunityFollowerView struct {
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
Follower PersonSafe `json:"follower,omitempty" url:"follower,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommunityBlockView struct {
|
||||||
|
PersonSafe PersonSafe `json:"person_safe,omitempty" url:"person_safe,omitempty"`
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommunityModeratorView struct {
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
Moderator PersonSafe `json:"moderator,omitempty" url:"moderator,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommunityPersonBanView struct {
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
Person PersonSafe `json:"person,omitempty" url:"person,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PersonBlockView struct {
|
||||||
|
PersonSafe PersonSafe `json:"person_safe,omitempty" url:"person_safe,omitempty"`
|
||||||
|
Target PersonSafe `json:"target,omitempty" url:"target,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommunityView struct {
|
||||||
|
CommunitySafe CommunitySafe `json:"community_safe,omitempty" url:"community_safe,omitempty"`
|
||||||
|
Subscribed SubscribedType `json:"subscribed,omitempty" url:"subscribed,omitempty"`
|
||||||
|
Blocked bool `json:"blocked,omitempty" url:"blocked,omitempty"`
|
||||||
|
Counts CommunityAggregates `json:"counts,omitempty" url:"counts,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RegistrationApplicationView struct {
|
||||||
|
RegistrationApplication RegistrationApplication `json:"registration_application,omitempty" url:"registration_application,omitempty"`
|
||||||
|
CreatorLocalUser LocalUserSettings `json:"creator_local_user,omitempty" url:"creator_local_user,omitempty"`
|
||||||
|
Creator PersonSafe `json:"creator,omitempty" url:"creator,omitempty"`
|
||||||
|
Admin Optional[PersonSafe] `json:"admin,omitempty" url:"admin,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PrivateMessageReportView struct {
|
||||||
|
PrivateMessageReport PrivateMessageReport `json:"private_message_report,omitempty" url:"private_message_report,omitempty"`
|
||||||
|
PrivateMessage PrivateMessage `json:"private_message,omitempty" url:"private_message,omitempty"`
|
||||||
|
PrivateMessageCreator PersonSafe `json:"private_message_creator,omitempty" url:"private_message_creator,omitempty"`
|
||||||
|
Creator PersonSafe `json:"creator,omitempty" url:"creator,omitempty"`
|
||||||
|
Resolver Optional[PersonSafe] `json:"resolver,omitempty" url:"resolver,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Tagline struct {
|
||||||
|
ID int `json:"id,omitempty" url:"id,omitempty"`
|
||||||
|
LocalSiteID int `json:"local_site_id,omitempty" url:"local_site_id,omitempty"`
|
||||||
|
Content string `json:"content,omitempty" url:"content,omitempty"`
|
||||||
|
Published string `json:"published,omitempty" url:"published,omitempty"`
|
||||||
|
Updated Optional[string] `json:"updated,omitempty" url:"updated,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommentReplyView struct {
|
||||||
|
CommentReply CommentReply `json:"comment_reply,omitempty" url:"comment_reply,omitempty"`
|
||||||
|
Comment Comment `json:"comment,omitempty" url:"comment,omitempty"`
|
||||||
|
Creator PersonSafe `json:"creator,omitempty" url:"creator,omitempty"`
|
||||||
|
Post Post `json:"post,omitempty" url:"post,omitempty"`
|
||||||
|
Community CommunitySafe `json:"community,omitempty" url:"community,omitempty"`
|
||||||
|
Recipient PersonSafe `json:"recipient,omitempty" url:"recipient,omitempty"`
|
||||||
|
Counts CommentAggregates `json:"counts,omitempty" url:"counts,omitempty"`
|
||||||
|
CreatorBannedFromCommunity bool `json:"creator_banned_from_community,omitempty" url:"creator_banned_from_community,omitempty"`
|
||||||
|
Subscribed SubscribedType `json:"subscribed,omitempty" url:"subscribed,omitempty"`
|
||||||
|
Saved bool `json:"saved,omitempty" url:"saved,omitempty"`
|
||||||
|
CreatorBlocked bool `json:"creator_blocked,omitempty" url:"creator_blocked,omitempty"`
|
||||||
|
MyVote Optional[int] `json:"my_vote,omitempty" url:"my_vote,omitempty"`
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user