public async Task <PostResult> NewPost(BlogPost post, INewCategoryContext newCategoryContext, bool publish) { // initialize result PostResult result = new PostResult(); try { using (new ContentFilterApplier(post, ClientOptions, ContentFilterMode.Publish)) { // make the post if (post.IsPage) { result.PostId = await BlogClient.NewPage(_settings.HostBlogId, post, publish, result.ETag, result.AtomRemotePost); } else { result.PostId = await BlogClient.NewPost(_settings.HostBlogId, post, newCategoryContext, publish, result); } } // note success _settings.LastPublishFailed = false; } catch { _settings.LastPublishFailed = true; throw; } // determine the date-published based on whether there was an override if (post.HasDatePublishedOverride) { result.DatePublished = post.DatePublishedOverride; } else { result.DatePublished = DateTime.UtcNow; } // return result return(result); }