public async Task <HttpResponseMessage> Post() { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } string root = HttpContext.Current.Server.MapPath("~/App_Data"); var provider = new MultipartFormDataStreamProvider(root); try { await Request.Content.ReadAsMultipartAsync(provider); var trainingRequest = new TrainingRequestModel() { FileBytes = File.ReadAllBytes(provider.FileData.FirstOrDefault()?.LocalFileName), Name = provider.FormData.Get("name"), Language = provider.FormData.Get("language"), }; return(Request.CreateResponse(HttpStatusCode.OK, await clasifierService.PostTrainingData(trainingRequest, default(CancellationToken)))); } catch (Exception) { return(Request.CreateResponse(HttpStatusCode.InternalServerError)); } }
public async Task <TrainingResponse> PostTrainingData(TrainingRequestModel trainingRequest, CancellationToken cancellationToken) { var requestContent = new MultipartFormDataContent { { new StreamContent(new MemoryStream(trainingRequest.FileBytes)), "training_data" }, { new StringContent(JsonConvert.SerializeObject(new TrainingRequest() { Language = trainingRequest.Language, Name = trainingRequest.Name })), "training_metadata" } }; return(await httpRequester.Post <TrainingResponse>($"{endPoint}/classifiers", requestContent)); }