func TarGzDownload(ctx *middleware.Context, params martini.Params) { commitId := ctx.Repo.CommitId archivesPath := filepath.Join(ctx.Repo.GitRepo.Path, "archives/targz") if !com.IsDir(archivesPath) { if err := os.MkdirAll(archivesPath, 0755); err != nil { ctx.Handle(404, "TarGzDownload -> os.Mkdir(archivesPath)", err) return } } archivePath := filepath.Join(archivesPath, commitId+".tar.gz") if com.IsFile(archivePath) { ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+".tar.gz") return } err := ctx.Repo.Commit.CreateArchive(archivePath, git.AT_TARGZ) if err != nil { ctx.Handle(404, "TarGzDownload -> CreateArchive "+archivePath, err) return } ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+".tar.gz") }
func Download(ctx *middleware.Context) { ext := "." + ctx.Params(":ext") var archivePath string switch ext { case ".zip": archivePath = path.Join(ctx.Repo.GitRepo.Path, "archives/zip") case ".tar.gz": archivePath = path.Join(ctx.Repo.GitRepo.Path, "archives/targz") default: ctx.Error(404) return } if !com.IsDir(archivePath) { if err := os.MkdirAll(archivePath, os.ModePerm); err != nil { ctx.Handle(500, "Download -> os.MkdirAll(archivePath)", err) return } } archivePath = path.Join(archivePath, ctx.Repo.CommitId+ext) if !com.IsFile(archivePath) { if err := ctx.Repo.Commit.CreateArchive(archivePath, git.ZIP); err != nil { ctx.Handle(500, "Download -> CreateArchive "+archivePath, err) return } } ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+"-"+base.ShortSha(ctx.Repo.CommitId)+ext) }
func ZipDownload(ctx *middleware.Context, params martini.Params) { commitId := ctx.Repo.CommitId archivesPath := filepath.Join(ctx.Repo.GitRepo.Path, "archives") if !com.IsDir(archivesPath) { if err := os.Mkdir(archivesPath, 0755); err != nil { ctx.Handle(404, "ZipDownload -> os.Mkdir(archivesPath)", err) return } } zipPath := filepath.Join(archivesPath, commitId+".zip") if com.IsFile(zipPath) { ctx.ServeFile(zipPath, ctx.Repo.Repository.Name+".zip") return } err := ctx.Repo.Commit.CreateArchive(zipPath) if err != nil { ctx.Handle(404, "ZipDownload -> CreateArchive "+zipPath, err) return } ctx.ServeFile(zipPath, ctx.Repo.Repository.Name+".zip") }
func Profile(ctx *middleware.Context) { uname := ctx.Params(":username") // Special handle for FireFox requests favicon.ico. if uname == "favicon.ico" { ctx.ServeFile(path.Join(setting.StaticRootPath, "public/img/favicon.png")) return } else if strings.HasSuffix(uname, ".png") { ctx.Error(404) return } isShowKeys := false if strings.HasSuffix(uname, ".keys") { isShowKeys = true } u := GetUserByParams(ctx) if ctx.Written() { return } // Show SSH keys. if isShowKeys { ShowSSHKeys(ctx, u.Id) return } if u.IsOrganization() { showOrgProfile(ctx) return } ctx.Data["Title"] = u.DisplayName() ctx.Data["PageIsUserProfile"] = true ctx.Data["Owner"] = u tab := ctx.Query("tab") ctx.Data["TabName"] = tab switch tab { case "activity": retrieveFeeds(ctx, u.Id, 0, true) if ctx.Written() { return } default: var err error ctx.Data["Repos"], err = models.GetRepositories(u.Id, ctx.IsSigned && ctx.User.Id == u.Id) if err != nil { ctx.Handle(500, "GetRepositories", err) return } } ctx.HTML(200, PROFILE) }
func IssueGetAttachment(ctx *middleware.Context) { id := com.StrTo(ctx.Params(":id")).MustInt64() if id == 0 { ctx.Error(404) return } attachment, err := models.GetAttachmentById(id) if err != nil { ctx.Handle(404, "issue.IssueGetAttachment(models.GetAttachmentById)", err) return } // Fix #312. Attachments with , in their name are not handled correctly by Google Chrome. // We must put the name in " manually. ctx.ServeFile(attachment.Path, "\""+attachment.Name+"\"") }
func Download(ctx *middleware.Context) { var ( uri = ctx.Params("*") refName string ext string archivePath string archiveType git.ArchiveType ) switch { case strings.HasSuffix(uri, ".zip"): ext = ".zip" archivePath = path.Join(ctx.Repo.GitRepo.Path, "archives/zip") archiveType = git.ZIP case strings.HasSuffix(uri, ".tar.gz"): ext = ".tar.gz" archivePath = path.Join(ctx.Repo.GitRepo.Path, "archives/targz") archiveType = git.TARGZ default: ctx.Error(404) return } refName = strings.TrimSuffix(uri, ext) if !com.IsDir(archivePath) { if err := os.MkdirAll(archivePath, os.ModePerm); err != nil { ctx.Handle(500, "Download -> os.MkdirAll(archivePath)", err) return } } // Get corresponding commit. var ( commit *git.Commit err error ) gitRepo := ctx.Repo.GitRepo if gitRepo.IsBranchExist(refName) { commit, err = gitRepo.GetCommitOfBranch(refName) if err != nil { ctx.Handle(500, "Download", err) return } } else if gitRepo.IsTagExist(refName) { commit, err = gitRepo.GetCommitOfTag(refName) if err != nil { ctx.Handle(500, "Download", err) return } } else if len(refName) == 40 { commit, err = gitRepo.GetCommit(refName) if err != nil { ctx.Handle(404, "Download", nil) return } } else { ctx.Error(404) return } archivePath = path.Join(archivePath, base.ShortSha(commit.Id.String())+ext) if !com.IsFile(archivePath) { if err := commit.CreateArchive(archivePath, archiveType); err != nil { ctx.Handle(500, "Download -> CreateArchive "+archivePath, err) return } } ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+"-"+base.ShortSha(commit.Id.String())+ext) }