1
2
3
4
5
6 package github
7
8 import (
9 "context"
10 "fmt"
11 )
12
13
14
15
16 type GPGKey struct {
17 ID *int64 `json:"id,omitempty"`
18 PrimaryKeyID *int64 `json:"primary_key_id,omitempty"`
19 KeyID *string `json:"key_id,omitempty"`
20 RawKey *string `json:"raw_key,omitempty"`
21 PublicKey *string `json:"public_key,omitempty"`
22 Emails []*GPGEmail `json:"emails,omitempty"`
23 Subkeys []*GPGKey `json:"subkeys,omitempty"`
24 CanSign *bool `json:"can_sign,omitempty"`
25 CanEncryptComms *bool `json:"can_encrypt_comms,omitempty"`
26 CanEncryptStorage *bool `json:"can_encrypt_storage,omitempty"`
27 CanCertify *bool `json:"can_certify,omitempty"`
28 CreatedAt *Timestamp `json:"created_at,omitempty"`
29 ExpiresAt *Timestamp `json:"expires_at,omitempty"`
30 }
31
32
33 func (k GPGKey) String() string {
34 return Stringify(k)
35 }
36
37
38 type GPGEmail struct {
39 Email *string `json:"email,omitempty"`
40 Verified *bool `json:"verified,omitempty"`
41 }
42
43
44
45
46
47
48
49 func (s *UsersService) ListGPGKeys(ctx context.Context, user string, opts *ListOptions) ([]*GPGKey, *Response, error) {
50 var u string
51 if user != "" {
52 u = fmt.Sprintf("users/%v/gpg_keys", user)
53 } else {
54 u = "user/gpg_keys"
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 keys []*GPGKey
67 resp, err := s.client.Do(ctx, req, &keys)
68 if err != nil {
69 return nil, resp, err
70 }
71
72 return keys, resp, nil
73 }
74
75
76
77
78
79 func (s *UsersService) GetGPGKey(ctx context.Context, id int64) (*GPGKey, *Response, error) {
80 u := fmt.Sprintf("user/gpg_keys/%v", id)
81 req, err := s.client.NewRequest("GET", u, nil)
82 if err != nil {
83 return nil, nil, err
84 }
85
86 key := &GPGKey{}
87 resp, err := s.client.Do(ctx, req, key)
88 if err != nil {
89 return nil, resp, err
90 }
91
92 return key, resp, nil
93 }
94
95
96
97
98
99 func (s *UsersService) CreateGPGKey(ctx context.Context, armoredPublicKey string) (*GPGKey, *Response, error) {
100 gpgKey := &struct {
101 ArmoredPublicKey string `json:"armored_public_key"`
102 }{ArmoredPublicKey: armoredPublicKey}
103 req, err := s.client.NewRequest("POST", "user/gpg_keys", gpgKey)
104 if err != nil {
105 return nil, nil, err
106 }
107
108 key := &GPGKey{}
109 resp, err := s.client.Do(ctx, req, key)
110 if err != nil {
111 return nil, resp, err
112 }
113
114 return key, resp, nil
115 }
116
117
118
119
120
121 func (s *UsersService) DeleteGPGKey(ctx context.Context, id int64) (*Response, error) {
122 u := fmt.Sprintf("user/gpg_keys/%v", id)
123 req, err := s.client.NewRequest("DELETE", u, nil)
124 if err != nil {
125 return nil, err
126 }
127
128 return s.client.Do(ctx, req, nil)
129 }
130
View as plain text