public OperationResultWithData <ScoContentDto> UploadFile(string folderScoId, IFormFile file) { // TRICK: var form = this.ControllerContext.HttpContext.Request.Form; string sessionKey = form["session"]; Session = GetReadOnlySession(Guid.Parse(sessionKey)); if (Session == null) { return(OperationResultWithData <ScoContentDto> .Error(Messages.SessionTimeOut)); } LmsCompany = Session.LmsCompany; // TODO: check user is teacher + feature is enabled string name = form["name"]; string description = form["description"]; string customUrl = form["customUrl"]; try { string fileName = file.FileName; var ac = this.GetUserProvider(); var helper = new ContentEditControllerHelper(Logger, ac); int fileSize; ScoInfoResult createdFile = helper.UploadFile(folderScoId, name, description, customUrl, fileName, file.ContentType, file.OpenReadStream(), out fileSize); var sco = ac.GetScoContent(createdFile.ScoInfo.ScoId); var dto = new ScoContentDtoMapper().Map(sco.ScoContent); //TRICK: dto.ByteCount = fileSize; return(dto.ToSuccessResult()); } catch (Exception ex) { IUserMessageException userError = ex as IUserMessageException; if (userError != null) { return(OperationResultWithData <ScoContentDto> .Error(ex.Message)); } throw; } }
private static void ProvideJsonpFault(Exception error, MessageVersion version, ref Message msg) { var resultedError = new WcfErrorWrapper { ErrorCode = Errors.CODE_ERRORTYPE_GENERIC_ERROR, Message = IsDev ? error.Message : ErrorsTexts.UnexpectedError, StackTrace = IsDev ? error.StackTrace : string.Empty, FullException = error.ToString(), Title = ErrorsTexts.UnexpectedError_Subject, }; FaultException <Error> webError = error as FaultException <Error>; if (webError != null) { resultedError.ErrorCode = webError.Detail.Return(x => x.errorCode, resultedError.ErrorCode); resultedError.Message = webError.Detail.Return(x => x.errorMessage, resultedError.Message); resultedError.Title = ErrorsTexts.ApplicationError; } else { IUserMessageException userMessage = error as IUserMessageException; if (userMessage != null) { resultedError.Message = error.Message; resultedError.Title = ErrorsTexts.ApplicationError; } } msg = Message.CreateMessage(version, "json", resultedError, new DataContractJsonSerializer(typeof(WcfErrorWrapper))); var wbf = new WebBodyFormatMessageProperty(WebContentFormat.Json); msg.Properties.Add(WebBodyFormatMessageProperty.Name, wbf); var response = WebOperationContext.Current.OutgoingResponse; response.ContentType = "application/json"; response.StatusCode = HttpStatusCode.OK; }
public async Task <HttpResponseMessage> UploadFile(string folderScoId) { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var provider = new MultipartFormDataMemoryStreamProvider(); await Request.Content.ReadAsMultipartAsync(provider); string name = provider.FormData["name"]; string description = provider.FormData["description"]; string customUrl = provider.FormData["customUrl"]; if (!provider.FileStreams.Any()) { throw new HttpResponseException(HttpStatusCode.BadRequest); //return Content(HttpStatusCode.BadRequest, "No file uploaded"); } if (provider.FileStreams.Count != 1) { throw new HttpResponseException(HttpStatusCode.BadRequest); //return Content(HttpStatusCode.BadRequest, "Single file expected"); } try { string fileName = provider.FileStreams.First().Key; MultipartFormDataMemoryStreamProvider.FileContent stream = provider.FileStreams.First().Value; var ac = this.GetUserProvider(); var contentService = new ContentService(Logger, ac); var helper = new ContentEditControllerHelper(Logger, ac); int fileSize; ScoInfoResult createdFile = helper.UploadFile(folderScoId, name, description, customUrl, fileName, stream.ContentType, stream.Stream, out fileSize); var sco = ac.GetScoContent(createdFile.ScoInfo.ScoId); var dto = new ScoContentDtoMapper().Map(sco.ScoContent); //TRICK: dto.ByteCount = fileSize; string output = JsonSerializer.JsonSerialize(dto.ToSuccessResult()); var response = new HttpResponseMessage(); response.Content = new StringContent(output); response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html"); return(response); } catch (Exception ex) { IUserMessageException userError = ex as IUserMessageException; if (userError != null) { string output = JsonSerializer.JsonSerialize(OperationResultWithData <ScoContentDto> .Error(ex.Message)); //JsonConvert.SerializeObject(OperationResultWithData<ScoContentDto>.Error(ex.Message)); var response = new HttpResponseMessage(); response.Content = new StringContent(output); response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html"); return(response); } throw; } }