/// <summary> /// Saves a file. /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <ApiResponse <CreatedWithIdResponse <int> > > SaveFileAsync(SaveFileRequest request) { Arg.IsNotNull(request, nameof(request)); var streamContent = new StreamContent(request.FileStream); streamContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(request.ContentType); var path = UrlHelper.GetSaveFilePath(); var multiPartContent = new MultipartFormDataContent { { streamContent, "file", request.FileName }, { new StringContent(request.RecordId.ToString()), nameof(request.RecordId) }, { new StringContent(request.FieldId.ToString()), nameof(request.FieldId) }, { new StringContent(request.Notes), nameof(request.Notes) }, }; if (request.ModifiedDate != null) { multiPartContent.Add(new StringContent(request.ModifiedDate.ToString()), nameof(request.ModifiedDate)); } var httpRequest = new HttpRequestMessage(HttpMethod.Post, path) { Content = multiPartContent, }; var httpResponse = await HttpClient.SendAsync(httpRequest); var apiResponse = await ApiResponseFactory.GetApiResponseAsync <CreatedWithIdResponse <int> >(httpResponse, ClientConfig.JsonSerializer); return(apiResponse); }
/// <summary> /// Performs an HTTP POST request to the <paramref name="path"/> and adds an API Key header. /// </summary> /// <param name="path"></param> /// <param name="content"></param> /// <returns></returns> private async Task <ApiResponse> PostAsync(string path, object content) { var httpResponse = await HttpClient.PostAsync(path, ClientConfig.ApiKey, content); var apiResponse = await ApiResponseFactory.GetApiResponseAsync(httpResponse, ClientConfig.JsonSerializer); return(apiResponse); }
// ------------------------------------ Client internals ------------------------------------ /// <summary> /// Performs an HTTP DELETE request to the <paramref name="path"/> and adds an API Key header. /// </summary> /// <param name="path"></param> /// <returns></returns> private async Task <ApiResponse> DeleteAsync(string path) { var httpResponse = await HttpClient.DeleteAsync(path, ClientConfig.ApiKey); var apiResponse = await ApiResponseFactory.GetApiResponseAsync(httpResponse, ClientConfig.JsonSerializer); return(apiResponse); }
/// <summary> /// Performs an HTTP PUT request to the <paramref name="path"/> and adds an API Key header. /// </summary> /// <typeparam name="TOutput"></typeparam> /// <param name="path"></param> /// <param name="content"></param> /// <returns></returns> private async Task <ApiResponse <TOutput> > PutAsync <TOutput>(string path, object content) where TOutput : class { var httpResponse = await HttpClient.PutAsync(path, ClientConfig.ApiKey, content); var apiResponse = await ApiResponseFactory.GetApiResponseAsync <TOutput>(httpResponse, ClientConfig.JsonSerializer); return(apiResponse); }
/// <summary> /// Performs an HTTP GET request to the <paramref name="path"/> and adds an API Key header. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="path"></param> /// <returns></returns> private async Task <ApiResponse <T> > GetAsync <T>(string path) where T : class { var httpResponse = await HttpClient.GetAsync(path, ClientConfig.ApiKey); var apiResponse = await ApiResponseFactory.GetApiResponseAsync <T>(httpResponse, ClientConfig.JsonSerializer); return(apiResponse); }