github.com/google/go-github/v53@v53.2.0/github/gists_comments.go (about) 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 6 package github 7 8 import ( 9 "context" 10 "fmt" 11 ) 12 13 // GistComment represents a Gist comment. 14 type GistComment struct { 15 ID *int64 `json:"id,omitempty"` 16 URL *string `json:"url,omitempty"` 17 Body *string `json:"body,omitempty"` 18 User *User `json:"user,omitempty"` 19 CreatedAt *Timestamp `json:"created_at,omitempty"` 20 } 21 22 func (g GistComment) String() string { 23 return Stringify(g) 24 } 25 26 // ListComments lists all comments for a gist. 27 // 28 // GitHub API docs: https://docs.github.com/en/rest/gists/comments#list-gist-comments 29 func (s *GistsService) ListComments(ctx context.Context, gistID string, opts *ListOptions) ([]*GistComment, *Response, error) { 30 u := fmt.Sprintf("gists/%v/comments", gistID) 31 u, err := addOptions(u, opts) 32 if err != nil { 33 return nil, nil, err 34 } 35 36 req, err := s.client.NewRequest("GET", u, nil) 37 if err != nil { 38 return nil, nil, err 39 } 40 41 var comments []*GistComment 42 resp, err := s.client.Do(ctx, req, &comments) 43 if err != nil { 44 return nil, resp, err 45 } 46 47 return comments, resp, nil 48 } 49 50 // GetComment retrieves a single comment from a gist. 51 // 52 // GitHub API docs: https://docs.github.com/en/rest/gists/comments#get-a-gist-comment 53 func (s *GistsService) GetComment(ctx context.Context, gistID string, commentID int64) (*GistComment, *Response, error) { 54 u := fmt.Sprintf("gists/%v/comments/%v", gistID, commentID) 55 req, err := s.client.NewRequest("GET", u, nil) 56 if err != nil { 57 return nil, nil, err 58 } 59 60 c := new(GistComment) 61 resp, err := s.client.Do(ctx, req, c) 62 if err != nil { 63 return nil, resp, err 64 } 65 66 return c, resp, nil 67 } 68 69 // CreateComment creates a comment for a gist. 70 // 71 // GitHub API docs: https://docs.github.com/en/rest/gists/comments#create-a-gist-comment 72 func (s *GistsService) CreateComment(ctx context.Context, gistID string, comment *GistComment) (*GistComment, *Response, error) { 73 u := fmt.Sprintf("gists/%v/comments", gistID) 74 req, err := s.client.NewRequest("POST", u, comment) 75 if err != nil { 76 return nil, nil, err 77 } 78 79 c := new(GistComment) 80 resp, err := s.client.Do(ctx, req, c) 81 if err != nil { 82 return nil, resp, err 83 } 84 85 return c, resp, nil 86 } 87 88 // EditComment edits an existing gist comment. 89 // 90 // GitHub API docs: https://docs.github.com/en/rest/gists/comments#update-a-gist-comment 91 func (s *GistsService) EditComment(ctx context.Context, gistID string, commentID int64, comment *GistComment) (*GistComment, *Response, error) { 92 u := fmt.Sprintf("gists/%v/comments/%v", gistID, commentID) 93 req, err := s.client.NewRequest("PATCH", u, comment) 94 if err != nil { 95 return nil, nil, err 96 } 97 98 c := new(GistComment) 99 resp, err := s.client.Do(ctx, req, c) 100 if err != nil { 101 return nil, resp, err 102 } 103 104 return c, resp, nil 105 } 106 107 // DeleteComment deletes a gist comment. 108 // 109 // GitHub API docs: https://docs.github.com/en/rest/gists/comments#delete-a-gist-comment 110 func (s *GistsService) DeleteComment(ctx context.Context, gistID string, commentID int64) (*Response, error) { 111 u := fmt.Sprintf("gists/%v/comments/%v", gistID, commentID) 112 req, err := s.client.NewRequest("DELETE", u, nil) 113 if err != nil { 114 return nil, err 115 } 116 117 return s.client.Do(ctx, req, nil) 118 }