func LargeRevisions(ctx *middleware.Context) { ctx.Data["PageIsPackages"] = true ctx.Data["PageIsPackagesLarges"] = true models.GetLocalRevisions() ctx.HTML(200, "packages/larges") }
func ListLargeRevisions(ctx *middleware.Context) { revs, err := models.GetLocalRevisions() if err != nil { ctx.JSON(500, map[string]string{ "error": fmt.Sprintf("fail to get local revisions: %v", err), }) return } largeRevs := make([]*ApiRevesion, 0, len(revs)/2) for _, rev := range revs { pkg, err := models.GetPakcageById(rev.PkgId) if err != nil { ctx.JSON(500, map[string]string{ "error": fmt.Sprintf("fail to get package by ID(%d): %v", rev.PkgId, err), }) return } ext := archive.GetExtension(pkg.ImportPath) localPath := path.Join(pkg.ImportPath, rev.Revision) fpath := path.Join(setting.ArchivePath, localPath+ext) if !com.IsFile(fpath) { continue } // Check archive size. f, err := os.Open(fpath) if err != nil { ctx.JSON(500, map[string]string{ "error": fmt.Sprintf("fail to open file(%s): %v", fpath, err), }) return } fi, err := f.Stat() if err != nil { ctx.JSON(500, map[string]string{ "error": fmt.Sprintf("fail to get file info(%s): %v", fpath, err), }) return } // Greater then MAX_UPLOAD_SIZE. if fi.Size() > setting.MaxUploadSize<<20 { largeRevs = append(largeRevs, &ApiRevesion{ Id: rev.Id, Package: &ApiPackage{ Id: pkg.Id, ImportPath: pkg.ImportPath, Created: pkg.Created, }, Revision: rev.Revision, Size: fi.Size(), Updated: rev.Updated, }) continue } } ctx.JSON(200, map[string]interface{}{ "revisions": &largeRevs, }) }