Initial Commit
This commit is contained in:
		
							
								
								
									
										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"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user