public IActionResult GetGalleries([FromQuery] int skip = 0, [FromQuery] int limit = 10) { using (var db = new VSExtensionManagerContext()) { var query = db.Galleries.Where(g => true); return(Ok(new { Results = query.Skip(skip).Take(limit).ToList(), Count = query.Count(), Limit = limit, Skip = skip })); } }
public IActionResult GetGalleryPackages([FromRoute] long galleryId, [FromQuery] int skip = 0, [FromQuery] int limit = 10) { using (var db = new VSExtensionManagerContext()) { var packages = db.Packages.Where(g => g.GalleryId == galleryId).Skip(skip).Take(limit); return(Ok(new { Results = packages.ToList(), Count = packages.Count(), Skip = skip, Limit = limit })); } }
public IActionResult GetFeed([FromRoute] long galleryId) { using (var db = new VSExtensionManagerContext()) { var gallery = db.Galleries.Include("Packages").SingleOrDefault(g => g.Id == galleryId); if (gallery == null) { return(NotFound(new { Error = $"Gallery '{galleryId}' not found." })); } else { return(Content(gallery.GetFeed(), "text/xml")); } } }
public IActionResult GetGallery([FromRoute] long galleryId) { using (var db = new VSExtensionManagerContext()) { var gallery = db.Galleries.SingleOrDefault(g => g.Id == galleryId); if (gallery == null) { return(NotFound(new { Error = $"Gallery '{galleryId}' not found." })); } else { return(Ok(gallery)); } } }
public IActionResult CreateGallery([FromBody] Gallery gallery) { using (var db = new VSExtensionManagerContext()) { if (gallery.Id == 0) { db.Galleries.Add(gallery); db.SaveChanges(); return(Ok(gallery)); } else { return(UpdateGallery(gallery.Id, gallery)); } } }
public IActionResult UpdateGallery([FromRoute] long galleryId, [FromBody] Gallery gallery) { using (var db = new VSExtensionManagerContext()) { var existing = db.Galleries.Find(galleryId); if (existing == null) { return(NotFound(new { Error = $"Gallery {galleryId} not found." })); } existing.DisplayName = gallery.DisplayName; db.SaveChanges(); return(Ok(gallery)); } }
public IActionResult UploadVSIX([FromRoute] long galleryId, IFormFile file, [FromQuery] string iconPath = "") { using (var db = new VSExtensionManagerContext()) { var gallery = db.Galleries.Find(galleryId); if (gallery == null) { return(NotFound(new { Error = $"Gallery '{galleryId}' not found." })); } // full path to file in temp location var filePath = Path.GetTempFileName(); using (var stream = new FileStream(filePath, FileMode.Create)) { file.CopyTo(stream); } var package = ProcessVsix(filePath); package.Content.Filename = file.FileName; package.Gallery = gallery; package.GalleryId = gallery.Id; db.Blobs.Add(package.Content); db.SaveChanges(); if (package.Icon != null) { db.Blobs.Add(package.Icon); } db.SaveChanges(); package.ContentId = package.Content.Id; if (package.Icon != null) { package.IconId = package.Icon.Id; } var existing = db.Packages.FirstOrDefault(p => p.PackageIdentifier == package.PackageIdentifier && p.GalleryId == galleryId); if (existing != null) { existing.Name = package.Name; existing.Author = package.Author; existing.DatePublished = package.DatePublished; existing.Description = package.Description; existing.ExtensionList = package.ExtensionList; //existing.FileName = package.FileName; existing.GettingStartedUrl = package.GettingStartedUrl; existing.Icon = package.Icon; existing.Content = package.Content; existing.Included = package.Included; existing.IssueTracker = package.IssueTracker; existing.License = package.License; existing.MoreInfoUrl = package.MoreInfoUrl; existing.Preview = package.Preview; existing.ReleaseNotesUrl = package.ReleaseNotesUrl; existing.Repo = package.Repo; existing.SupportedVersions.Clear(); existing.SupportedVersions.AddRange(package.SupportedVersions); existing.Tags = package.Tags; existing.Version = package.Version; package = existing; } else { db.Packages.Add(package); } db.SaveChanges(); package.Gallery.Packages = null; if (package.Icon != null) { package.Icon.Data = null; } package.Content.Data = null; return(Ok(package)); } }