/// <summary>
        /// Update the navigation property hostedContents in users
        /// <param name="body"></param>
        /// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
        /// </summary>
        public RequestInformation CreatePatchRequestInformation(ChatMessageHostedContent body, Action <ChatMessageHostedContentItemRequestBuilderPatchRequestConfiguration> requestConfiguration = default)
        {
            _ = body ?? throw new ArgumentNullException(nameof(body));
            var requestInfo = new RequestInformation {
                HttpMethod     = Method.PATCH,
                UrlTemplate    = UrlTemplate,
                PathParameters = PathParameters,
            };

            requestInfo.SetContentFromParsable(RequestAdapter, "application/json", body);
            if (requestConfiguration != null)
            {
                var requestConfig = new ChatMessageHostedContentItemRequestBuilderPatchRequestConfiguration();
                requestConfiguration.Invoke(requestConfig);
                requestInfo.AddRequestOptions(requestConfig.Options);
                requestInfo.AddHeaders(requestConfig.Headers);
            }
            return(requestInfo);
        }
        public async Task SaveHostedContentBlob(ChatMessage message, ChatMessageHostedContent hostedContent, IChatMessageHostedContentsCollectionRequestBuilder detailRequestBuilder)
        {
            var messageHostedcontentRequest = detailRequestBuilder[hostedContent.Id].Content.Request();

            System.IO.Stream messageHostedcontentValue = null;
            for (int i = 1; i <= MgGraphRequester.MaxRetry; i++)
            {
                try
                {
                    _Logger.LogTrace($"GraphURI({i}): {messageHostedcontentRequest.RequestUrl}");
                    messageHostedcontentValue = await messageHostedcontentRequest.GetAsync();

                    break;
                }
                catch (ServiceException mgsex)
                {
                    if (mgsex.StatusCode == System.Net.HttpStatusCode.BadRequest)//Special case. hosted content will not return a 404 if not available :(
                    {
                        return;
                    }
                    else
                    {
                        if (!await MgGraphRequester.ShouldContinue(mgsex, i))
                        {
                            return;
                        }
                    }
                }
            }


            var blobFile = GetBackupMessageHostedContentBlob(_Options.Path, _TeamId, _ChannelId, message, hostedContent);

            using System.IO.FileStream fs = System.IO.File.Create(blobFile);
            _Logger.LogTrace($"BlobFile: {blobFile}");
            await messageHostedcontentValue.CopyToAsync(fs);
        }
 public static string GetBackupMessageHostedContentBlob(string root, string teamId, string channelId, ChatMessage message, ChatMessageHostedContent hostedContent)
 {
     return(GetBackupMessageHostedContentBlob(root, teamId, channelId, message, hostedContent.Id));
 }