private async void logResponse(HttpResponseMessage response, string serviceCall, bool isDownload, string filePath = "") { Console.WriteLine(); Console.WriteLine("*************************************************************************"); Console.WriteLine("SERVICECALL :::: " + serviceCall); Console.WriteLine(); Console.WriteLine("METHOD :::: " + response.RequestMessage.Method); Console.WriteLine("REQUEST_STATUS_CODE :::: " + response.StatusCode); if (response.IsSuccessStatusCode && serviceCall == "UploadFile") { Console.WriteLine("--------------------"); Console.WriteLine("RESPONSE :::: " + " The following code is the ID of your file which you should use to start a slicing task: "); FileIdResponse resObj = JsonConvert.DeserializeObject <FileIdResponse>(response.Content.ReadAsStringAsync().Result); Console.WriteLine(resObj.Result.FileId); Console.WriteLine("--------------------"); } else if (isDownload && HttpStatusCode.OK == response.StatusCode) { Console.WriteLine("--------------------"); Console.WriteLine("RESPONSE :::: " + " Please check the following folder for the downloaded FCode file: "); Console.WriteLine(filePath); Console.WriteLine("--------------------"); } else { Console.WriteLine("RESPONSE :::: " + await response.Content.ReadAsStringAsync()); } Console.WriteLine("*************************************************************************"); Console.WriteLine(); }
// ************************************************************************************* // //This function is used by all the API Functions to call the API // ************************************************************************************* // public async Task <MakeRequestResponse> MakeRequest(String method, string serviceCall, ApiRequest ApiRequest, bool isDownload = false, string downloadFolderPath = "") { using (HttpClient client = new HttpClient()) { try { //Authentication & Authorization client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", this.ApiSettings.ApiKey); // client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", this.Token); HttpResponseMessage result = new HttpResponseMessage(); //Making the request depending on which type of request( multipart/form-data or application/json ) //Only UploadFile uses multipart/form-data if (serviceCall == "UploadFile") { //Turn the ApiRequest into an UploadApiRequest string tempString = JsonConvert.SerializeObject(ApiRequest); UploadApiRequest apiReq = JsonConvert.DeserializeObject <UploadApiRequest>(tempString); //The API main link ( ex: http://localhost:5001/REALvision/ ) client.BaseAddress = new Uri(this.ApiSettings.ApiUrl); //Initializing the multipart Http request entity MultipartFormDataContent multipartRequest = new MultipartFormDataContent(); //Adding details to the request like the filename and the file itself HttpContent FileNameContent = new StringContent(apiReq.FileName); HttpContent stlFileContent = new ByteArrayContent(apiReq.File); multipartRequest.Add(FileNameContent, "FileName"); multipartRequest.Add(stlFileContent, "file", apiReq.FileName); try { result = client.PostAsync("UploadFile", multipartRequest).Result; } catch (HttpRequestException e) { Console.WriteLine("Error while uploading file ... "); throw e; } Console.WriteLine("*************************************************************************"); //Logging the results of the request this.logResponse(result, serviceCall, false); if (result.IsSuccessStatusCode) { string uploadFileResponseString = await result.Content.ReadAsStringAsync(); FileIdResponse uploadFileResponse = JsonConvert.DeserializeObject <FileIdResponse>(uploadFileResponseString); return(new MakeRequestResponse(result.StatusCode, uploadFileResponse.Result.FileId)); } else { string errorResponseString = await result.Content.ReadAsStringAsync(); //ApiErrorResponse errorResponse = JsonConvert.DeserializeObject<ApiErrorResponse>(errorResponseString); return(new MakeRequestResponse(result.StatusCode, errorResponseString)); } } else { string downloadFileName = ""; //Turn the ApiRequest into an UploadApiRequest string tempString = JsonConvert.SerializeObject(ApiRequest); //We use the string for the HTTP request if (method == "GET") { result = client.GetAsync(this.ApiSettings.ApiUrl + serviceCall).Result; } else { result = client.PostAsync(this.ApiSettings.ApiUrl + serviceCall, new StringContent(tempString, Encoding.UTF8, "application/json")).Result; } if (result.IsSuccessStatusCode) { //Reading the response as a string var response = await result.Content.ReadAsStringAsync(); if (!isDownload) { this.logResponse(result, serviceCall, false); switch (serviceCall) { case "GetActivationStatus": ActivationStatusResponse resp = JsonConvert.DeserializeObject <ActivationStatusResponse>(response); return(new MakeRequestResponse(result.StatusCode, resp.Result.Activated)); case "StartSlicingTask": TaskIdResponse startSlicingTaskResponse = JsonConvert.DeserializeObject <TaskIdResponse>(response); return(new MakeRequestResponse(result.StatusCode, startSlicingTaskResponse.Result.TaskId)); case "GetProgress": ProgressResponse responseObject = JsonConvert.DeserializeObject <ProgressResponse>(response); return(new MakeRequestResponse(result.StatusCode, responseObject.Result.Progress)); case "GetPrintingInformation": PrintingInformationResponse printingInformationResponse = JsonConvert.DeserializeObject <PrintingInformationResponse>(response); return(new MakeRequestResponse(result.StatusCode, JsonConvert.SerializeObject(printingInformationResponse.Result))); default: return(new MakeRequestResponse(result.StatusCode, "Service call could not be found.")); } } else { this.logResponse(result, serviceCall, isDownload, downloadFolderPath + downloadFileName); downloadFileName = result.Content.Headers.ContentDisposition.FileName; SaveFile(response, Path.GetFileNameWithoutExtension(downloadFileName), Path.GetExtension(downloadFileName), downloadFolderPath); return(new MakeRequestResponse(result.StatusCode, response)); } } else { string errorResponseString = await result.Content.ReadAsStringAsync(); ApiErrorResponse errorResponse = JsonConvert.DeserializeObject <ApiErrorResponse>(errorResponseString); throw new Exception(errorResponse.Error.ErrorMessage); } } } catch (WebException e) { throw e; } } }