Chage NewRequest methods, add multi description kind to thing
Since Reddit's API accepts form data as the body for most of its endpoints, it made sense to me to make the default NewRequest method set the request body as form data (if provided of course). The NewJSONRequest method can accept a JSON body. Signed-off-by: Vartan Benohanian <vartanbeno@gmail.com>
This commit is contained in:
parent
34c2559707
commit
def7e3bdb7
17 changed files with 157 additions and 164 deletions
|
@ -274,7 +274,7 @@ func (s *AccountService) Settings(ctx context.Context) (*Settings, *Response, er
|
||||||
func (s *AccountService) UpdateSettings(ctx context.Context, settings *Settings) (*Settings, *Response, error) {
|
func (s *AccountService) UpdateSettings(ctx context.Context, settings *Settings) (*Settings, *Response, error) {
|
||||||
path := "api/v1/me/prefs"
|
path := "api/v1/me/prefs"
|
||||||
|
|
||||||
req, err := s.client.NewRequest(http.MethodPatch, path, settings)
|
req, err := s.client.NewJSONRequest(http.MethodPatch, path, settings)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -391,7 +391,7 @@ func (s *AccountService) AddTrusted(ctx context.Context, username string) (*Resp
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
form.Set("name", username)
|
form.Set("name", username)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -407,7 +407,7 @@ func (s *AccountService) RemoveTrusted(ctx context.Context, username string) (*R
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("name", username)
|
form.Set("name", username)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,7 +116,7 @@ func (s *CollectionService) Create(ctx context.Context, createRequest *Collectio
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -137,7 +137,7 @@ func (s *CollectionService) Delete(ctx context.Context, id string) (*Response, e
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("collection_id", id)
|
form.Set("collection_id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -153,7 +153,7 @@ func (s *CollectionService) AddPost(ctx context.Context, postID, collectionID st
|
||||||
form.Set("link_fullname", postID)
|
form.Set("link_fullname", postID)
|
||||||
form.Set("collection_id", collectionID)
|
form.Set("collection_id", collectionID)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ func (s *CollectionService) RemovePost(ctx context.Context, postID, collectionID
|
||||||
form.Set("link_fullname", postID)
|
form.Set("link_fullname", postID)
|
||||||
form.Set("collection_id", collectionID)
|
form.Set("collection_id", collectionID)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -185,7 +185,7 @@ func (s *CollectionService) ReorderPosts(ctx context.Context, collectionID strin
|
||||||
form.Set("collection_id", collectionID)
|
form.Set("collection_id", collectionID)
|
||||||
form.Set("link_ids", strings.Join(postIDs, ","))
|
form.Set("link_ids", strings.Join(postIDs, ","))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -201,7 +201,7 @@ func (s *CollectionService) UpdateTitle(ctx context.Context, id string, title st
|
||||||
form.Set("collection_id", id)
|
form.Set("collection_id", id)
|
||||||
form.Set("title", title)
|
form.Set("title", title)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -217,7 +217,7 @@ func (s *CollectionService) UpdateDescription(ctx context.Context, id string, de
|
||||||
form.Set("collection_id", id)
|
form.Set("collection_id", id)
|
||||||
form.Set("description", description)
|
form.Set("description", description)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -233,7 +233,7 @@ func (s *CollectionService) UpdateLayoutTimeline(ctx context.Context, id string)
|
||||||
form.Set("collection_id", id)
|
form.Set("collection_id", id)
|
||||||
form.Set("display_layout", "TIMELINE")
|
form.Set("display_layout", "TIMELINE")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -249,7 +249,7 @@ func (s *CollectionService) UpdateLayoutGallery(ctx context.Context, id string)
|
||||||
form.Set("collection_id", id)
|
form.Set("collection_id", id)
|
||||||
form.Set("display_layout", "GALLERY")
|
form.Set("display_layout", "GALLERY")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -265,7 +265,7 @@ func (s *CollectionService) Follow(ctx context.Context, id string) (*Response, e
|
||||||
form.Set("collection_id", id)
|
form.Set("collection_id", id)
|
||||||
form.Set("follow", "true")
|
form.Set("follow", "true")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -281,7 +281,7 @@ func (s *CollectionService) Unfollow(ctx context.Context, id string) (*Response,
|
||||||
form.Set("collection_id", id)
|
form.Set("collection_id", id)
|
||||||
form.Set("follow", "false")
|
form.Set("follow", "false")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ func (s *CommentService) Submit(ctx context.Context, parentID string, text strin
|
||||||
form.Set("parent", parentID)
|
form.Set("parent", parentID)
|
||||||
form.Set("text", text)
|
form.Set("text", text)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ func (s *CommentService) Edit(ctx context.Context, id string, text string) (*Com
|
||||||
form.Set("thing_id", id)
|
form.Set("thing_id", id)
|
||||||
form.Set("text", text)
|
form.Set("text", text)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ func (s *CommentService) LoadMoreReplies(ctx context.Context, comment *Comment)
|
||||||
|
|
||||||
// This was originally a GET, but with POST you can send a bigger payload
|
// This was originally a GET, but with POST you can send a bigger payload
|
||||||
// since it's in the body and not the URI.
|
// since it's in the body and not the URI.
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,12 +104,10 @@ func (s *EmojiService) Get(ctx context.Context, subreddit string) ([]*Emoji, []*
|
||||||
// Delete the emoji from the subreddit.
|
// Delete the emoji from the subreddit.
|
||||||
func (s *EmojiService) Delete(ctx context.Context, subreddit string, emoji string) (*Response, error) {
|
func (s *EmojiService) Delete(ctx context.Context, subreddit string, emoji string) (*Response, error) {
|
||||||
path := fmt.Sprintf("api/v1/%s/emoji/%s", subreddit, emoji)
|
path := fmt.Sprintf("api/v1/%s/emoji/%s", subreddit, emoji)
|
||||||
|
|
||||||
req, err := s.client.NewRequest(http.MethodDelete, path, nil)
|
req, err := s.client.NewRequest(http.MethodDelete, path, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return s.client.Do(ctx, req, nil)
|
return s.client.Do(ctx, req, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,7 +120,7 @@ func (s *EmojiService) SetSize(ctx context.Context, subreddit string, height, wi
|
||||||
form.Set("height", fmt.Sprint(height))
|
form.Set("height", fmt.Sprint(height))
|
||||||
form.Set("width", fmt.Sprint(width))
|
form.Set("width", fmt.Sprint(width))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -133,12 +131,10 @@ func (s *EmojiService) SetSize(ctx context.Context, subreddit string, height, wi
|
||||||
// DisableCustomSize disables the custom emoji size in the subreddit.
|
// DisableCustomSize disables the custom emoji size in the subreddit.
|
||||||
func (s *EmojiService) DisableCustomSize(ctx context.Context, subreddit string) (*Response, error) {
|
func (s *EmojiService) DisableCustomSize(ctx context.Context, subreddit string) (*Response, error) {
|
||||||
path := fmt.Sprintf("api/v1/%s/emoji_custom_size", subreddit)
|
path := fmt.Sprintf("api/v1/%s/emoji_custom_size", subreddit)
|
||||||
|
req, err := s.client.NewRequest(http.MethodPost, path, nil)
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, nil)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return s.client.Do(ctx, req, nil)
|
return s.client.Do(ctx, req, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +148,7 @@ func (s *EmojiService) lease(ctx context.Context, subreddit, imagePath string) (
|
||||||
form.Set("mimetype", "image/png")
|
form.Set("mimetype", "image/png")
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", nil, nil, err
|
return "", nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -191,7 +187,7 @@ func (s *EmojiService) upload(ctx context.Context, subreddit string, createReque
|
||||||
}
|
}
|
||||||
form.Set("s3_key", awsKey)
|
form.Set("s3_key", awsKey)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -276,7 +272,7 @@ func (s *EmojiService) Update(ctx context.Context, subreddit string, updateReque
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -172,7 +172,7 @@ func (s *FlairService) Configure(ctx context.Context, subreddit string, request
|
||||||
}
|
}
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -188,7 +188,7 @@ func (s *FlairService) Enable(ctx context.Context, subreddit string) (*Response,
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
form.Set("flair_enabled", "true")
|
form.Set("flair_enabled", "true")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ func (s *FlairService) Disable(ctx context.Context, subreddit string) (*Response
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
form.Set("flair_enabled", "false")
|
form.Set("flair_enabled", "false")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -228,7 +228,7 @@ func (s *FlairService) UpsertUserTemplate(ctx context.Context, subreddit string,
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
form.Set("flair_type", "USER_FLAIR")
|
form.Set("flair_type", "USER_FLAIR")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -258,7 +258,7 @@ func (s *FlairService) UpsertPostTemplate(ctx context.Context, subreddit string,
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
form.Set("flair_type", "LINK_FLAIR")
|
form.Set("flair_type", "LINK_FLAIR")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -280,7 +280,7 @@ func (s *FlairService) Delete(ctx context.Context, subreddit, username string) (
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
form.Set("name", username)
|
form.Set("name", username)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -296,7 +296,7 @@ func (s *FlairService) DeleteTemplate(ctx context.Context, subreddit, id string)
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
form.Set("flair_template_id", id)
|
form.Set("flair_template_id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -312,7 +312,7 @@ func (s *FlairService) DeleteAllUserTemplates(ctx context.Context, subreddit str
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
form.Set("flair_type", "USER_FLAIR")
|
form.Set("flair_type", "USER_FLAIR")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -328,7 +328,7 @@ func (s *FlairService) DeleteAllPostTemplates(ctx context.Context, subreddit str
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
form.Set("flair_type", "LINK_FLAIR")
|
form.Set("flair_type", "LINK_FLAIR")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -339,7 +339,7 @@ func (s *FlairService) DeleteAllPostTemplates(ctx context.Context, subreddit str
|
||||||
// ReorderUserTemplates reorders the user flair templates in the order provided in the slice.
|
// ReorderUserTemplates reorders the user flair templates in the order provided in the slice.
|
||||||
func (s *FlairService) ReorderUserTemplates(ctx context.Context, subreddit string, ids []string) (*Response, error) {
|
func (s *FlairService) ReorderUserTemplates(ctx context.Context, subreddit string, ids []string) (*Response, error) {
|
||||||
path := fmt.Sprintf("api/v1/%s/flair_template_order/USER_FLAIR", subreddit)
|
path := fmt.Sprintf("api/v1/%s/flair_template_order/USER_FLAIR", subreddit)
|
||||||
req, err := s.client.NewRequest(http.MethodPatch, path, ids)
|
req, err := s.client.NewJSONRequest(http.MethodPatch, path, ids)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -349,7 +349,7 @@ func (s *FlairService) ReorderUserTemplates(ctx context.Context, subreddit strin
|
||||||
// ReorderPostTemplates reorders the post flair templates in the order provided in the slice.
|
// ReorderPostTemplates reorders the post flair templates in the order provided in the slice.
|
||||||
func (s *FlairService) ReorderPostTemplates(ctx context.Context, subreddit string, ids []string) (*Response, error) {
|
func (s *FlairService) ReorderPostTemplates(ctx context.Context, subreddit string, ids []string) (*Response, error) {
|
||||||
path := fmt.Sprintf("api/v1/%s/flair_template_order/LINK_FLAIR", subreddit)
|
path := fmt.Sprintf("api/v1/%s/flair_template_order/LINK_FLAIR", subreddit)
|
||||||
req, err := s.client.NewRequest(http.MethodPatch, path, ids)
|
req, err := s.client.NewJSONRequest(http.MethodPatch, path, ids)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,12 +20,10 @@ type GoldService struct {
|
||||||
// This requires you to own Reddit coins and will consume them.
|
// This requires you to own Reddit coins and will consume them.
|
||||||
func (s *GoldService) Gild(ctx context.Context, id string) (*Response, error) {
|
func (s *GoldService) Gild(ctx context.Context, id string) (*Response, error) {
|
||||||
path := fmt.Sprintf("api/v1/gold/gild/%s", id)
|
path := fmt.Sprintf("api/v1/gold/gild/%s", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequest(http.MethodPost, path, nil)
|
req, err := s.client.NewRequest(http.MethodPost, path, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return s.client.Do(ctx, req, nil)
|
return s.client.Do(ctx, req, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +39,7 @@ func (s *GoldService) Give(ctx context.Context, username string, months int) (*R
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("months", fmt.Sprint(months))
|
form.Set("months", fmt.Sprint(months))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,12 +118,10 @@ type SendMessageRequest struct {
|
||||||
// This endpoint is heavily rate limited.
|
// This endpoint is heavily rate limited.
|
||||||
func (s *MessageService) ReadAll(ctx context.Context) (*Response, error) {
|
func (s *MessageService) ReadAll(ctx context.Context) (*Response, error) {
|
||||||
path := "api/read_all_messages"
|
path := "api/read_all_messages"
|
||||||
|
|
||||||
req, err := s.client.NewRequest(http.MethodPost, path, nil)
|
req, err := s.client.NewRequest(http.MethodPost, path, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return s.client.Do(ctx, req, nil)
|
return s.client.Do(ctx, req, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,7 +136,7 @@ func (s *MessageService) Read(ctx context.Context, ids ...string) (*Response, er
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", strings.Join(ids, ","))
|
form.Set("id", strings.Join(ids, ","))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -157,7 +155,7 @@ func (s *MessageService) Unread(ctx context.Context, ids ...string) (*Response,
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", strings.Join(ids, ","))
|
form.Set("id", strings.Join(ids, ","))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -172,7 +170,7 @@ func (s *MessageService) Block(ctx context.Context, id string) (*Response, error
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -191,7 +189,7 @@ func (s *MessageService) Collapse(ctx context.Context, ids ...string) (*Response
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", strings.Join(ids, ","))
|
form.Set("id", strings.Join(ids, ","))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -210,7 +208,7 @@ func (s *MessageService) Uncollapse(ctx context.Context, ids ...string) (*Respon
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", strings.Join(ids, ","))
|
form.Set("id", strings.Join(ids, ","))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -225,7 +223,7 @@ func (s *MessageService) Delete(ctx context.Context, id string) (*Response, erro
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -247,7 +245,7 @@ func (s *MessageService) Send(ctx context.Context, sendRequest *SendMessageReque
|
||||||
}
|
}
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,7 +116,7 @@ func (s *ModerationService) AcceptInvite(ctx context.Context, subreddit string)
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -131,7 +131,7 @@ func (s *ModerationService) Approve(ctx context.Context, id string) (*Response,
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -147,7 +147,7 @@ func (s *ModerationService) Remove(ctx context.Context, id string) (*Response, e
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
form.Set("spam", "false")
|
form.Set("spam", "false")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -163,7 +163,7 @@ func (s *ModerationService) RemoveSpam(ctx context.Context, id string) (*Respons
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
form.Set("spam", "true")
|
form.Set("spam", "true")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -178,7 +178,7 @@ func (s *ModerationService) Leave(ctx context.Context, subredditID string) (*Res
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", subredditID)
|
form.Set("id", subredditID)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -193,7 +193,7 @@ func (s *ModerationService) LeaveContributor(ctx context.Context, subredditID st
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", subredditID)
|
form.Set("id", subredditID)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -259,7 +259,7 @@ func (s *ModerationService) IgnoreReports(ctx context.Context, id string) (*Resp
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -274,7 +274,7 @@ func (s *ModerationService) UnignoreReports(ctx context.Context, id string) (*Re
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -293,7 +293,7 @@ func (s *ModerationService) Invite(ctx context.Context, subreddit string, userna
|
||||||
form.Set("type", "moderator_invite")
|
form.Set("type", "moderator_invite")
|
||||||
form.Set("permissions", permissions.String())
|
form.Set("permissions", permissions.String())
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -317,7 +317,7 @@ func (s *ModerationService) SetPermissions(ctx context.Context, subreddit string
|
||||||
form.Set("type", "moderator_invite")
|
form.Set("type", "moderator_invite")
|
||||||
form.Set("permissions", permissions.String())
|
form.Set("permissions", permissions.String())
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -338,7 +338,7 @@ func (s *ModerationService) Ban(ctx context.Context, subreddit string, username
|
||||||
form.Set("name", username)
|
form.Set("name", username)
|
||||||
form.Set("type", "banned")
|
form.Set("type", "banned")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -364,7 +364,7 @@ func (s *ModerationService) BanWiki(ctx context.Context, subreddit string, usern
|
||||||
form.Set("name", username)
|
form.Set("name", username)
|
||||||
form.Set("type", "wikibanned")
|
form.Set("type", "wikibanned")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -415,7 +415,7 @@ func (s *ModerationService) createRelationship(ctx context.Context, subreddit, u
|
||||||
form.Set("name", username)
|
form.Set("name", username)
|
||||||
form.Set("type", relationship)
|
form.Set("type", relationship)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -431,7 +431,7 @@ func (s *ModerationService) deleteRelationship(ctx context.Context, subreddit, u
|
||||||
form.Set("name", username)
|
form.Set("name", username)
|
||||||
form.Set("type", relationship)
|
form.Set("type", relationship)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -449,7 +449,7 @@ func (s *ModerationService) Distinguish(ctx context.Context, id string) (*Respon
|
||||||
form.Set("how", "yes")
|
form.Set("how", "yes")
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -468,7 +468,7 @@ func (s *ModerationService) DistinguishAndSticky(ctx context.Context, id string)
|
||||||
form.Set("sticky", "true")
|
form.Set("sticky", "true")
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -485,7 +485,7 @@ func (s *ModerationService) Undistinguish(ctx context.Context, id string) (*Resp
|
||||||
form.Set("how", "no")
|
form.Set("how", "no")
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,15 +109,12 @@ func (r *MultiCreateOrUpdateRequest) Form() url.Values {
|
||||||
}
|
}
|
||||||
|
|
||||||
type rootMultiDescription struct {
|
type rootMultiDescription struct {
|
||||||
Data struct {
|
Body string `json:"body_md"`
|
||||||
Body string `json:"body_md"`
|
|
||||||
} `json:"data"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the multireddit from its url path.
|
// Get the multireddit from its url path.
|
||||||
func (s *MultiService) Get(ctx context.Context, multiPath string) (*Multi, *Response, error) {
|
func (s *MultiService) Get(ctx context.Context, multiPath string) (*Multi, *Response, error) {
|
||||||
path := fmt.Sprintf("api/multi/%s", multiPath)
|
path := fmt.Sprintf("api/multi/%s", multiPath)
|
||||||
|
|
||||||
req, err := s.client.NewRequest(http.MethodGet, path, nil)
|
req, err := s.client.NewRequest(http.MethodGet, path, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
|
@ -136,7 +133,6 @@ func (s *MultiService) Get(ctx context.Context, multiPath string) (*Multi, *Resp
|
||||||
// Mine returns your multireddits.
|
// Mine returns your multireddits.
|
||||||
func (s *MultiService) Mine(ctx context.Context) ([]*Multi, *Response, error) {
|
func (s *MultiService) Mine(ctx context.Context) ([]*Multi, *Response, error) {
|
||||||
path := "api/multi/mine"
|
path := "api/multi/mine"
|
||||||
|
|
||||||
req, err := s.client.NewRequest(http.MethodGet, path, nil)
|
req, err := s.client.NewRequest(http.MethodGet, path, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
|
@ -155,7 +151,6 @@ func (s *MultiService) Mine(ctx context.Context) ([]*Multi, *Response, error) {
|
||||||
// Or, if the user is you, all of your multireddits.
|
// Or, if the user is you, all of your multireddits.
|
||||||
func (s *MultiService) Of(ctx context.Context, username string) ([]*Multi, *Response, error) {
|
func (s *MultiService) Of(ctx context.Context, username string) ([]*Multi, *Response, error) {
|
||||||
path := fmt.Sprintf("api/multi/user/%s", username)
|
path := fmt.Sprintf("api/multi/user/%s", username)
|
||||||
|
|
||||||
req, err := s.client.NewRequest(http.MethodGet, path, nil)
|
req, err := s.client.NewRequest(http.MethodGet, path, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
|
@ -182,7 +177,7 @@ func (s *MultiService) Copy(ctx context.Context, copyRequest *MultiCopyRequest)
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -204,8 +199,7 @@ func (s *MultiService) Create(ctx context.Context, createRequest *MultiCreateOrU
|
||||||
}
|
}
|
||||||
|
|
||||||
path := "api/multi"
|
path := "api/multi"
|
||||||
|
req, err := s.client.NewRequest(http.MethodPost, path, createRequest.Form())
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, createRequest.Form())
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -228,8 +222,7 @@ func (s *MultiService) Update(ctx context.Context, multiPath string, updateReque
|
||||||
}
|
}
|
||||||
|
|
||||||
path := fmt.Sprintf("api/multi/%s", multiPath)
|
path := fmt.Sprintf("api/multi/%s", multiPath)
|
||||||
|
req, err := s.client.NewRequest(http.MethodPut, path, updateRequest.Form())
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPut, path, updateRequest.Form())
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -247,17 +240,15 @@ func (s *MultiService) Update(ctx context.Context, multiPath string, updateReque
|
||||||
// Delete a multireddit.
|
// Delete a multireddit.
|
||||||
func (s *MultiService) Delete(ctx context.Context, multiPath string) (*Response, error) {
|
func (s *MultiService) Delete(ctx context.Context, multiPath string) (*Response, error) {
|
||||||
path := fmt.Sprintf("api/multi/%s", multiPath)
|
path := fmt.Sprintf("api/multi/%s", multiPath)
|
||||||
|
|
||||||
req, err := s.client.NewRequest(http.MethodDelete, path, nil)
|
req, err := s.client.NewRequest(http.MethodDelete, path, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return s.client.Do(ctx, req, nil)
|
return s.client.Do(ctx, req, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDescription gets a multireddit's description.
|
// Description gets a multireddit's description.
|
||||||
func (s *MultiService) GetDescription(ctx context.Context, multiPath string) (string, *Response, error) {
|
func (s *MultiService) Description(ctx context.Context, multiPath string) (string, *Response, error) {
|
||||||
path := fmt.Sprintf("api/multi/%s/description", multiPath)
|
path := fmt.Sprintf("api/multi/%s/description", multiPath)
|
||||||
|
|
||||||
req, err := s.client.NewRequest(http.MethodGet, path, nil)
|
req, err := s.client.NewRequest(http.MethodGet, path, nil)
|
||||||
|
@ -265,13 +256,14 @@ func (s *MultiService) GetDescription(ctx context.Context, multiPath string) (st
|
||||||
return "", nil, err
|
return "", nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
root := new(rootMultiDescription)
|
root := new(thing)
|
||||||
resp, err := s.client.Do(ctx, req, root)
|
resp, err := s.client.Do(ctx, req, root)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", resp, err
|
return "", resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return root.Data.Body, resp, nil
|
multiDescription, _ := root.MultiDescription()
|
||||||
|
return multiDescription, resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateDescription updates a multireddit's description.
|
// UpdateDescription updates a multireddit's description.
|
||||||
|
@ -281,18 +273,19 @@ func (s *MultiService) UpdateDescription(ctx context.Context, multiPath string,
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("model", fmt.Sprintf(`{"body_md":"%s"}`, description))
|
form.Set("model", fmt.Sprintf(`{"body_md":"%s"}`, description))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPut, path, form)
|
req, err := s.client.NewRequest(http.MethodPut, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", nil, err
|
return "", nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
root := new(rootMultiDescription)
|
root := new(thing)
|
||||||
resp, err := s.client.Do(ctx, req, root)
|
resp, err := s.client.Do(ctx, req, root)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", resp, err
|
return "", resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return root.Data.Body, resp, nil
|
multiDescription, _ := root.MultiDescription()
|
||||||
|
return multiDescription, resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddSubreddit adds a subreddit to a multireddit.
|
// AddSubreddit adds a subreddit to a multireddit.
|
||||||
|
@ -302,7 +295,7 @@ func (s *MultiService) AddSubreddit(ctx context.Context, multiPath string, subre
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("model", fmt.Sprintf(`{"name":"%s"}`, subreddit))
|
form.Set("model", fmt.Sprintf(`{"name":"%s"}`, subreddit))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPut, path, form)
|
req, err := s.client.NewRequest(http.MethodPut, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -313,11 +306,9 @@ func (s *MultiService) AddSubreddit(ctx context.Context, multiPath string, subre
|
||||||
// DeleteSubreddit removes a subreddit from a multireddit.
|
// DeleteSubreddit removes a subreddit from a multireddit.
|
||||||
func (s *MultiService) DeleteSubreddit(ctx context.Context, multiPath string, subreddit string) (*Response, error) {
|
func (s *MultiService) DeleteSubreddit(ctx context.Context, multiPath string, subreddit string) (*Response, error) {
|
||||||
path := fmt.Sprintf("api/multi/%s/r/%s", multiPath, subreddit)
|
path := fmt.Sprintf("api/multi/%s/r/%s", multiPath, subreddit)
|
||||||
|
|
||||||
req, err := s.client.NewRequest(http.MethodDelete, path, nil)
|
req, err := s.client.NewRequest(http.MethodDelete, path, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return s.client.Do(ctx, req, nil)
|
return s.client.Do(ctx, req, nil)
|
||||||
}
|
}
|
||||||
|
|
|
@ -217,7 +217,7 @@ func TestMultiService_Delete(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMultiService_GetDescription(t *testing.T) {
|
func TestMultiService_Description(t *testing.T) {
|
||||||
client, mux, teardown := setup()
|
client, mux, teardown := setup()
|
||||||
defer teardown()
|
defer teardown()
|
||||||
|
|
||||||
|
@ -229,7 +229,7 @@ func TestMultiService_GetDescription(t *testing.T) {
|
||||||
fmt.Fprint(w, blob)
|
fmt.Fprint(w, blob)
|
||||||
})
|
})
|
||||||
|
|
||||||
description, _, err := client.Multi.GetDescription(ctx, "user/testuser/m/testmulti")
|
description, _, err := client.Multi.Description(ctx, "user/testuser/m/testmulti")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, "hello world", description)
|
require.Equal(t, "hello world", description)
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ func (s *postAndCommentService) Delete(ctx context.Context, id string) (*Respons
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ func (s *postAndCommentService) Save(ctx context.Context, id string) (*Response,
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ func (s *postAndCommentService) Unsave(ctx context.Context, id string) (*Respons
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ func (s *postAndCommentService) EnableReplies(ctx context.Context, id string) (*
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
form.Set("state", "true")
|
form.Set("state", "true")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ func (s *postAndCommentService) DisableReplies(ctx context.Context, id string) (
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
form.Set("state", "false")
|
form.Set("state", "false")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ func (s *postAndCommentService) Lock(ctx context.Context, id string) (*Response,
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ func (s *postAndCommentService) Unlock(ctx context.Context, id string) (*Respons
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ func (s *postAndCommentService) vote(ctx context.Context, id string, vote vote)
|
||||||
form.Set("dir", fmt.Sprint(vote))
|
form.Set("dir", fmt.Sprint(vote))
|
||||||
form.Set("rank", "10")
|
form.Set("rank", "10")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -163,7 +163,7 @@ func (s *postAndCommentService) RemoveVote(ctx context.Context, id string) (*Res
|
||||||
return s.vote(ctx, id, novote)
|
return s.vote(ctx, id, novote)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Report reports a post or comment.
|
// Report a post or comment.
|
||||||
// The reason must not be longer than 100 characters.
|
// The reason must not be longer than 100 characters.
|
||||||
func (s *postAndCommentService) Report(ctx context.Context, id string, reason string) (*Response, error) {
|
func (s *postAndCommentService) Report(ctx context.Context, id string, reason string) (*Response, error) {
|
||||||
path := "api/report"
|
path := "api/report"
|
||||||
|
@ -173,7 +173,7 @@ func (s *postAndCommentService) Report(ctx context.Context, id string, reason st
|
||||||
form.Set("thing_id", id)
|
form.Set("thing_id", id)
|
||||||
form.Set("reason", reason)
|
form.Set("reason", reason)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ func (s *PostService) submit(ctx context.Context, v interface{}) (*Submitted, *R
|
||||||
}
|
}
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -165,7 +165,7 @@ func (s *PostService) Edit(ctx context.Context, id string, text string) (*Post,
|
||||||
form.Set("thing_id", id)
|
form.Set("thing_id", id)
|
||||||
form.Set("text", text)
|
form.Set("text", text)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -190,7 +190,7 @@ func (s *PostService) Hide(ctx context.Context, ids ...string) (*Response, error
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", strings.Join(ids, ","))
|
form.Set("id", strings.Join(ids, ","))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -209,7 +209,7 @@ func (s *PostService) Unhide(ctx context.Context, ids ...string) (*Response, err
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", strings.Join(ids, ","))
|
form.Set("id", strings.Join(ids, ","))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -224,7 +224,7 @@ func (s *PostService) MarkNSFW(ctx context.Context, id string) (*Response, error
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -239,7 +239,7 @@ func (s *PostService) UnmarkNSFW(ctx context.Context, id string) (*Response, err
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -254,7 +254,7 @@ func (s *PostService) Spoiler(ctx context.Context, id string) (*Response, error)
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -269,7 +269,7 @@ func (s *PostService) Unspoiler(ctx context.Context, id string) (*Response, erro
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -292,7 +292,7 @@ func (s *PostService) Sticky(ctx context.Context, id string, bottom bool) (*Resp
|
||||||
form.Set("num", "1")
|
form.Set("num", "1")
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -309,7 +309,7 @@ func (s *PostService) Unsticky(ctx context.Context, id string) (*Response, error
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
form.Set("state", "false")
|
form.Set("state", "false")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -341,7 +341,7 @@ func (s *PostService) PinToProfile(ctx context.Context, id string) (*Response, e
|
||||||
form.Set("to_profile", "true")
|
form.Set("to_profile", "true")
|
||||||
// form.Set("num", fmt.Sprint(pos))
|
// form.Set("num", fmt.Sprint(pos))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -359,7 +359,7 @@ func (s *PostService) UnpinFromProfile(ctx context.Context, id string) (*Respons
|
||||||
form.Set("state", "false")
|
form.Set("state", "false")
|
||||||
form.Set("to_profile", "true")
|
form.Set("to_profile", "true")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -377,7 +377,7 @@ func (s *PostService) setSuggestedSort(ctx context.Context, id string, sort stri
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
form.Set("sort", sort)
|
form.Set("sort", sort)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -441,7 +441,7 @@ func (s *PostService) EnableContestMode(ctx context.Context, id string) (*Respon
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
form.Set("state", "true")
|
form.Set("state", "true")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -458,7 +458,7 @@ func (s *PostService) DisableContestMode(ctx context.Context, id string) (*Respo
|
||||||
form.Set("id", id)
|
form.Set("id", id)
|
||||||
form.Set("state", "false")
|
form.Set("state", "false")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -488,7 +488,7 @@ func (s *PostService) LoadMoreComments(ctx context.Context, pc *PostAndComments)
|
||||||
|
|
||||||
// This was originally a GET, but with POST you can send a bigger payload
|
// This was originally a GET, but with POST you can send a bigger payload
|
||||||
// since it's in the body and not the URI.
|
// since it's in the body and not the URI.
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -575,7 +575,7 @@ func (s *PostService) MarkVisited(ctx context.Context, ids ...string) (*Response
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("links", strings.Join(ids, ","))
|
form.Set("links", strings.Join(ids, ","))
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -217,10 +217,36 @@ func (c *Client) UserAgent() string {
|
||||||
return c.userAgent
|
return c.userAgent
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewRequest creates an API request with a JSON body.
|
// NewRequest creates an API request with form data as the body.
|
||||||
|
// The path is the relative URL which will be resolves to the BaseURL of the Client.
|
||||||
|
// It should always be specified without a preceding slash.
|
||||||
|
func (c *Client) NewRequest(method string, path string, form url.Values) (*http.Request, error) {
|
||||||
|
u, err := c.BaseURL.Parse(path)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var body io.Reader
|
||||||
|
if form != nil {
|
||||||
|
body = strings.NewReader(form.Encode())
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequest(method, u.String(), body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
c.appendJSONExtensionToRequestURLPath(req)
|
||||||
|
req.Header.Add(headerContentType, mediaTypeForm)
|
||||||
|
req.Header.Add(headerAccept, mediaTypeJSON)
|
||||||
|
|
||||||
|
return req, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewJSONRequest creates an API request with a JSON body.
|
||||||
// The path is the relative URL which will be resolved to the BaseURL of the Client.
|
// The path is the relative URL which will be resolved to the BaseURL of the Client.
|
||||||
// It should always be specified without a preceding slash.
|
// It should always be specified without a preceding slash.
|
||||||
func (c *Client) NewRequest(method string, path string, body interface{}) (*http.Request, error) {
|
func (c *Client) NewJSONRequest(method string, path string, body interface{}) (*http.Request, error) {
|
||||||
u, err := c.BaseURL.Parse(path)
|
u, err := c.BaseURL.Parse(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -247,27 +273,6 @@ func (c *Client) NewRequest(method string, path string, body interface{}) (*http
|
||||||
return req, nil
|
return req, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewRequestWithForm creates an API request with form data.
|
|
||||||
// The path is the relative URL which will be resolves to the BaseURL of the Client.
|
|
||||||
// It should always be specified without a preceding slash.
|
|
||||||
func (c *Client) NewRequestWithForm(method string, path string, form url.Values) (*http.Request, error) {
|
|
||||||
u, err := c.BaseURL.Parse(path)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
req, err := http.NewRequest(method, u.String(), strings.NewReader(form.Encode()))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
c.appendJSONExtensionToRequestURLPath(req)
|
|
||||||
req.Header.Add(headerContentType, mediaTypeForm)
|
|
||||||
req.Header.Add(headerAccept, mediaTypeJSON)
|
|
||||||
|
|
||||||
return req, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Response is a Reddit response. This wraps the standard http.Response returned from Reddit.
|
// Response is a Reddit response. This wraps the standard http.Response returned from Reddit.
|
||||||
type Response struct {
|
type Response struct {
|
||||||
*http.Response
|
*http.Response
|
||||||
|
|
|
@ -187,12 +187,10 @@ func (s *SubredditService) GetSticky2(ctx context.Context, subreddit string) (*P
|
||||||
|
|
||||||
func (s *SubredditService) handleSubscription(ctx context.Context, form url.Values) (*Response, error) {
|
func (s *SubredditService) handleSubscription(ctx context.Context, form url.Values) (*Response, error) {
|
||||||
path := "api/subscribe"
|
path := "api/subscribe"
|
||||||
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return s.client.Do(ctx, req, nil)
|
return s.client.Do(ctx, req, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,7 +235,7 @@ func (s *SubredditService) Favorite(ctx context.Context, subreddit string) (*Res
|
||||||
form.Set("make_favorite", "true")
|
form.Set("make_favorite", "true")
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -254,7 +252,7 @@ func (s *SubredditService) Unfavorite(ctx context.Context, subreddit string) (*R
|
||||||
form.Set("make_favorite", "false")
|
form.Set("make_favorite", "false")
|
||||||
form.Set("api_type", "json")
|
form.Set("api_type", "json")
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -425,7 +423,7 @@ func (s *SubredditService) random(ctx context.Context, nsfw bool) (*Subreddit, *
|
||||||
|
|
||||||
root := new(struct {
|
root := new(struct {
|
||||||
Data struct {
|
Data struct {
|
||||||
Children []struct {
|
Children [1]struct {
|
||||||
Data struct {
|
Data struct {
|
||||||
Subreddit *Subreddit `json:"sr_detail"`
|
Subreddit *Subreddit `json:"sr_detail"`
|
||||||
} `json:"data"`
|
} `json:"data"`
|
||||||
|
@ -437,12 +435,8 @@ func (s *SubredditService) random(ctx context.Context, nsfw bool) (*Subreddit, *
|
||||||
return nil, resp, err
|
return nil, resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var sr *Subreddit
|
subreddit := root.Data.Children[0].Data.Subreddit
|
||||||
if len(root.Data.Children) > 0 {
|
return subreddit, resp, nil
|
||||||
sr = root.Data.Children[0].Data.Subreddit
|
|
||||||
}
|
|
||||||
|
|
||||||
return sr, resp, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Random returns a random SFW subreddit.
|
// Random returns a random SFW subreddit.
|
||||||
|
|
|
@ -19,6 +19,7 @@ const (
|
||||||
kindMore = "more"
|
kindMore = "more"
|
||||||
kindModAction = "modaction"
|
kindModAction = "modaction"
|
||||||
kindMulti = "LabeledMulti"
|
kindMulti = "LabeledMulti"
|
||||||
|
kindMultiDescription = "LabeledMultiDescription"
|
||||||
kindWikiPage = "wikipage"
|
kindWikiPage = "wikipage"
|
||||||
kindWikiPageListing = "wikipagelisting"
|
kindWikiPageListing = "wikipagelisting"
|
||||||
kindWikiPageSettings = "wikipagesettings"
|
kindWikiPageSettings = "wikipagesettings"
|
||||||
|
@ -91,6 +92,8 @@ func (t *thing) UnmarshalJSON(b []byte) error {
|
||||||
v = new(ModAction)
|
v = new(ModAction)
|
||||||
case kindMulti:
|
case kindMulti:
|
||||||
v = new(Multi)
|
v = new(Multi)
|
||||||
|
case kindMultiDescription:
|
||||||
|
v = new(rootMultiDescription)
|
||||||
case kindTrophy:
|
case kindTrophy:
|
||||||
v = new(Trophy)
|
v = new(Trophy)
|
||||||
case kindTrophyList:
|
case kindTrophyList:
|
||||||
|
@ -156,6 +159,14 @@ func (t *thing) Multi() (v *Multi, ok bool) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *thing) MultiDescription() (s string, ok bool) {
|
||||||
|
v, ok := t.Data.(*rootMultiDescription)
|
||||||
|
if ok {
|
||||||
|
s = v.Body
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (t *thing) Trophy() (v *Trophy, ok bool) {
|
func (t *thing) Trophy() (v *Trophy, ok bool) {
|
||||||
v, ok = t.Data.(*Trophy)
|
v, ok = t.Data.(*Trophy)
|
||||||
return
|
return
|
||||||
|
|
|
@ -366,7 +366,7 @@ func (s *UserService) Friend(ctx context.Context, username string) (*Relationshi
|
||||||
}{username}
|
}{username}
|
||||||
|
|
||||||
path := fmt.Sprintf("api/v1/me/friends/%s", username)
|
path := fmt.Sprintf("api/v1/me/friends/%s", username)
|
||||||
req, err := s.client.NewRequest(http.MethodPut, path, body)
|
req, err := s.client.NewJSONRequest(http.MethodPut, path, body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -397,7 +397,7 @@ func (s *UserService) Block(ctx context.Context, username string) (*Blocked, *Re
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("name", username)
|
form.Set("name", username)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -418,7 +418,7 @@ func (s *UserService) BlockByID(ctx context.Context, id string) (*Blocked, *Resp
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Set("account_id", id)
|
form.Set("account_id", id)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -446,7 +446,7 @@ func (s *UserService) Unblock(ctx context.Context, username string) (*Response,
|
||||||
form.Set("type", "enemy")
|
form.Set("type", "enemy")
|
||||||
form.Set("container", selfID)
|
form.Set("container", selfID)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -468,7 +468,7 @@ func (s *UserService) UnblockByID(ctx context.Context, id string) (*Response, er
|
||||||
form.Set("type", "enemy")
|
form.Set("type", "enemy")
|
||||||
form.Set("container", selfID)
|
form.Set("container", selfID)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -244,7 +244,7 @@ func (s *WikiService) Edit(ctx context.Context, editRequest *WikiPageEditRequest
|
||||||
}
|
}
|
||||||
|
|
||||||
path := fmt.Sprintf("r/%s/api/wiki/edit", editRequest.Subreddit)
|
path := fmt.Sprintf("r/%s/api/wiki/edit", editRequest.Subreddit)
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -260,7 +260,7 @@ func (s *WikiService) Revert(ctx context.Context, subreddit, page, revisionID st
|
||||||
form.Set("page", page)
|
form.Set("page", page)
|
||||||
form.Set("revision", revisionID)
|
form.Set("revision", revisionID)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -299,7 +299,7 @@ func (s *WikiService) UpdateSettings(ctx context.Context, subreddit, page string
|
||||||
}
|
}
|
||||||
|
|
||||||
path := fmt.Sprintf("r/%s/wiki/settings/%s", subreddit, page)
|
path := fmt.Sprintf("r/%s/wiki/settings/%s", subreddit, page)
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -346,7 +346,7 @@ func (s *WikiService) ToggleVisibility(ctx context.Context, subreddit, page, rev
|
||||||
form.Set("page", page)
|
form.Set("page", page)
|
||||||
form.Set("revision", revisionID)
|
form.Set("revision", revisionID)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, nil, err
|
return false, nil, err
|
||||||
}
|
}
|
||||||
|
@ -416,7 +416,7 @@ func (s *WikiService) Allow(ctx context.Context, subreddit, page, username strin
|
||||||
form.Set("page", page)
|
form.Set("page", page)
|
||||||
form.Set("username", username)
|
form.Set("username", username)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -432,7 +432,7 @@ func (s *WikiService) Deny(ctx context.Context, subreddit, page, username string
|
||||||
form.Set("page", page)
|
form.Set("page", page)
|
||||||
form.Set("username", username)
|
form.Set("username", username)
|
||||||
|
|
||||||
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
|
req, err := s.client.NewRequest(http.MethodPost, path, form)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue