1// Copyright 2013 The go-github AUTHORS. All rights reserved. 2// 3// Use of this source code is governed by a BSD-style 4// license that can be found in the LICENSE file. 5 6package github 7 8import "context" 9 10// UserEmail represents user's email address 11type UserEmail struct { 12 Email *string `json:"email,omitempty"` 13 Primary *bool `json:"primary,omitempty"` 14 Verified *bool `json:"verified,omitempty"` 15} 16 17// ListEmails lists all email addresses for the authenticated user. 18// 19// GitHub API docs: https://developer.github.com/v3/users/emails/#list-email-addresses-for-a-user 20func (s *UsersService) ListEmails(ctx context.Context, opt *ListOptions) ([]*UserEmail, *Response, error) { 21 u := "user/emails" 22 u, err := addOptions(u, opt) 23 if err != nil { 24 return nil, nil, err 25 } 26 27 req, err := s.client.NewRequest("GET", u, nil) 28 if err != nil { 29 return nil, nil, err 30 } 31 32 var emails []*UserEmail 33 resp, err := s.client.Do(ctx, req, &emails) 34 if err != nil { 35 return nil, resp, err 36 } 37 38 return emails, resp, nil 39} 40 41// AddEmails adds email addresses of the authenticated user. 42// 43// GitHub API docs: https://developer.github.com/v3/users/emails/#add-email-addresses 44func (s *UsersService) AddEmails(ctx context.Context, emails []string) ([]*UserEmail, *Response, error) { 45 u := "user/emails" 46 req, err := s.client.NewRequest("POST", u, emails) 47 if err != nil { 48 return nil, nil, err 49 } 50 51 var e []*UserEmail 52 resp, err := s.client.Do(ctx, req, &e) 53 if err != nil { 54 return nil, resp, err 55 } 56 57 return e, resp, nil 58} 59 60// DeleteEmails deletes email addresses from authenticated user. 61// 62// GitHub API docs: https://developer.github.com/v3/users/emails/#delete-email-addresses 63func (s *UsersService) DeleteEmails(ctx context.Context, emails []string) (*Response, error) { 64 u := "user/emails" 65 req, err := s.client.NewRequest("DELETE", u, emails) 66 if err != nil { 67 return nil, err 68 } 69 70 return s.client.Do(ctx, req, nil) 71} 72