Delete emojis, set their size
Signed-off-by: Vartan Benohanian <vartanbeno@gmail.com>
This commit is contained in:
parent
73db8f30d8
commit
a422ba631b
2 changed files with 102 additions and 0 deletions
51
emoji.go
51
emoji.go
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue