func (this *RepoAPIV1Controller) GetRepositoryTags() { namespace := this.Ctx.Input.Param(":namespace") repository := this.Ctx.Input.Param(":repo_name") repo := new(models.Repository) if has, _, err := repo.Has(namespace, repository); err != nil { this.JSONOut(http.StatusBadRequest, "Read repository json error", nil) return } else if has == false { this.JSONOut(http.StatusBadRequest, "Read repository no found", nil) return } tag := map[string]string{} for _, value := range repo.Tags { t := new(models.Tag) if err := t.GetById(value); err != nil { this.JSONOut(http.StatusBadRequest, "", map[string]string{"message": fmt.Sprintf("%s/%s Tags is not exist", namespace, repository)}) return } tag[t.Name] = t.ImageId } this.JSONOut(http.StatusOK, "", tag) return }
func (this *RepoAPIV1Controller) GetRepositoryImages() { namespace := string(this.Ctx.Input.Param(":namespace")) repository := string(this.Ctx.Input.Param(":repo_name")) repo := new(models.Repository) if has, _, err := repo.Has(namespace, repository); err != nil { this.JSONOut(http.StatusBadRequest, "Read repository json error", nil) return } else if has == false { this.JSONOut(http.StatusBadRequest, "Read repository no found", nil) return } repo.Download += 1 if err := repo.Save(); err != nil { this.JSONOut(http.StatusBadRequest, err.Error(), nil) } memo, _ := json.Marshal(this.Ctx.Input.Header) repo.Log(models.ACTION_GET_REPO, models.LEVELINFORMATIONAL, models.TYPE_APIV1, repo.Id, memo) this.Ctx.Output.Context.Output.SetStatus(http.StatusOK) this.Ctx.Output.Context.Output.Body([]byte(repo.JSON)) return }
func (this *ManifestsAPIV2Controller) GetTags() { namespace := this.Ctx.Input.Param(":namespace") repository := this.Ctx.Input.Param(":repo_name") repo := new(models.Repository) if has, _, err := repo.Has(namespace, repository); err != nil || has == false { this.JSONOut(http.StatusBadRequest, "", map[string][]modules.ErrorDescriptor{"errors": []modules.ErrorDescriptor{modules.ErrorDescriptors[modules.APIErrorCodeNameInvalid]}}) return } data := map[string]interface{}{} tags := []string{} data["name"] = fmt.Sprintf("%s/%s", namespace, repository) for _, value := range repo.Tags { t := new(models.Tag) if err := t.GetById(value); err != nil { this.JSONOut(http.StatusBadRequest, "", map[string][]modules.ErrorDescriptor{"errors": []modules.ErrorDescriptor{modules.ErrorDescriptors[modules.APIErrorCodeTagInvalid]}}) return } tags = append(tags, t.Name) } data["tags"] = tags this.JSONOut(http.StatusOK, "", data) return }
func (this *WebController) GetRepository() { namespace := this.Ctx.Input.Param(":namespace") repository := this.Ctx.Input.Param(":repository") repo := new(models.Repository) if exist, _, _ := repo.Has(namespace, repository); exist { user, exist := this.Ctx.Input.CruSession.Get("user").(models.User) if repo.Privated { if !exist == true { this.Abort("404") return } else { if user.Username != namespace { this.Abort("404") return } this.Data["username"] = user.Username this.Data["privated"] = repo.Privated this.Data["namespace"] = repo.Namespace this.Data["repository"] = repo.Repository this.Data["created"] = repo.Created this.Data["short"] = repo.Short this.Data["description"] = string(github_flavored_markdown.Markdown([]byte(repo.Description))) this.Data["download"] = repo.Download this.Data["comments"] = len(repo.Comments) this.Data["starts"] = len(repo.Starts) this.TplNames = "repository.html" this.Render() return } } else { this.Data["username"] = user.Username this.Data["privated"] = repo.Privated this.Data["namespace"] = repo.Namespace this.Data["repository"] = repo.Repository this.Data["created"] = repo.Created this.Data["short"] = repo.Short this.Data["description"] = string(github_flavored_markdown.Markdown([]byte(repo.Description))) this.Data["download"] = repo.Download this.Data["comments"] = len(repo.Comments) this.Data["starts"] = len(repo.Starts) this.TplNames = "repository.html" this.Render() return } } else { this.Abort("404") return } return }
func checkRepositoriesPrivate(namespace, repository string) bool { repo := new(models.Repository) if has, _, err := repo.Has(namespace, repository); err != nil || has == false { return false } else if has == true { if repo.Privated == true { return false } else { return true } } return false }
func checkOrgRepositoryPermission(user *models.User, namespace, repository string, permission int) bool { owner := false //Check Org exists org := new(models.Organization) if has, _, _ := org.Has(namespace); has == false { return false } //Check Owner, don't care Join team for _, k := range user.Organizations { if org.Id == k { owner = true } } //Check Repository repo := new(models.Repository) if has, _, _ := repo.Has(namespace, repository); has == false { if owner == true { return true } else { return false } } if repo.Privated == false && permission == PERMISSION_READ { return true } //Loop Team for _, k := range user.JoinTeams { team := new(models.Team) if err := team.GetById(k); err != nil { return false } //TODO Check Team Perimssion } return false }