/* ** ** Upload ** */ public virtual HttpResponseMessage UploadFile(Client currentClient, Document entity, HttpRequestMessage Request, IHomeRepository homeRepo, IDocumentLogRepository logRepo) { MyMultipartFileStreamProvider provider; Boolean isImage = false; ValidateNull(entity); if (entity != null && ((IDocumentRepository)repo).GetDocumentById(entity.Id, currentClient.Id) == null) { validationDictionnary.AddModelError(TypeOfName.GetNameFromType <Document>(), GenericError.FORBIDDEN_RESOURCE_OR_DOES_NO_EXIST); } if (!((DocumentValidation)validation).UploadValidationBeforeProvider(validationDictionnary, currentClient, entity, Request)) { throw new ManahostValidationException(validationDictionnary); } provider = new MyMultipartFileStreamProvider(ManahostUploadFileSystem.GetUploadFolderPath(WebApiApplication.UPLOAD_FOLDER_ROOT, currentClient.Id, (Boolean)entity.IsPrivate)); try { IEnumerable <HttpContent> parts = null; Task.Factory.StartNew(() => parts = Request.Content.ReadAsMultipartAsync(provider).Result.Contents, CancellationToken.None, TaskCreationOptions.LongRunning, // guarantees separate thread TaskScheduler.Default).Wait(); MultipartFileData file = provider.FileData.First(); if (!((DocumentValidation)validation).UploadValidationAfterProvider(validationDictionnary, currentClient, file)) { throw new ManahostValidationException(validationDictionnary); } if (isImage = ManahostUploadFileSystem.imageExtension.Any(s => entity.Title.EndsWith(s, StringComparison.OrdinalIgnoreCase))) { ImageCompressAndThumbnail(file.LocalFileName); } if ((Boolean)entity.IsPrivate && currentClient != null) { EncryptFileOnUpload(file.LocalFileName, DocumentUtils.GetEncryptionPassword(homeRepo, currentClient), isImage); } if (!UpdateEntitiesOnUpload(currentClient, entity, file.LocalFileName, isImage, logRepo)) { throw new ManahostValidationException(validationDictionnary); } } catch (Exception e) { if (validationDictionnary.IsValid) { validationDictionnary.AddModelError(String.Format(GenericNames.MODEL_STATE_FORMAT, TypeOfName.GetNameFromType <Document>(), "Upload"), GenericError.INVALID_GIVEN_PARAMETER); } if (entity.Url != null) { DocumentUtils.DeleteAllFile(entity.Url, isImage); } repo.Delete(entity); repo.Save(); throw new ManahostValidationException(validationDictionnary, e.StackTrace); } return(BuildStringContent.BuildFromRequestOK(Request)); }
protected override void DoDelete(Client currentClient, int id, object param) { if (orig != null && orig.Title != null) { Boolean isImage = ManahostUploadFileSystem.imageExtension.Any(s => orig.Title.EndsWith(s, StringComparison.OrdinalIgnoreCase)); if (orig.Url != null) { DocumentUtils.DeleteAllFile(orig.Url, isImage); } } }