Example #1
0
        private bool CheckManifestForUpdates(LibrarianContentManifest librarianContentManifest, CheckUpdateDto fileInfo)
        {
            bool updatesExist = CheckContentForUpdates(librarianContentManifest.ContentType, DateTime.Parse(librarianContentManifest.LastModDate), fileInfo);

            if (!updatesExist && (librarianContentManifest.ContentType == ContentType.GlobalFavorite || librarianContentManifest.ContentType == ContentType.MyFavorite))
            {
                foreach (var contentItem in librarianContentManifest.Items)
                {
                    LibraryFileInfoEx libraryFileInfo = _filesService.GetFileInfo(fileInfo);
                    updatesExist = libraryFileInfo.LastModDate > DateTime.Parse(contentItem.LastModDate);

                    //if (!updatesExist && contentItem.EditItem != null)
                    //{
                    //    SlidePreviewRequestEx slidePreviewRequestEx = session.LibrarianRpc.GetVirtualPresentationItemEdits(contentItem.EditItem.LinkId, contentItem.SlideId);
                    //    updatesExist = slidePreviewRequestEx.LastModDate > contentItem.EditItem.LastModDate;
                    //}

                    if (updatesExist)
                    {
                        break;               // exit loop
                    }
                }
            }

            return(updatesExist);
        }
