Esempio n. 1
0
        public Dictionary <string, object> UpdateTemplate(string domain, byte[] postData, DynamicTableObject obj)
        {
            var oldTemplate = obj.Values;

            IndexedDB.Serializer.Simple.SimpleConverter <TemplateUpdateModel> converter = new IndexedDB.Serializer.Simple.SimpleConverter <TemplateUpdateModel>();
            var model = converter.FromBytes(postData);
            var hash  = Lib.Security.Hash.ComputeGuid(model.Bytes);

            var userId = oldTemplate["userId"];

            if (hash != model.ByteHash ||
                model.UserId.ToString() != userId.ToString())
            {
                return(null);
            }

            oldTemplate["link"]                  = model.Link;
            oldTemplate["description"]           = model.Description;
            oldTemplate["tags"]                  = model.Tags;
            oldTemplate["lastModified"]          = DateTime.UtcNow;
            oldTemplate["lastModifiedTimeStamp"] = DateTime.UtcNow.Ticks;

            var existImages = new List <string>();

            if (oldTemplate["images"] != null && !string.IsNullOrEmpty(oldTemplate["images"].ToString()))
            {
                var oldlist = Kooboo.Lib.Helper.JsonHelper.Deserialize <List <string> >(oldTemplate["images"].ToString());
                var newlist = JsonHelper.Deserialize <List <string> >(model.Images);
                existImages = clearImagePath(oldlist, newlist);
            }

            var images    = new List <ScreenshotImage>();
            var thumbnail = string.Empty;

            if (model.Bytes != null && model.Bytes.Length > 0)
            {
                Guid oldsiteid = model.Id;
                // there is a change of zip.
                File.WriteAllBytes(GetFilePath(model.Id.ToString()), model.Bytes);
                oldTemplate["size"] = model.Bytes.Length;
                // update to preview sites.
                var siteDb = ImportBinary(domain, model.Bytes, oldTemplate);

                if (model.NewImages.Count == 0 && existImages.Count() == 0)
                {
                    images = GetScreenshotImages(siteDb, domain);
                    if (images.Count > 0)
                    {
                        thumbnail = images[0].FileName;
                    }
                }
                // remove the old site.
                Sites.Service.WebSiteService.Delete(oldsiteid);
            }
            foreach (var image in model.NewImages)
            {
                var screenshotImage = new ScreenshotImage
                {
                    Base64   = image.Base64,
                    FileName = Guid.NewGuid().ToString().Replace("-", "") + Kooboo.Lib.Helper.UrlHelper.FileExtension(image.FileName)
                };
                images.Add(screenshotImage);
                if (image.IsDefault)
                {
                    thumbnail = screenshotImage.FileName;
                }
            }

            var imagelist = new List <string>();

            foreach (var image in images)
            {
                string relativeurl = image.FileName;
                var    filepath    = GetImagePath(relativeurl);

                File.WriteAllBytes(filepath, image.Bytes);
                imagelist.Add(relativeurl);
            }
            existImages.AddRange(imagelist);
            oldTemplate["images"]    = existImages.ToArray();
            oldTemplate["thumbNail"] = string.IsNullOrEmpty(thumbnail) ? GetDefaultImage(existImages, model.NewDefault) : thumbnail;
            return(oldTemplate);
        }
Esempio n. 2
0
        public Dictionary <string, object> UploadOldFormat(string domain, byte[] postData)
        {
            IndexedDB.Serializer.Simple.SimpleConverter <TemplateDataModel> converter = new IndexedDB.Serializer.Simple.SimpleConverter <TemplateDataModel>();
            var model = converter.FromBytes(postData);
            var hash  = Lib.Security.Hash.ComputeGuid(model.Bytes);

            if (hash != model.ByteHash ||
                model.UserId == default(Guid) || model.Bytes.Length == 0)
            {
                return(null);
            }

            var dic = new Dictionary <string, object>();

            dic["name"]        = model.Name;
            dic["link"]        = model.Link;
            dic["description"] = model.Description;
            dic["tags"]        = model.Tags;
            dic["userId"]      = model.UserId;
            var user = Data.GlobalDb.Users.Get(model.UserId);

            if (user != null)
            {
                dic["userName"] = user.FullName;
            }

            dic["lastModified"]          = DateTime.UtcNow;
            dic["lastModifiedTimeStamp"] = DateTime.UtcNow.Ticks;
            dic["downloadCount"]         = 0;
            dic["score"] = 0;
            dic["id"]    = Guid.NewGuid().ToString();

            var filePath = GetFilePath(dic["id"].ToString());

            File.WriteAllBytes(filePath, model.Bytes);
            dic["size"] = model.Bytes.Length;

            var siteDb = ImportBinary(domain, model.Bytes, dic);

            Lib.Helper.IOHelper.EnsureDirectoryExists(ImagePath);

            var images    = new List <ScreenshotImage>();
            var thumbnail = "";

            if (model.Images.Count() == 0)
            {
                images = GetScreenshotImages(siteDb, domain);
                if (images.Count > 0)
                {
                    thumbnail = images[0].FileName;
                }
            }
            else
            {
                foreach (var image in model.Images)
                {
                    var screenshotImage = new ScreenshotImage
                    {
                        Base64   = image.Base64,
                        FileName = Guid.NewGuid().ToString().Replace("-", "") + Kooboo.Lib.Helper.UrlHelper.FileExtension(image.FileName)
                    };
                    images.Add(screenshotImage);
                    if (image.IsDefault)
                    {
                        thumbnail = screenshotImage.FileName;
                    }
                }
                if (string.IsNullOrEmpty(thumbnail) && images.Count > 0)
                {
                    thumbnail = images[0].FileName;
                }
            }

            var imagelist = new List <string>();

            foreach (var image in images)
            {
                string relativeurl = image.FileName;
                var    filepath    = GetImagePath(relativeurl);

                File.WriteAllBytes(filepath, image.Bytes);
                imagelist.Add(relativeurl);
            }
            dic["images"]    = imagelist.ToArray();
            dic["thumbNail"] = thumbnail;

            return(dic);
        }