1// Copyright 2017 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 ( 9 "context" 10 "fmt" 11) 12 13// ListBlockedUsers lists all the blocked users by the authenticated user. 14// 15// GitHub API docs: https://developer.github.com/v3/users/blocking/#list-blocked-users 16func (s *UsersService) ListBlockedUsers(ctx context.Context, opt *ListOptions) ([]*User, *Response, error) { 17 u := "user/blocks" 18 u, err := addOptions(u, opt) 19 if err != nil { 20 return nil, nil, err 21 } 22 23 req, err := s.client.NewRequest("GET", u, nil) 24 if err != nil { 25 return nil, nil, err 26 } 27 28 // TODO: remove custom Accept header when this API fully launches. 29 req.Header.Set("Accept", mediaTypeBlockUsersPreview) 30 31 var blockedUsers []*User 32 resp, err := s.client.Do(ctx, req, &blockedUsers) 33 if err != nil { 34 return nil, resp, err 35 } 36 37 return blockedUsers, resp, nil 38} 39 40// IsBlocked reports whether specified user is blocked by the authenticated user. 41// 42// GitHub API docs: https://developer.github.com/v3/users/blocking/#check-whether-youve-blocked-a-user 43func (s *UsersService) IsBlocked(ctx context.Context, user string) (bool, *Response, error) { 44 u := fmt.Sprintf("user/blocks/%v", user) 45 46 req, err := s.client.NewRequest("GET", u, nil) 47 if err != nil { 48 return false, nil, err 49 } 50 51 // TODO: remove custom Accept header when this API fully launches. 52 req.Header.Set("Accept", mediaTypeBlockUsersPreview) 53 54 resp, err := s.client.Do(ctx, req, nil) 55 isBlocked, err := parseBoolResponse(err) 56 return isBlocked, resp, err 57} 58 59// BlockUser blocks specified user for the authenticated user. 60// 61// GitHub API docs: https://developer.github.com/v3/users/blocking/#block-a-user 62func (s *UsersService) BlockUser(ctx context.Context, user string) (*Response, error) { 63 u := fmt.Sprintf("user/blocks/%v", user) 64 65 req, err := s.client.NewRequest("PUT", u, nil) 66 if err != nil { 67 return nil, err 68 } 69 70 // TODO: remove custom Accept header when this API fully launches. 71 req.Header.Set("Accept", mediaTypeBlockUsersPreview) 72 73 return s.client.Do(ctx, req, nil) 74} 75 76// UnblockUser unblocks specified user for the authenticated user. 77// 78// GitHub API docs: https://developer.github.com/v3/users/blocking/#unblock-a-user 79func (s *UsersService) UnblockUser(ctx context.Context, user string) (*Response, error) { 80 u := fmt.Sprintf("user/blocks/%v", user) 81 82 req, err := s.client.NewRequest("DELETE", u, nil) 83 if err != nil { 84 return nil, err 85 } 86 87 // TODO: remove custom Accept header when this API fully launches. 88 req.Header.Set("Accept", mediaTypeBlockUsersPreview) 89 90 return s.client.Do(ctx, req, nil) 91} 92