1
2
3
4
5
6 package github
7
8 import (
9 "context"
10 "fmt"
11 )
12
13
14
15
16
17
18 func (s *UsersService) ListFollowers(ctx context.Context, user string, opts *ListOptions) ([]*User, *Response, error) {
19 var u string
20 if user != "" {
21 u = fmt.Sprintf("users/%v/followers", user)
22 } else {
23 u = "user/followers"
24 }
25 u, err := addOptions(u, opts)
26 if err != nil {
27 return nil, nil, err
28 }
29
30 req, err := s.client.NewRequest("GET", u, nil)
31 if err != nil {
32 return nil, nil, err
33 }
34
35 var users []*User
36 resp, err := s.client.Do(ctx, req, &users)
37 if err != nil {
38 return nil, resp, err
39 }
40
41 return users, resp, nil
42 }
43
44
45
46
47
48
49 func (s *UsersService) ListFollowing(ctx context.Context, user string, opts *ListOptions) ([]*User, *Response, error) {
50 var u string
51 if user != "" {
52 u = fmt.Sprintf("users/%v/following", user)
53 } else {
54 u = "user/following"
55 }
56 u, err := addOptions(u, opts)
57 if err != nil {
58 return nil, nil, err
59 }
60
61 req, err := s.client.NewRequest("GET", u, nil)
62 if err != nil {
63 return nil, nil, err
64 }
65
66 var users []*User
67 resp, err := s.client.Do(ctx, req, &users)
68 if err != nil {
69 return nil, resp, err
70 }
71
72 return users, resp, nil
73 }
74
75
76
77
78
79
80 func (s *UsersService) IsFollowing(ctx context.Context, user, target string) (bool, *Response, error) {
81 var u string
82 if user != "" {
83 u = fmt.Sprintf("users/%v/following/%v", user, target)
84 } else {
85 u = fmt.Sprintf("user/following/%v", target)
86 }
87
88 req, err := s.client.NewRequest("GET", u, nil)
89 if err != nil {
90 return false, nil, err
91 }
92
93 resp, err := s.client.Do(ctx, req, nil)
94 following, err := parseBoolResponse(err)
95 return following, resp, err
96 }
97
98
99
100
101 func (s *UsersService) Follow(ctx context.Context, user string) (*Response, error) {
102 u := fmt.Sprintf("user/following/%v", user)
103 req, err := s.client.NewRequest("PUT", u, nil)
104 if err != nil {
105 return nil, err
106 }
107
108 return s.client.Do(ctx, req, nil)
109 }
110
111
112
113
114 func (s *UsersService) Unfollow(ctx context.Context, user string) (*Response, error) {
115 u := fmt.Sprintf("user/following/%v", user)
116 req, err := s.client.NewRequest("DELETE", u, nil)
117 if err != nil {
118 return nil, err
119 }
120
121 return s.client.Do(ctx, req, nil)
122 }
123
View as plain text