From 37b1527daecc0d80747764ec380acc68ca36fae1 Mon Sep 17 00:00:00 2001 From: Ravi Teja Date: Sun, 19 Mar 2023 10:20:51 +0000 Subject: [PATCH 1/4] set email visibility --- github/users_emails.go | 22 ++++++++++++++++++ github/users_emails_test.go | 45 +++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/github/users_emails.go b/github/users_emails.go index be7e0f819ec..8b11eff87b6 100644 --- a/github/users_emails.go +++ b/github/users_emails.go @@ -70,3 +70,25 @@ func (s *UsersService) DeleteEmails(ctx context.Context, emails []string) (*Resp return s.client.Do(ctx, req, nil) } + + +// SetEmailVisibility sets the visibility for the primary email address of the authenticated user. +// +// GitHub API docs: https://docs.github.com/en/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user +func (s *UsersService) SetEmailVisibility(ctx context.Context, updateVisiblilityReq *UserEmail) ([]*UserEmail, *Response, error) { + u := "user/email/visibility" + req, err := s.client.NewRequest("PATCH", u, updateVisiblilityReq) + if err != nil { + return nil, nil, err + } + + var e []*UserEmail + resp, err := s.client.Do(ctx, req, &e) + if err != nil { + return nil, resp, err + } + + return e, resp, nil +} + + diff --git a/github/users_emails_test.go b/github/users_emails_test.go index d40356d8732..46fca04fb8f 100644 --- a/github/users_emails_test.go +++ b/github/users_emails_test.go @@ -140,3 +140,48 @@ func TestUserEmail_Marshal(t *testing.T) { testJSONMarshal(t, u, want) } + +func TestUsersService_SetEmailVisibility(t *testing.T) { + client, mux, _, teardown := setup() + defer teardown() + + input := &UserEmail{Visibility: String("private")} + + + mux.HandleFunc("/user/email/visibility", func(w http.ResponseWriter, r *http.Request) { + v := new(UserEmail) + json.NewDecoder(r.Body).Decode(&v) + + testMethod(t, r, "PATCH") + if !cmp.Equal(v, input) { + t.Errorf("Request body = %+v, want %+v", v, input) + } + + fmt.Fprint(w, `[{ + "email": "user@example.com", + "verified": false, + "primary": true, + "visibility": "private" + }]`) + }) + + ctx := context.Background() + emails, _, err := client.Users.SetEmailVisibility(ctx, input) + if err != nil { + t.Errorf("Users.SetEmailVisibility returned error: %v", err) + } + + want := []*UserEmail{{Email: String("user@example.com"), Verified: Bool(false), Primary: Bool(true), Visibility: String("private")}} + if !cmp.Equal(emails, want) { + t.Errorf("Users.SetEmailVisibility returned %+v, want %+v", emails, want) + } + + const methodName = "SetEmailVisibility" + testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { + got, resp, err := client.Users.SetEmailVisibility(ctx, input) + if got != nil { + t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) + } + return resp, err + }) +} From b4c9f97570181c30755c3d9926ecd0cea2d3d7c5 Mon Sep 17 00:00:00 2001 From: Ravi Teja Date: Sun, 19 Mar 2023 10:34:54 +0000 Subject: [PATCH 2/4] fomat --- github/users_emails.go | 3 --- github/users_emails_test.go | 1 - 2 files changed, 4 deletions(-) diff --git a/github/users_emails.go b/github/users_emails.go index 8b11eff87b6..ecdfa96c8c8 100644 --- a/github/users_emails.go +++ b/github/users_emails.go @@ -71,7 +71,6 @@ func (s *UsersService) DeleteEmails(ctx context.Context, emails []string) (*Resp return s.client.Do(ctx, req, nil) } - // SetEmailVisibility sets the visibility for the primary email address of the authenticated user. // // GitHub API docs: https://docs.github.com/en/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user @@ -90,5 +89,3 @@ func (s *UsersService) SetEmailVisibility(ctx context.Context, updateVisiblility return e, resp, nil } - - diff --git a/github/users_emails_test.go b/github/users_emails_test.go index 46fca04fb8f..af003e33af7 100644 --- a/github/users_emails_test.go +++ b/github/users_emails_test.go @@ -147,7 +147,6 @@ func TestUsersService_SetEmailVisibility(t *testing.T) { input := &UserEmail{Visibility: String("private")} - mux.HandleFunc("/user/email/visibility", func(w http.ResponseWriter, r *http.Request) { v := new(UserEmail) json.NewDecoder(r.Body).Decode(&v) From 901019313acd0a85ecc400446ef56fd467cafe51 Mon Sep 17 00:00:00 2001 From: Ravi Teja Date: Tue, 28 Mar 2023 14:03:42 +0000 Subject: [PATCH 3/4] address review comments --- github/users_emails.go | 8 +++++++- github/users_emails_test.go | 6 +++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/github/users_emails.go b/github/users_emails.go index ecdfa96c8c8..67bd210e8d5 100644 --- a/github/users_emails.go +++ b/github/users_emails.go @@ -72,10 +72,16 @@ func (s *UsersService) DeleteEmails(ctx context.Context, emails []string) (*Resp } // SetEmailVisibility sets the visibility for the primary email address of the authenticated user. +// `visibility` can be "private" or "public". // // GitHub API docs: https://docs.github.com/en/rest/users/emails#set-primary-email-visibility-for-the-authenticated-user -func (s *UsersService) SetEmailVisibility(ctx context.Context, updateVisiblilityReq *UserEmail) ([]*UserEmail, *Response, error) { +func (s *UsersService) SetEmailVisibility(ctx context.Context, visibility string) ([]*UserEmail, *Response, error) { u := "user/email/visibility" + + updateVisiblilityReq := &UserEmail{ + Visibility: &visibility, + } + req, err := s.client.NewRequest("PATCH", u, updateVisiblilityReq) if err != nil { return nil, nil, err diff --git a/github/users_emails_test.go b/github/users_emails_test.go index af003e33af7..528d2053ee1 100644 --- a/github/users_emails_test.go +++ b/github/users_emails_test.go @@ -144,7 +144,7 @@ func TestUserEmail_Marshal(t *testing.T) { func TestUsersService_SetEmailVisibility(t *testing.T) { client, mux, _, teardown := setup() defer teardown() - + input := &UserEmail{Visibility: String("private")} mux.HandleFunc("/user/email/visibility", func(w http.ResponseWriter, r *http.Request) { @@ -165,7 +165,7 @@ func TestUsersService_SetEmailVisibility(t *testing.T) { }) ctx := context.Background() - emails, _, err := client.Users.SetEmailVisibility(ctx, input) + emails, _, err := client.Users.SetEmailVisibility(ctx, "private") if err != nil { t.Errorf("Users.SetEmailVisibility returned error: %v", err) } @@ -177,7 +177,7 @@ func TestUsersService_SetEmailVisibility(t *testing.T) { const methodName = "SetEmailVisibility" testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { - got, resp, err := client.Users.SetEmailVisibility(ctx, input) + got, resp, err := client.Users.SetEmailVisibility(ctx, "private") if got != nil { t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) } From afa87d1855e38b35a290bd9ed46bb9ed13c18596 Mon Sep 17 00:00:00 2001 From: Ravi Teja Date: Tue, 28 Mar 2023 14:17:55 +0000 Subject: [PATCH 4/4] Format --- github/users_emails_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github/users_emails_test.go b/github/users_emails_test.go index 528d2053ee1..ad9d32e9491 100644 --- a/github/users_emails_test.go +++ b/github/users_emails_test.go @@ -144,7 +144,7 @@ func TestUserEmail_Marshal(t *testing.T) { func TestUsersService_SetEmailVisibility(t *testing.T) { client, mux, _, teardown := setup() defer teardown() - + input := &UserEmail{Visibility: String("private")} mux.HandleFunc("/user/email/visibility", func(w http.ResponseWriter, r *http.Request) {