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