in reference-api/sources/github/releases.go [70:104]
func ReleasesHandler(w http.ResponseWriter, r *http.Request) {
repo := r.URL.Query().Get("repo")
gitRef := r.URL.Query().Get("gitRef")
// Validate query parameters
if repo == "" {
errorEncoder(w, http.StatusBadRequest, "Missing 'repo' query parameter")
return
}
if gitRef == "" {
errorEncoder(w, http.StatusBadRequest, "Missing 'gitRef' query parameter")
return
}
// Fetch release information
releases, err := FetchReleases(repo, gitRef)
if err != nil {
log.Printf("Error fetching releases: %v", err)
// If the error is due to GitHub returning a non-200 response, set the correct status
if strings.Contains(err.Error(), "404") {
errorEncoder(w, http.StatusNotFound, "GitHub API returned 404: Release not found")
} else {
errorEncoder(w, http.StatusInternalServerError, "Failed to fetch release information")
}
return
}
if releases == nil || (releases.Current == nil) {
errorEncoder(w, http.StatusNotFound, "No release found for the given repository and gitRef")
return
}
responseEncoder(w, http.StatusOK, releases)
}