public async Task SaveHostedContentsCollection(ChatMessage message, IChatMessageHostedContentsCollectionPage list) { var jsonFile = GetBackupMessageHostedContentFile(_Options.Path, _TeamId, _ChannelId, message); using System.IO.FileStream fs = System.IO.File.Create(jsonFile); _Logger.LogTrace($"File: {jsonFile}"); await JsonSerializer.SerializeAsync <IChatMessageHostedContentsCollectionPage>(fs, list, _Options.JsonOptions); }
public async Task SaveMessageHostedContents(ChatMessage message) { if (message.DeletedDateTime != null) { return; } var detailRequestBuilder = message.ReplyToId == null ? _GraphClientService.GetGraphClient(_Logger).Teams[_TeamId].Channels[_ChannelId].Messages[message.Id].HostedContents : _GraphClientService.GetGraphClient(_Logger).Teams[_TeamId].Channels[_ChannelId].Messages[message.ReplyToId].Replies[message.Id].HostedContents; var detailRequest = detailRequestBuilder.Request(); IChatMessageHostedContentsCollectionPage list = new ChatMessageHostedContentsCollectionPage(); do { _Logger.LogTrace($"GraphURI: {detailRequest.RequestUrl}"); IChatMessageHostedContentsCollectionPage hostedContentPage = null; for (int i = 1; i <= MgGraphRequester.MaxRetry; i++) { try { _Logger.LogTrace($"GraphURI({i}): {detailRequest.RequestUrl}"); hostedContentPage = await detailRequest.GetAsync(); break; } catch (ServiceException mgsex) { if (!await MgGraphRequester.ShouldContinue(mgsex, i)) { _Logger.LogWarning(mgsex, $"Error getting HostedContent page: {detailRequest.RequestUrl}"); return; } } } foreach (var hostedContent in hostedContentPage) { _Logger.LogTrace($"HostedContent: {message.Id}|{hostedContent.Id}"); list.Add(hostedContent); await SaveHostedContentBlob(message, hostedContent, detailRequestBuilder); } detailRequest = hostedContentPage.NextPageRequest; }while (detailRequest != null); if (list.Count > 0) { await SaveHostedContentsCollection(message, list); } }