Example #2
0
        public bool VerifyFile(CheckUpdateDto data)
        {
            FileTag fileTags = new FileTag();
            SlideTagExCollection     slideTags = new SlideTagExCollection();
            LibrarianContentManifest libraryContentManifest = new LibrarianContentManifest();

            using (Stream stream = new FileStream(data.FileUrl, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                using (PresentationDocument openXmlDoc = PresentationDocument.Open(stream, false))
                {
                    var presentationPart = openXmlDoc.PresentationPart;
                    fileTags  = _tagManagerService.GetFileTag(presentationPart);
                    slideTags = _tagManagerService.GetSlideTags(presentationPart);
                    libraryContentManifest = XmlUtils.Deserialize <LibrarianContentManifest>(_filesService.GetCustomXmlPart(presentationPart));

                    if (fileTags != null)
                    {
                        return(true);
                    }

                    if (slideTags.Count > 0)
                    {
                        return(true);
                    }

                    if (libraryContentManifest != null)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
        public void InsertCustomXml(CheckUpdateDto data)
        {
            var stringData = string.Empty;

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"{data.ServerInfo.WebClientUrl}{data.ServerInfo.ShortLibraryName}/Default.ashx?m=getfi&fid={data.FileId}&useweb=True&out=json");

            request.Method = "GET";
            request.Headers.Add("Authorization", data.ServerInfo.AuthHash);
            request.Proxy.Credentials = CredentialCache.DefaultCredentials;

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                Stream       dataStream = response.GetResponseStream();
                StreamReader reader     = new StreamReader(dataStream);
                stringData = reader.ReadToEnd();
                reader.Close();
                dataStream.Close();
            }

            var dataObject  = JObject.Parse(stringData);
            var lastModDate = dataObject.SelectToken("LastModDate").Value <string>();

            var librarianContentManifest = new LibrarianContentManifest
            {
                CatType        = CategoryType.Generic,
                ContentId      = data.FileId,
                ContentType    = ContentType.File,
                DateCreatedUTC = DateTime.UtcNow.ToString("o"),
                Filename       = data.FileName,
                LastModDate    = DateTime.Parse(lastModDate).ToString("o"),
                LibraryName    = data.ServerInfo.ShortLibraryName,
                LiveDb         = true,
                Server         = data.ServerInfo.EnvironmentName.Replace(" ", ""),
                PageCount      = dataObject.SelectToken("PageCount").Value <int>(),
                Items          = new List <ContentItem>()
                {
                    new ContentItem {
                        ContentType       = ContentType.File,
                        FileId            = data.FileId,
                        LastModDate       = DateTime.Parse(lastModDate).ToString("o"),
                        PageCount         = dataObject.SelectToken("PageCount").Value <int>(),
                        ParentContentId   = data.FileId,
                        ParentContentType = ContentType.File,
                        ParentItemIndex   = -1,
                        ParentLastModDate = DateTime.Parse(lastModDate).ToString("o"),
                        SlideId           = -1,
                        SlideNumber       = -1
                    }
                }
            };

            var result = Utils.InsertCustomXml(data.FileUrl, XmlUtils.Serialize(librarianContentManifest));
        }
Example #4
0
        public object CheckForUpdates(CheckUpdateDto data)
        {
            bool    updatesExist               = false;
            bool    showConfirmation           = true;
            FileTag fileTags                   = new FileTag();
            SlideTagExCollection     slideTags = new SlideTagExCollection();
            LibrarianContentManifest libraryContentManifest = new LibrarianContentManifest();

            using (Stream stream = new FileStream(data.FileUrl, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                using (PresentationDocument openXmlDoc = PresentationDocument.Open(stream, false))
                {
                    var presentationPart = openXmlDoc.PresentationPart;
                    fileTags  = _tagManagerService.GetFileTag(presentationPart);
                    slideTags = _tagManagerService.GetSlideTags(presentationPart);

                    if (fileTags != null)
                    {
                        data.FileId = fileTags.File.Id.ToString();

                        if (data.AskFirst)
                        {
                            if (fileTags != null && fileTags.File.ContentType == ContentType.File)
                            {
                                return(new CheckUpdateResponseDto()
                                {
                                    FileId = data.FileId,
                                    StatusCode = (HttpStatusCode)CheckUpdateStatusCode.HasNewVersion,
                                    StatusText = System.Enum.GetName(typeof(CheckUpdateStatusCode), CheckUpdateStatusCode.HasNewVersion)
                                });
                            }
                            else
                            {
                                return(new CheckUpdateResponseDto()
                                {
                                    FileId = data.FileId,
                                    StatusCode = (HttpStatusCode)CheckUpdateStatusCode.CheckUpdate,
                                    StatusText = System.Enum.GetName(typeof(CheckUpdateStatusCode), CheckUpdateStatusCode.CheckUpdate)
                                });
                            }
                        }

                        if (data.IsConfirm)
                        {
                            updatesExist = CheckFileForUpdates(fileTags, slideTags, data);

                            if (!isExcuted)
                            {
                                return(new CheckUpdateResponseDto()
                                {
                                    StatusCode = HttpStatusCode.BadRequest,
                                    StatusText = Message.ExcuteFailed
                                });
                            }

                            if (slideTags.Count > 0)
                            {
                                _downloadLatestVersion = true;
                                return(new
                                {
                                    FileId = data.FileId,
                                    StatusCode = 215,
                                    Value = UpdateListOfSlides(slideTags)
                                });
                            }

                            updatesExist     = slideTags.Count > 0;
                            showConfirmation = updatesExist;
                        }
                        else
                        {
                            showConfirmation = false;
                        }
                    }
                    else if (slideTags != null && slideTags.Count > 0)
                    {
                        data.FileId = slideTags.FirstOrDefault().File.Id.ToString();

                        if (data.AskFirst)
                        {
                            return(new CheckUpdateResponseDto()
                            {
                                FileId = data.FileId,
                                StatusCode = (HttpStatusCode)CheckUpdateStatusCode.CheckUpdate,
                                StatusText = System.Enum.GetName(typeof(CheckUpdateStatusCode), CheckUpdateStatusCode.CheckUpdate)
                            });
                        }

                        if (data.IsConfirm)
                        {
                            updatesExist = CheckSlidesForUpdates(slideTags, false, data);

                            if (!isExcuted)
                            {
                                return(new CheckUpdateResponseDto()
                                {
                                    StatusCode = HttpStatusCode.BadRequest,
                                    StatusText = Message.ExcuteFailed
                                });
                            }

                            if (slideTags.Count > 0)
                            {
                                _downloadLatestVersion = true;
                                return(new
                                {
                                    FileId = data.FileId,
                                    StatusCode = 215,
                                    Value = UpdateListOfSlides(slideTags)
                                });
                            }

                            updatesExist     = slideTags.Count > 0;
                            showConfirmation = updatesExist;
                        }
                        else
                        {
                            showConfirmation = false;
                        }
                    }
                    else
                    {
                        libraryContentManifest = XmlUtils.Deserialize <LibrarianContentManifest>(_filesService.GetCustomXmlPart(presentationPart));

                        if (libraryContentManifest != null)
                        {
                            data.FileName = libraryContentManifest.Filename;
                            data.FileId   = libraryContentManifest.ContentId;

                            if (data.AskFirst)
                            {
                                return(new CheckUpdateResponseDto()
                                {
                                    FileName = data.FileName,
                                    FileId = data.FileId,
                                    StatusCode = (HttpStatusCode)CheckUpdateStatusCode.HasNewVersion,
                                    StatusText = System.Enum.GetName(typeof(CheckUpdateStatusCode), CheckUpdateStatusCode.HasNewVersion)
                                });
                            }

                            updatesExist = CheckManifestForUpdates(libraryContentManifest, data);

                            if (!isExcuted)
                            {
                                return(new CheckUpdateResponseDto()
                                {
                                    StatusCode = HttpStatusCode.BadRequest,
                                    StatusText = Message.ExcuteFailed
                                });
                            }
                        }
                        else
                        {
                            showConfirmation = false;
                        }
                    }
                }
            }

            if (showConfirmation && !updatesExist)
            {
                return(new CheckUpdateResponseDto()
                {
                    FileId = data.FileId,
                    StatusCode = (HttpStatusCode)CheckUpdateStatusCode.UptoDate,
                    StatusText = System.Enum.GetName(typeof(CheckUpdateStatusCode), CheckUpdateStatusCode.UptoDate)
                });
            }

            if (updatesExist)
            {
                if (fileTags != null && _downloadLatestVersion)
                {
                    _filesService.GetLatestFile(data);
                }
                else if (slideTags != null && slideTags.Count > 0)
                {
                    return(new
                    {
                        FileId = data.FileId,
                        StatusCode = 215,
                        Value = UpdateListOfSlides(slideTags)
                    });
                }
                else if (libraryContentManifest != null)
                {
                    return(new CheckUpdateResponseDto()
                    {
                        FileId = libraryContentManifest.ContentId,
                        StatusCode = (HttpStatusCode)CheckUpdateStatusCode.UpdatedAvailable,
                        StatusText = System.Enum.GetName(typeof(CheckUpdateStatusCode), CheckUpdateStatusCode.UpdatedAvailable)
                    });
                }
            }

            return(updatesExist);
        }