fetchLatestRelease finds the latest published release for a repository.
(httpClient *http.Client, baseRepo ghrepo.Interface)
| 117 | |
| 118 | // fetchLatestRelease finds the latest published release for a repository. |
| 119 | func fetchLatestRelease(httpClient *http.Client, baseRepo ghrepo.Interface) (*release, error) { |
| 120 | url, err := safeurl.JoinPathWithHostPrefix(ghinstance.RESTPrefix(baseRepo.RepoHost()), "repos", baseRepo.RepoOwner(), baseRepo.RepoName(), "releases", "latest") |
| 121 | if err != nil { |
| 122 | return nil, err |
| 123 | } |
| 124 | req, err := http.NewRequest("GET", url.String(), nil) |
| 125 | if err != nil { |
| 126 | return nil, err |
| 127 | } |
| 128 | |
| 129 | resp, err := httpClient.Do(req) |
| 130 | if err != nil { |
| 131 | return nil, err |
| 132 | } |
| 133 | defer resp.Body.Close() |
| 134 | |
| 135 | if resp.StatusCode == 404 { |
| 136 | return nil, releaseNotFoundErr |
| 137 | } |
| 138 | if resp.StatusCode > 299 { |
| 139 | return nil, api.HandleHTTPError(resp) |
| 140 | } |
| 141 | |
| 142 | b, err := io.ReadAll(resp.Body) |
| 143 | if err != nil { |
| 144 | return nil, err |
| 145 | } |
| 146 | |
| 147 | var r release |
| 148 | err = json.Unmarshal(b, &r) |
| 149 | if err != nil { |
| 150 | return nil, err |
| 151 | } |
| 152 | |
| 153 | return &r, nil |
| 154 | } |
| 155 | |
| 156 | // fetchReleaseFromTag finds release by tag name for a repository |
| 157 | func fetchReleaseFromTag(httpClient *http.Client, baseRepo ghrepo.Interface, tagName string) (*release, error) { |
no test coverage detected