Example #1
0
 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
         }));
     }
 }
Example #2
0
        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
                }));
            }
        }
Example #3
0
 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"));
         }
     }
 }
Example #4
0
 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));
         }
     }
 }
Example #5
0
 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));
         }
     }
 }
Example #6
0
        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));
            }
        }
Example #7
0
        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));
            }
        }