예제 #1
0
        public ActionResult Raw(Guid id, string encodedName, string encodedPath, bool display = false)
        {
            ViewBag.ID = id;

            var repo = RepositoryRepository.GetRepository(id);

            using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, repo.Name)))
            {
                var    name = PathEncoder.Decode(encodedName);
                var    path = PathEncoder.Decode(encodedPath);
                string referenceName;
                var    model = browser.BrowseBlob(name, path, out referenceName);

                if (!display)
                {
                    return(File(model.Data, "application/octet-stream", model.Name));
                }
                if (model.IsText)
                {
                    return(Content(model.Text, "text/plain", model.Encoding));
                }
                if (model.IsImage)
                {
                    return(File(model.Data, MimeTypeMap.GetMimeType(Path.GetExtension(model.Name.ToLower())), model.Name));
                }
            }

            return(HttpNotFound());
        }
        public ActionResult Blob(string id, string name, string encodedPath)
        {
            ViewBag.ID = id;
            if (!String.IsNullOrEmpty(id))
            {
                using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, id)))
                {
                    var path = PathEncoder.Decode(encodedPath);
                    string referenceName;
                    var model = browser.BrowseBlob(name, path, out referenceName);
                    PopulateBranchesData(browser, referenceName);
                    PopulateAddressBarData(name, path);

                    model.Text = FileDisplayHandler.GetText(model.Data);
                    model.IsText = model.Text != null;
                    if (model.IsText)
                        model.TextBrush = FileDisplayHandler.GetBrush(path);
                    else
                        model.IsImage = FileDisplayHandler.IsImage(path);

                    return View(model);
                }
            }
            return View();
        }
예제 #3
0
        public ActionResult Blob(string id, string name, string path)
        {
            ViewBag.ID = id;
            if (!String.IsNullOrEmpty(id))
            {
                using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, id)))
                {
                    string referenceName;
                    var    model = browser.BrowseBlob(name, path, out referenceName);
                    PopulateBranchesData(browser, referenceName);
                    PopulateAddressBarData(name, path);

                    model.Text   = FileDisplayHandler.GetText(model.Data);
                    model.IsText = model.Text != null;
                    if (model.IsText)
                    {
                        model.TextBrush = FileDisplayHandler.GetBrush(path);
                    }
                    else
                    {
                        model.IsImage = FileDisplayHandler.IsImage(path);
                    }

                    return(View(model));
                }
            }
            return(View());
        }
예제 #4
0
        public ActionResult Raw(string id, string encodedName, string encodedPath, bool display = false)
        {
            ViewBag.ID = id;
            if (String.IsNullOrEmpty(id))
            {
                return(HttpNotFound());
            }

            using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, id)))
            {
                var    name = PathEncoder.Decode(encodedName);
                var    path = PathEncoder.Decode(encodedPath);
                string referenceName;
                var    model = browser.BrowseBlob(name, path, out referenceName);

                if (!display)
                {
                    return(File(model.Data, "application/octet-stream", model.Name));
                }
                if (model.IsText)
                {
                    return(Content(model.Text, "text/plain", model.Encoding));
                }
                if (model.IsImage)
                {
                    return(File(model.Data, FileDisplayHandler.GetMimeType(model.Name), model.Name));
                }
            }

            return(HttpNotFound());
        }
예제 #5
0
        public ActionResult Tree(Guid id, string encodedName, string encodedPath)
        {
            bool includeDetails = Request.IsAjaxRequest();


            var name = PathEncoder.Decode(encodedName);
            var path = PathEncoder.Decode(encodedPath);

            var repo = RepositoryRepository.GetRepository(id);
            var repositoryDetailModel = ConvertRepositoryModel(repo, User);

            ViewBag.ID     = id;
            ViewBag.Name   = repo.Name;
            ViewBag.GitUrl = GitUrl(repo.Name);
            using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, repo.Name)))
            {
                string referenceName;
                var    files = browser.BrowseTree(name, path, out referenceName, includeDetails).ToList();

                var    readme    = files.FirstOrDefault(x => x.Name.Equals("readme.md", StringComparison.OrdinalIgnoreCase));
                string readmeTxt = string.Empty;
                if (readme != null)
                {
                    string refereceName;
                    var    blob = browser.BrowseBlob(name, readme.Path, out refereceName);
                    readmeTxt = blob.Text;
                }
                var model = new RepositoryTreeModel
                {
                    Name   = repo.Name,
                    Branch = name ?? referenceName,
                    Path   = path,
                    Readme = readmeTxt,
                    Logo   = new RepositoryLogoDetailModel(repo.Logo),
                    Files  = files.OrderByDescending(i => i.IsTree).ThenBy(i => i.Name)
                };

                if (includeDetails)
                {
                    return(Json(model, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    PopulateBranchesData(browser, referenceName);
                    PopulateAddressBarData(path);
                    return(View(model));
                }
            }
        }
예제 #6
0
        public ActionResult Raw(string id, string name, string path)
        {
            ViewBag.ID = id;
            if (!String.IsNullOrEmpty(id))
            {
                using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, id)))
                {
                    string referenceName;
                    var    model = browser.BrowseBlob(name, path, out referenceName);

                    return(File(model.Data, "application/octet-stream", model.Name));
                }
            }
            return(View());
        }
