github.com/google/go-github/v66@v66.0.0/github/users_ssh_signing_keys.go (about) 1 // Copyright 2022 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 6 package github 7 8 import ( 9 "context" 10 "fmt" 11 ) 12 13 // SSHSigningKey represents a public SSH key used to sign git commits. 14 type SSHSigningKey struct { 15 ID *int64 `json:"id,omitempty"` 16 Key *string `json:"key,omitempty"` 17 Title *string `json:"title,omitempty"` 18 CreatedAt *Timestamp `json:"created_at,omitempty"` 19 } 20 21 func (k SSHSigningKey) String() string { 22 return Stringify(k) 23 } 24 25 // ListSSHSigningKeys lists the SSH signing keys for a user. Passing an empty 26 // username string will fetch SSH signing keys for the authenticated user. 27 // 28 // GitHub API docs: https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-a-user 29 // GitHub API docs: https://docs.github.com/rest/users/ssh-signing-keys#list-ssh-signing-keys-for-the-authenticated-user 30 // 31 //meta:operation GET /user/ssh_signing_keys 32 //meta:operation GET /users/{username}/ssh_signing_keys 33 func (s *UsersService) ListSSHSigningKeys(ctx context.Context, user string, opts *ListOptions) ([]*SSHSigningKey, *Response, error) { 34 var u string 35 if user != "" { 36 u = fmt.Sprintf("users/%v/ssh_signing_keys", user) 37 } else { 38 u = "user/ssh_signing_keys" 39 } 40 u, err := addOptions(u, opts) 41 if err != nil { 42 return nil, nil, err 43 } 44 45 req, err := s.client.NewRequest("GET", u, nil) 46 if err != nil { 47 return nil, nil, err 48 } 49 50 var keys []*SSHSigningKey 51 resp, err := s.client.Do(ctx, req, &keys) 52 if err != nil { 53 return nil, resp, err 54 } 55 56 return keys, resp, nil 57 } 58 59 // GetSSHSigningKey fetches a single SSH signing key for the authenticated user. 60 // 61 // GitHub API docs: https://docs.github.com/rest/users/ssh-signing-keys#get-an-ssh-signing-key-for-the-authenticated-user 62 // 63 //meta:operation GET /user/ssh_signing_keys/{ssh_signing_key_id} 64 func (s *UsersService) GetSSHSigningKey(ctx context.Context, id int64) (*SSHSigningKey, *Response, error) { 65 u := fmt.Sprintf("user/ssh_signing_keys/%v", id) 66 67 req, err := s.client.NewRequest("GET", u, nil) 68 if err != nil { 69 return nil, nil, err 70 } 71 72 key := new(SSHSigningKey) 73 resp, err := s.client.Do(ctx, req, key) 74 if err != nil { 75 return nil, resp, err 76 } 77 78 return key, resp, nil 79 } 80 81 // CreateSSHSigningKey adds a SSH signing key for the authenticated user. 82 // 83 // GitHub API docs: https://docs.github.com/rest/users/ssh-signing-keys#create-a-ssh-signing-key-for-the-authenticated-user 84 // 85 //meta:operation POST /user/ssh_signing_keys 86 func (s *UsersService) CreateSSHSigningKey(ctx context.Context, key *Key) (*SSHSigningKey, *Response, error) { 87 u := "user/ssh_signing_keys" 88 89 req, err := s.client.NewRequest("POST", u, key) 90 if err != nil { 91 return nil, nil, err 92 } 93 94 k := new(SSHSigningKey) 95 resp, err := s.client.Do(ctx, req, k) 96 if err != nil { 97 return nil, resp, err 98 } 99 100 return k, resp, nil 101 } 102 103 // DeleteSSHSigningKey deletes a SSH signing key for the authenticated user. 104 // 105 // GitHub API docs: https://docs.github.com/rest/users/ssh-signing-keys#delete-an-ssh-signing-key-for-the-authenticated-user 106 // 107 //meta:operation DELETE /user/ssh_signing_keys/{ssh_signing_key_id} 108 func (s *UsersService) DeleteSSHSigningKey(ctx context.Context, id int64) (*Response, error) { 109 u := fmt.Sprintf("user/ssh_signing_keys/%v", id) 110 111 req, err := s.client.NewRequest("DELETE", u, nil) 112 if err != nil { 113 return nil, err 114 } 115 116 return s.client.Do(ctx, req, nil) 117 }