From fbf7df5fe92eae0b26778ae88c9b677fae65930d Mon Sep 17 00:00:00 2001 From: Vartan Benohanian Date: Tue, 18 Aug 2020 23:27:10 -0400 Subject: [PATCH] Block and unblock by id Signed-off-by: Vartan Benohanian --- reddit.go | 10 ++++---- user.go | 70 ++++++++++++++++++++++++++-------------------------- user_test.go | 70 ++++++++++++++++++++++++++-------------------------- 3 files changed, 75 insertions(+), 75 deletions(-) diff --git a/reddit.go b/reddit.go index 376ce6a..635c265 100644 --- a/reddit.go +++ b/reddit.go @@ -286,18 +286,18 @@ func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Res } // id returns the client's Reddit ID. -func (c *Client) id(ctx context.Context) (string, error) { +func (c *Client) id(ctx context.Context) (string, *Response, error) { if c.redditID != "" { - return c.redditID, nil + return c.redditID, nil, nil } - self, _, err := c.User.Get(ctx, c.Username) + self, resp, err := c.User.Get(ctx, c.Username) if err != nil { - return "", err + return "", resp, err } c.redditID = fmt.Sprintf("%s_%s", kindAccount, self.ID) - return c.redditID, nil + return c.redditID, resp, nil } // DoRequest submits an HTTP request. diff --git a/user.go b/user.go index 1d68257..ea3c6dd 100644 --- a/user.go +++ b/user.go @@ -421,32 +421,32 @@ func (s *UserService) Block(ctx context.Context, username string) (*Blocked, *Re return root, resp, nil } -// // BlockByID blocks a user via their full id. -// func (s *UserService) BlockByID(ctx context.Context, id string) (*Blocked, *Response, error) { -// path := "api/block_user" +// BlockByID blocks a user via their full id. +func (s *UserService) BlockByID(ctx context.Context, id string) (*Blocked, *Response, error) { + path := "api/block_user" -// form := url.Values{} -// form.Set("account_id", id) + form := url.Values{} + form.Set("account_id", id) -// req, err := s.client.NewPostForm(path, form) -// if err != nil { -// return nil, nil, err -// } + req, err := s.client.NewRequestWithForm(http.MethodPost, path, form) + if err != nil { + return nil, nil, err + } -// root := new(Blocked) -// resp, err := s.client.Do(ctx, req, root) -// if err != nil { -// return nil, resp, err -// } + root := new(Blocked) + resp, err := s.client.Do(ctx, req, root) + if err != nil { + return nil, resp, err + } -// return root, resp, nil -// } + return root, resp, nil +} // Unblock unblocks a user. func (s *UserService) Unblock(ctx context.Context, username string) (*Response, error) { - selfID, err := s.client.id(ctx) + selfID, resp, err := s.client.id(ctx) if err != nil { - return nil, err + return resp, err } path := "api/unfriend" @@ -464,27 +464,27 @@ func (s *UserService) Unblock(ctx context.Context, username string) (*Response, return s.client.Do(ctx, req, nil) } -// // UnblockByID unblocks a user via their full id. -// func (s *UserService) UnblockByID(ctx context.Context, id string) (*Response, error) { -// selfID, err := s.client.GetRedditID(ctx) -// if err != nil { -// return nil, err -// } +// UnblockByID unblocks a user via their full id. +func (s *UserService) UnblockByID(ctx context.Context, id string) (*Response, error) { + selfID, resp, err := s.client.id(ctx) + if err != nil { + return resp, err + } -// path := "api/unfriend" + path := "api/unfriend" -// form := url.Values{} -// form.Set("id", id) -// form.Set("type", "enemy") -// form.Set("container", selfID) + form := url.Values{} + form.Set("id", id) + form.Set("type", "enemy") + form.Set("container", selfID) -// req, err := s.client.NewPostForm(path, form) -// if err != nil { -// return nil, err -// } + req, err := s.client.NewRequestWithForm(http.MethodPost, path, form) + if err != nil { + return nil, err + } -// return s.client.Do(ctx, req, nil) -// } + return s.client.Do(ctx, req, nil) +} // Trophies returns a list of your trophies. func (s *UserService) Trophies(ctx context.Context) ([]Trophy, *Response, error) { diff --git a/user_test.go b/user_test.go index 661582d..e89f826 100644 --- a/user_test.go +++ b/user_test.go @@ -813,30 +813,30 @@ func TestUserService_Block(t *testing.T) { require.Equal(t, expectedBlocked, blocked) } -// func TestUserService_BlockByID(t *testing.T) { -// setup() -// defer teardown() +func TestUserService_BlockByID(t *testing.T) { + setup() + defer teardown() -// blob, err := readFileContents("testdata/user/block.json") -// require.NoError(t,err) + blob, err := readFileContents("testdata/user/block.json") + require.NoError(t, err) -// mux.HandleFunc("/api/block_user", func(w http.ResponseWriter, r *http.Request) { -// require.Equal(t, http.MethodPost, r.Method) + mux.HandleFunc("/api/block_user", func(w http.ResponseWriter, r *http.Request) { + require.Equal(t, http.MethodPost, r.Method) -// form := url.Values{} -// form.Set("account_id", "abc123") + form := url.Values{} + form.Set("account_id", "abc123") -// err := r.ParseForm() -// require.NoError(t, err) -// require.Equal(t, form, r.Form) + err := r.ParseForm() + require.NoError(t, err) + require.Equal(t, form, r.Form) -// fmt.Fprint(w, blob) -// }) + fmt.Fprint(w, blob) + }) -// blocked, _, err := client.User.BlockByID(ctx, "abc123") -// require.NoError(t, err) -// require.Equal(t, expectedBlocked, blocked) -// } + blocked, _, err := client.User.BlockByID(ctx, "abc123") + require.NoError(t, err) + require.Equal(t, expectedBlocked, blocked) +} func TestUserService_Unblock(t *testing.T) { setup() @@ -861,28 +861,28 @@ func TestUserService_Unblock(t *testing.T) { require.NoError(t, err) } -// func TestUserService_UnblockByID(t *testing.T) { -// setup() -// defer teardown() +func TestUserService_UnblockByID(t *testing.T) { + setup() + defer teardown() -// client.redditID = "self123" + client.redditID = "self123" -// mux.HandleFunc("/api/unfriend", func(w http.ResponseWriter, r *http.Request) { -// require.Equal(t, http.MethodPost, r.Method) + mux.HandleFunc("/api/unfriend", func(w http.ResponseWriter, r *http.Request) { + require.Equal(t, http.MethodPost, r.Method) -// form := url.Values{} -// form.Set("id", "abc123") -// form.Set("type", "enemy") -// form.Set("container", client.redditID) + form := url.Values{} + form.Set("id", "abc123") + form.Set("type", "enemy") + form.Set("container", client.redditID) -// err := r.ParseForm() -// require.NoError(t, err) -// require.Equal(t, form, r.Form) -// }) + err := r.ParseForm() + require.NoError(t, err) + require.Equal(t, form, r.Form) + }) -// _, err := client.User.UnblockByID(ctx, "abc123") -// require.NoError(t, err) -// } + _, err := client.User.UnblockByID(ctx, "abc123") + require.NoError(t, err) +} func TestUserService_Trophies(t *testing.T) { setup()