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); }
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)); }
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); }