Delete emojis, set their size

Signed-off-by: Vartan Benohanian <vartanbeno@gmail.com>
This commit is contained in:
Vartan Benohanian 2020-08-08 11:21:10 -04:00
parent 73db8f30d8
commit a422ba631b
2 changed files with 102 additions and 0 deletions

View File

@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"strings"
)
@ -70,6 +71,13 @@ func (s *EmojiService) Get(ctx context.Context, subreddit string) ([]*Emoji, []*
return nil, nil, resp, err
}
/*
The response to this request is something like:
{
"snoomojis": { ... },
"t5_subredditId": { ... }
}
*/
defaultEmojis := root["snoomojis"]
var subredditEmojis []*Emoji
@ -82,3 +90,46 @@ func (s *EmojiService) Get(ctx context.Context, subreddit string) ([]*Emoji, []*
return defaultEmojis, subredditEmojis, resp, nil
}
// Delete deletes the emoji from the subreddit.
func (s *EmojiService) Delete(ctx context.Context, subreddit string, emoji string) (*Response, error) {
path := fmt.Sprintf("api/v1/%s/emoji/%s", subreddit, emoji)
req, err := s.client.NewRequest(http.MethodDelete, path, nil)
if err != nil {
return nil, err
}
return s.client.Do(ctx, req, nil)
}
//todo: fav subreddits
// SetSize sets the custom emoji size in the subreddit.
// Both height and width must be between 1 and 40 (inclusive).
func (s *EmojiService) SetSize(ctx context.Context, subreddit string, height, width int) (*Response, error) {
path := fmt.Sprintf("api/v1/%s/emoji_custom_size", subreddit)
form := url.Values{}
form.Set("height", fmt.Sprint(height))
form.Set("width", fmt.Sprint(width))
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
if err != nil {
return nil, err
}
return s.client.Do(ctx, req, nil)
}
// DisableCustomSize disables the custom emoji size in the subreddit.
func (s *EmojiService) DisableCustomSize(ctx context.Context, subreddit string) (*Response, error) {
path := fmt.Sprintf("api/v1/%s/emoji_custom_size", subreddit)
req, err := s.client.NewRequestWithForm(http.MethodPost, path, nil)
if err != nil {
return nil, err
}
return s.client.Do(ctx, req, nil)
}

View File

@ -3,6 +3,7 @@ package reddit
import (
"fmt"
"net/http"
"net/url"
"testing"
"github.com/stretchr/testify/assert"
@ -55,3 +56,53 @@ func TestEmojiService_Get(t *testing.T) {
assert.Equal(t, expectedDefaultEmojis, defaultEmojis)
assert.Equal(t, expectedSubredditEmojis, subredditEmojis)
}
func TestEmojiService_Delete(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/v1/testsubreddit/emoji/testemoji", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodDelete, r.Method)
})
_, err := client.Emoji.Delete(ctx, "testsubreddit", "testemoji")
assert.NoError(t, err)
}
func TestEmojiService_SetSize(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/v1/testsubreddit/emoji_custom_size", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("height", "20")
form.Set("width", "20")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.Form)
})
_, err := client.Emoji.SetSize(ctx, "testsubreddit", 20, 20)
assert.NoError(t, err)
}
func TestEmojiService_DisableCustomSize(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/v1/testsubreddit/emoji_custom_size", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.Form)
})
_, err := client.Emoji.DisableCustomSize(ctx, "testsubreddit")
assert.NoError(t, err)
}