예제 #7
0
        public ActionResult Blob(Guid id, string encodedName, string encodedPath)
        {
            ViewBag.ID = id;
            var repo = RepositoryRepository.GetRepository(id);

            using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, repo.Name)))
            {
                var    name = PathEncoder.Decode(encodedName);
                var    path = PathEncoder.Decode(encodedPath);
                string referenceName;
                var    model = browser.BrowseBlob(name, path, out referenceName);
                PopulateBranchesData(browser, referenceName);
                PopulateAddressBarData(path);

                return(View(model));
            }
        }
예제 #8
0
        public ActionResult Blob(string id, string encodedName, string encodedPath)
        {
            ViewBag.ID = id;
            if (!String.IsNullOrEmpty(id))
            {
                using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, id)))
                {
                    var    name = PathEncoder.Decode(encodedName);
                    var    path = PathEncoder.Decode(encodedPath);
                    string referenceName;
                    var    model = browser.BrowseBlob(name, path, out referenceName);
                    PopulateBranchesData(browser, referenceName);
                    PopulateAddressBarData(name, path);

                    return(View(model));
                }
            }
            return(View());
        }
        public ActionResult Blob(string id, string encodedName, string encodedPath)
        {
            ViewBag.ID = id;
            if (!String.IsNullOrEmpty(id))
            {
                using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, id)))
                {
                    var name = PathEncoder.Decode(encodedName);
                    var path = PathEncoder.Decode(encodedPath);
                    string referenceName;
                    var model = browser.BrowseBlob(name, path, out referenceName);
                    PopulateBranchesData(browser, referenceName);
                    PopulateAddressBarData(name, path);

                    return View(model);
                }
            }
            return View();
        }
        private static void AddTreeToZip(RepositoryBrowser browser, string name, string path, ZipFile outputZip)
        {
            string referenceName;
            var    treeNode = browser.BrowseTree(name, path, out referenceName);

            foreach (var item in treeNode)
            {
                if (!item.IsTree)
                {
                    string blobReferenceName;
                    var    model = browser.BrowseBlob(item.TreeName, item.Path, out blobReferenceName);
                    outputZip.AddEntry(Path.Combine(item.TreeName, item.Path), model.Data);
                }
                else
                {
                    // recursive call
                    AddTreeToZip(browser, item.TreeName, item.Path, outputZip);
                }
            }
        }
        public ActionResult Tree(string id, string encodedName, string encodedPath)
        {
            bool includeDetails = Request.IsAjaxRequest();

            if (String.IsNullOrEmpty(id))
                return View();

            ViewBag.ID = id;
            var name = PathEncoder.Decode(encodedName);
            var path = PathEncoder.Decode(encodedPath);

            using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, id)))
            {
                string referenceName;
                var files = browser.BrowseTree(name, path, out referenceName, includeDetails);

                var readme = files.Where(x => x.Path.Equals("readme.md", StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                string readmeTxt = string.Empty;
                if (readme != null)
                {
                    string refereceName;
                    var blob = browser.BrowseBlob(name, readme.Path, out refereceName);
                    readmeTxt = blob.Text;
                }
                var model = new RepositoryTreeModel
                {
                    Name = id,
                    Branch = name,
                    Path = path,
                    Files = files.OrderByDescending(i => i.IsTree).ThenBy(i => i.Name),
                    Readme = readmeTxt
                };

                if (includeDetails)
                {
                    return Json(model, JsonRequestBehavior.AllowGet);
                }
                else
                {
                    PopulateBranchesData(browser, referenceName);
                    PopulateAddressBarData(path);
                    return View(model);
                }
            }
        }
        private static void AddTreeToZip(RepositoryBrowser browser, string name, string path, ZipFile outputZip)
        {
            string referenceName;
            var treeNode = browser.BrowseTree(name, path, out referenceName);

            foreach (var item in treeNode)
            {
                if (item.IsLink)
                {
                    outputZip.AddDirectoryByName(Path.Combine(item.TreeName, item.Path));
                }
                else if (!item.IsTree)
                {
                    string blobReferenceName;
                    var model = browser.BrowseBlob(item.TreeName, item.Path, out blobReferenceName);
                    outputZip.AddEntry(Path.Combine(item.TreeName, item.Path), model.Data);
                }
                else
                {
                    // recursive call
                    AddTreeToZip(browser, item.TreeName, item.Path, outputZip);
                }
            }
        }
        public ActionResult Raw(string id, string encodedName, string encodedPath, bool display = false)
        {
            ViewBag.ID = id;
            if (String.IsNullOrEmpty(id))
                return HttpNotFound();

            using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, id)))
            {
                var name = PathEncoder.Decode(encodedName);
                var path = PathEncoder.Decode(encodedPath);
                string referenceName;
                var model = browser.BrowseBlob(name, path, out referenceName);

                if (!display)
                {
                    return File(model.Data, "application/octet-stream", model.Name);
                }
                if (model.IsText)
                {
                    return Content(model.Text, "text/plain", model.Encoding);
                }
                if (model.IsImage)
                {
                    return File(model.Data, FileDisplayHandler.GetMimeType(model.Name), model.Name);
                }
            }

            return HttpNotFound();
        }
        public ActionResult Raw(string id, string name, string path)
        {
            ViewBag.ID = id;
            if (!String.IsNullOrEmpty(id))
            {
                using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, id)))
                {
                    string referenceName;
                    var model = browser.BrowseBlob(name, path, out referenceName);

                    return File(model.Data, "application/octet-stream", model.Name);
                }
            }
            return View();
        }
        public ActionResult Blob(Guid id, string encodedName, string encodedPath)
        {
            ViewBag.ID = id;
            var repo = RepositoryRepository.GetRepository(id);
            using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, repo.Name)))
            {
                var name = PathEncoder.Decode(encodedName);
                var path = PathEncoder.Decode(encodedPath);
                string referenceName;
                var model = browser.BrowseBlob(name, path, out referenceName);
                model.Logo = new RepositoryLogoDetailModel(repo.Logo);
                PopulateBranchesData(browser, referenceName);
                PopulateAddressBarData(path);

                return View(model);
            }
        }
        public ActionResult Raw(Guid id, string encodedName, string encodedPath, bool display = false)
        {
            ViewBag.ID = id;

            var repo = RepositoryRepository.GetRepository(id);
            using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, repo.Name)))
            {
                var name = PathEncoder.Decode(encodedName);
                var path = PathEncoder.Decode(encodedPath);
                string referenceName;
                var model = browser.BrowseBlob(name, path, out referenceName);
                model.Logo = new RepositoryLogoDetailModel(repo.Logo);

                if (!display)
                {
                    return File(model.Data, "application/octet-stream", model.Name);
                }
                if (model.IsText)
                {
                    return Content(model.Text, "text/plain", model.Encoding);
                }
                if (model.IsImage)
                {
                    return File(model.Data, MimeTypeMap.GetMimeType(Path.GetExtension(model.Name.ToLower())), model.Name);
                }
            }

            return HttpNotFound();
        }
