(httpClient *http.Client, repo ghrepo.Interface, tagName, target, previousTagName string)
| 95 | } |
| 96 | |
| 97 | func generateReleaseNotes(httpClient *http.Client, repo ghrepo.Interface, tagName, target, previousTagName string) (*releaseNotes, error) { |
| 98 | params := map[string]interface{}{ |
| 99 | "tag_name": tagName, |
| 100 | } |
| 101 | if target != "" { |
| 102 | params["target_commitish"] = target |
| 103 | } |
| 104 | if previousTagName != "" { |
| 105 | params["previous_tag_name"] = previousTagName |
| 106 | } |
| 107 | |
| 108 | bodyBytes, err := json.Marshal(params) |
| 109 | if err != nil { |
| 110 | return nil, err |
| 111 | } |
| 112 | |
| 113 | url, err := safeurl.JoinPathWithHostPrefix(ghinstance.RESTPrefix(repo.RepoHost()), "repos", repo.RepoOwner(), repo.RepoName(), "releases", "generate-notes") |
| 114 | if err != nil { |
| 115 | return nil, err |
| 116 | } |
| 117 | req, err := http.NewRequest("POST", url.String(), bytes.NewBuffer(bodyBytes)) |
| 118 | if err != nil { |
| 119 | return nil, err |
| 120 | } |
| 121 | |
| 122 | req.Header.Set("Accept", "application/vnd.github.v3+json") |
| 123 | req.Header.Set("Content-Type", "application/json; charset=utf-8") |
| 124 | |
| 125 | resp, err := httpClient.Do(req) |
| 126 | if err != nil { |
| 127 | return nil, err |
| 128 | } |
| 129 | defer resp.Body.Close() |
| 130 | |
| 131 | if resp.StatusCode == 404 { |
| 132 | return nil, notImplementedError |
| 133 | } |
| 134 | |
| 135 | success := resp.StatusCode >= 200 && resp.StatusCode < 300 |
| 136 | if !success { |
| 137 | return nil, api.HandleHTTPError(resp) |
| 138 | } |
| 139 | |
| 140 | b, err := io.ReadAll(resp.Body) |
| 141 | if err != nil { |
| 142 | return nil, err |
| 143 | } |
| 144 | |
| 145 | var rn releaseNotes |
| 146 | err = json.Unmarshal(b, &rn) |
| 147 | return &rn, err |
| 148 | } |
| 149 | |
| 150 | func publishedReleaseExists(httpClient *http.Client, repo ghrepo.Interface, tagName string) (bool, error) { |
| 151 | url, err := safeurl.JoinPathWithHostPrefix(ghinstance.RESTPrefix(repo.RepoHost()), "repos", repo.RepoOwner(), repo.RepoName(), "releases", "tags", tagName) |
no test coverage detected