func ReleasesHandler()

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)
}