예제 #17
0
        public ActionResult Detail(Guid id)
        {
            var mater = ConvertRepositoryModel(RepositoryRepository.GetRepository(id), User);

            if (mater != null)
            {
                mater.IsCurrentUserAdministrator = RepositoryPermissionService.HasPermission(User.Id(), mater.Id, RepositoryAccessLevel.Administer);
                SetGitUrls(mater);
            }
            ViewBag.ID     = id;
            ViewBag.Name   = mater.Name;
            ViewBag.GitUrl = mater.GitUrl;

            //using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, model.Name)))
            //{
            //    string defaultReferenceName;
            //    browser.BrowseTree(null, null, out defaultReferenceName);
            //    RouteData.Values.Add("encodedName", defaultReferenceName);
            //}
            bool includeDetails = Request.IsAjaxRequest();


            var name = PathEncoder.Decode(null);
            var path = PathEncoder.Decode(null);

            var repo = RepositoryRepository.GetRepository(id);
            var repositoryDetailModel = ConvertRepositoryModel(repo, User);


            using (var browser = new RepositoryBrowser(Path.Combine(UserConfiguration.Current.Repositories, repo.Name)))
            {
                string referenceName;
                var    files = browser.BrowseTree(name, path, out referenceName, includeDetails).ToList();
                PopulateBranchesData(browser, referenceName);
                var    readme    = files.FirstOrDefault(x => x.Name.Equals("readme.md", StringComparison.OrdinalIgnoreCase));
                string readmeTxt = string.Empty;
                if (readme != null)
                {
                    string refereceName;
                    var    blob = browser.BrowseBlob(name, readme.Path, out refereceName);
                    readmeTxt = blob.Text;
                }
                var model = new RepositoryTreeModel
                {
                    Name   = repo.Name,
                    Branch = name ?? referenceName,
                    Path   = path,
                    Readme = readmeTxt,
                    Logo   = new RepositoryLogoDetailModel(repo.Logo),
                    Files  = files.OrderByDescending(i => i.IsTree).ThenBy(i => i.Name)
                };

                if (includeDetails)
                {
                    return(Json(model, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    PopulateBranchesData(browser, referenceName);
                    PopulateAddressBarData(path);
                    return(View(model));
                }
            }
        }