public async Task <HttpResponseMessage> UploadMultipartAsync() { string fileId = null; if (!Request.Headers.Contains("uid")) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } if (Request.Headers.Contains("id")) { fileId = Request.Headers.GetValues("id").First(); } string uId = Request.Headers.GetValues("uid").First(); if (Request.Content.IsMimeMultipartContent()) { MultipartMemoryStreamProvider provider = await Request.Content.ReadAsMultipartAsync(new MultipartMemoryStreamProvider()); foreach (HttpContent content in provider.Contents) { if (content.Headers.ContentType == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } if (content.Headers.ContentDisposition.FileName == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } string contentType = content.Headers.ContentType.ToString(); string sourceExtension = content.Headers.ContentDisposition.FileName.Split(new char[] { '.' }).Last().Split(new char[] { '"' }).First(); if (!MimeTypeMapping.ValidateMimeType(contentType)) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } using (var stream = content.ReadAsStreamAsync().Result) { File uploadedFile = FileFactory.Create(contentType); uploadedFile.Info.Name = fileId; //file.Info.Extension = "." + sourceExtension; uploadedFile.Info.Creator = uId; uploadedFile.Info.Length = Convert.ToInt64(content.Headers.ContentLength); uploadedFile.FileStream = new FileDataStream() { Stream = stream }; SharedMedia.Save(new NeeoUser(uId), uploadedFile, FileCategory.Shared, 0); var response = new HttpResponseMessage(); response.StatusCode = HttpStatusCode.OK; response.Headers.Location = new Uri(uploadedFile.Info.Url); return(response); } } } return(Request.CreateResponse(HttpStatusCode.BadRequest)); }
public async Task <HttpResponseMessage> UploadResumableAsync() { var uploadingFileInfo = new NeeoFileInfo(); if (!Request.Headers.Contains("uid")) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } if (Request.Headers.Contains("id")) { uploadingFileInfo.Name = Request.Headers.GetValues("id").First(); } else { uploadingFileInfo.Name = Guid.NewGuid().ToString("N"); } if (!Request.Headers.Contains("upload-content-type")) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } if (!Request.Headers.Contains("upload-content-length")) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } if (!Request.Headers.Contains("filename")) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } var contentType = Request.Headers.GetValues("upload-content-type").First(); if (!MimeTypeMapping.ValidateMimeType(contentType)) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } var mimeTypeDetail = MimeTypeMapping.GetMimeTypeDetail(contentType); uploadingFileInfo.Creator = Request.Headers.GetValues("uid").First(); uploadingFileInfo.Length = Convert.ToInt64(Request.Headers.GetValues("upload-content-length").First()); uploadingFileInfo.MimeType = mimeTypeDetail.MimeType; uploadingFileInfo.MediaType = mimeTypeDetail.MediaType; uploadingFileInfo.Extension = mimeTypeDetail.Extension; var session = await UploadSessionManager.CreateSessionAsync(uploadingFileInfo); if (session == null) { return(Request.CreateResponse(HttpStatusCode.InternalServerError)); } var response = new HttpResponseMessage(HttpStatusCode.OK); response.Headers.Add("id", uploadingFileInfo.Name); response.Headers.Location = new Uri(NeeoUrlBuilder.BuildResumableUploadUrl(session.SessionID)); return(response); }
public async Task <HttpResponseMessage> PostUserInformation() { if (!Request.Headers.Contains("uid")) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } if (!Request.Headers.Contains("name")) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } string uId = Request.Headers.GetValues("uid").First(); string name = Request.Headers.GetValues("name").First();; bool isUpdated = false; if (Request.Content.IsMimeMultipartContent()) { MultipartMemoryStreamProvider provider = await Request.Content.ReadAsMultipartAsync(new MultipartMemoryStreamProvider()); foreach (HttpContent content in provider.Contents) { if (content.Headers.ContentType == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } if (content.Headers.ContentDisposition.FileName == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } string contentType = content.Headers.ContentType.ToString(); string sourceExtension = content.Headers.ContentDisposition.FileName.Split(new char[] { '.' }).Last().Split(new char[] { '"' }).First(); if (!MimeTypeMapping.ValidateMimeType(contentType)) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } using (var stream = content.ReadAsStreamAsync().Result) { NeeoUser user = new NeeoUser(uId); try { isUpdated = user.UpdateUserProfile(name, new LibNeeo.IO.File() { FileStream = new FileDataStream() { Stream = stream } }); return(Request.CreateResponse(HttpStatusCode.OK, isUpdated)); } catch (ApplicationException appExp) { return(SetCustomResponseMessage(isUpdated, (HttpStatusCode)(Convert.ToInt32(appExp.Message)))); } catch (Exception exp) { LogManager.CurrentInstance.ErrorLogger.LogError( MethodBase.GetCurrentMethod().DeclaringType, exp.Message, exp); return(SetCustomResponseMessage(isUpdated, (HttpStatusCode)CustomHttpStatusCode.ServerInternalError)); } } } } else { NeeoUser user = new NeeoUser(uId); try { isUpdated = user.UpdateUserProfile(name, null); return(Request.CreateResponse(HttpStatusCode.OK, isUpdated)); } catch (ApplicationException appExp) { return(SetCustomResponseMessage(isUpdated, (HttpStatusCode)(Convert.ToInt32(appExp.Message)))); } catch (Exception exp) { LogManager.CurrentInstance.ErrorLogger.LogError( MethodBase.GetCurrentMethod().DeclaringType, exp.Message, exp); return(SetCustomResponseMessage(isUpdated, (HttpStatusCode)CustomHttpStatusCode.ServerInternalError)); } } return(Request.CreateResponse(HttpStatusCode.BadRequest)); }