Example #1
0
// convertRepo is a helper function used to convert a Bitbucket
// repository structure to the common Drone repository structure.
func convertRepo(from *Repo) *model.Repo {
	repo := model.Repo{
		Owner:     strings.Split(from.FullName, "/")[0],
		Name:      strings.Split(from.FullName, "/")[1],
		FullName:  from.FullName,
		Link:      from.Links.Html.Href,
		IsPrivate: from.IsPrivate,
		Avatar:    from.Owner.Links.Avatar.Href,
		Kind:      from.Scm,
		Branch:    "master",
	}

	if repo.Kind == model.RepoHg {
		repo.Branch = "default"
	}

	// in some cases, the owner of the repository is not
	// provided, however, we do have the full name.
	if len(repo.Owner) == 0 {
		repo.Owner = strings.Split(repo.FullName, "/")[0]
	}

	// above we manually constructed the repository clone url.
	// below we will iterate through the list of clone links and
	// attempt to instead use the clone url provided by bitbucket.
	for _, link := range from.Links.Clone {
		if link.Name == "https" {
			repo.Clone = link.Href
			break
		}
	}

	// if no repository name is provided, we use the Html link.
	// this excludes the .git suffix, but will still clone the repo.
	if len(repo.Clone) == 0 {
		repo.Clone = repo.Link
	}

	// if bitbucket tries to automatically populate the user
	// in the url we must strip it out.
	clone, err := url.Parse(repo.Clone)
	if err == nil {
		clone.User = nil
		repo.Clone = clone.String()
	}

	return &repo
}
Example #2
0
// convertRepo is a helper function used to convert a Bitbucket repository
// structure to the common Drone repository structure.
func convertRepo(from *internal.Repo) *model.Repo {
	repo := model.Repo{
		Clone:     cloneLink(from),
		Owner:     strings.Split(from.FullName, "/")[0],
		Name:      strings.Split(from.FullName, "/")[1],
		FullName:  from.FullName,
		Link:      from.Links.Html.Href,
		IsPrivate: from.IsPrivate,
		Avatar:    from.Owner.Links.Avatar.Href,
		Kind:      from.Scm,
		Branch:    "master",
	}
	if repo.Kind == model.RepoHg {
		repo.Branch = "default"
	}
	return &repo
}