Exemplo n.º 1
0
// Display a static badge (svg format) for a specific
// repository and an optional branch.
// TODO this needs to implement basic caching
func Badge(w http.ResponseWriter, r *http.Request) error {
	successParam := r.FormValue("success")
	failureParam := r.FormValue("failure")
	branchParam := r.FormValue("branch")
	hostParam := r.FormValue(":host")
	ownerParam := r.FormValue(":owner")
	nameParam := r.FormValue(":name")
	repoSlug := fmt.Sprintf("%s/%s/%s", hostParam, ownerParam, nameParam)

	// get the repo from the database
	repo, err := database.GetRepoSlug(repoSlug)
	if err != nil {
		http.NotFound(w, r)
		return nil
	}

	// get the default branch for the repository
	// if no branch is provided.
	if len(branchParam) == 0 {
		branchParam = repo.DefaultBranch()
	}

	var badge string

	// get the latest commit from the database
	// for the requested branch
	commit, err := database.GetBranch(repo.ID, branchParam)
	if err != nil {
		http.NotFound(w, r)
		return nil
	}

	switch {
	case commit.Status == "Success" && len(successParam) == 0:
		// if no success image is provided, we serve a
		// badge using the shields.io service
		badge = badgeSuccess
	case commit.Status == "Success" && len(successParam) != 0:
		// otherwise we serve the user defined success badge
		badge = successParam
	case commit.Status == "Failure" && len(failureParam) == 0:
		// if no failure image is provided, we serve a
		// badge using the shields.io service
		badge = badgeFailure
	case commit.Status == "Failure" && len(failureParam) != 0:
		// otherwise we serve the user defined failure badge
		badge = failureParam
	default:
		// otherwise load unknown image
		badge = badgeUnknown
	}

	http.Redirect(w, r, badge, http.StatusSeeOther)
	return nil
}
Exemplo n.º 2
0
// Display a static badge (png format) for a specific
// repository and an optional branch.
// TODO this needs to implement basic caching
func Badge(w http.ResponseWriter, r *http.Request) error {
	branchParam := r.FormValue("branch")
	hostParam := r.FormValue(":host")
	ownerParam := r.FormValue(":owner")
	nameParam := r.FormValue(":name")
	repoSlug := fmt.Sprintf("%s/%s/%s", hostParam, ownerParam, nameParam)

	// get the repo from the database
	repo, err := database.GetRepoSlug(repoSlug)
	if err != nil {
		http.NotFound(w, r)
		return nil
	}

	// get the default branch for the repository
	// if no branch is provided.
	if len(branchParam) == 0 {
		branchParam = repo.DefaultBranch()
	}

	// default badge of "unknown"
	badge := "/img/build_unknown.png"

	// get the latest commit from the database
	// for the requested branch
	commit, err := database.GetBranch(repo.ID, branchParam)
	if err == nil {
		switch commit.Status {
		case "Success":
			badge = "/img/build_success.png"
		case "Failing", "Failure":
			badge = "/img/build_failing.png"
		}
	}

	http.Redirect(w, r, badge, http.StatusSeeOther)
	return nil
}