public async Task <string> PostEnqueueExportWorkspaceTaskAsync(string workspaceId) { var request = new EnqueueTaskExportSpaceRequest(workspaceId); var result = await MakePostRequestWithRetriesAsync <EnqueueTaskExportSpaceRequest, EnqueueTaskResult>( "enqueueTask", request).ConfigureAwait(false); if (result.TaskId == null) { throw new WebException( $"Notion did not return task id for request {JsonSerializer.SerializeObject(request)}"); } return(result.TaskId); }
private async Task <TContentResult> MakePostRequestWithRetriesAsync <TRequest, TContentResult>(string relativeUrl, TRequest request) where TContentResult : class { var result = await ExecuteWithRetriesAsync(async() => await httpClient.SendAsync( new HttpRequestMessage(HttpMethod.Post, $"{BaseUrl}/{relativeUrl}") { Content = new StringContent(JsonSerializer.SerializeObject(request), Encoding.UTF8, "application/json") }).ConfigureAwait(false)).ConfigureAwait(false); if (result.StatusCode != HttpStatusCode.OK) { throw new WebException($"HTTP request unsuccessful. {result}"); } var contentResult = await ExecuteWithRetriesAsync( async() => JsonSerializer.DeserializeObject <TContentResult>(await result.Content .ReadAsStringAsync().ConfigureAwait(false))).ConfigureAwait(false); return(contentResult !); }
public static string ToPrettyJson() { return(JsonSerializer.SerializeObject(RawConfig)); }