private void ScrollingHost_ViewChanged(object sender, ScrollViewerViewChangedEventArgs args) { var scrollViewer = sender as ScrollViewer; if (_scrollingHostDisabled) { if (!args.IsIntermediate) { scrollViewer.ChangeView(null, scrollViewer.ScrollableHeight, null, true); } _scrollingHost = scrollViewer.VerticalOffset; return; } if (scrollViewer.VerticalOffset >= scrollViewer.ScrollableHeight - 12 && _scrollingHost < scrollViewer.VerticalOffset) { _scrollingHostDisabled = true; SetScrollMode(false); SharedMedia.SetScrollMode(true); _sharedMediaDisabled = false; } _scrollingHost = scrollViewer.VerticalOffset; }
private void SharedMedia_ViewChanged(object sender, ScrollViewerViewChangedEventArgs args) { var scrollViewer2 = sender as ScrollViewer; if (_sharedMediaDisabled) { if (!args.IsIntermediate) { scrollViewer2.ChangeView(null, 12, null, false); } _sharedMedia = scrollViewer2.VerticalOffset; return; } if (scrollViewer2.VerticalOffset <= 12 && _sharedMedia > scrollViewer2.VerticalOffset) { SetScrollMode(true); _scrollingHostDisabled = false; _sharedMediaDisabled = true; SharedMedia.SetScrollMode(false); } _sharedMedia = scrollViewer2.VerticalOffset; }
private void SharedMedia_ViewChanged(object sender, ScrollViewerViewChangedEventArgs args) { var scrollViewer2 = SharedMedia.GetScrollViewer(); if (_sharedMediaDisabled) { if (!args.IsIntermediate) { scrollViewer2.ChangeView(null, 12, null, false); } _sharedMedia = scrollViewer2.VerticalOffset; return; } if (scrollViewer2.VerticalOffset <= 12 && _sharedMedia > scrollViewer2.VerticalOffset) { ScrollingHost.VerticalScrollMode = ScrollMode.Auto; ScrollingHost.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; ScrollingHost.ChangeView(null, ScrollingHost.ScrollableHeight - 48, null, false); _scrollingHostDisabled = false; _sharedMediaDisabled = true; SharedMedia.SetScrollMode(false); } _sharedMedia = scrollViewer2.VerticalOffset; }
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)); }
/// <summary> /// /// </summary> /// <param name="uID"></param> /// <param name="fileID"></param> public void Acknowledgement(string uID, string fileID) { ulong temp = 0; uID = (uID != null) ? uID.Trim() : uID; fileID = (fileID != null) ? fileID.Trim() : fileID; #region log user request and response /*********************************************** * To log user request ***********************************************/ if (_logRequestResponse) { LogManager.CurrentInstance.InfoLogger.LogInfo( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, System.Reflection.MethodBase.GetCurrentMethod().Name + "===>" + "Request ===> senderID : " + uID + ", fileID : " + fileID); } #endregion //#region Verify User // var request = OperationContext.Current.IncomingMessageProperties[HttpRequestMessageProperty.Name] as HttpRequestMessageProperty; // string keyFromClient = request.Headers["key"]; // if (NeeoUtility.AuthenticateUserRequest(uID, keyFromClient)) // { // #endregion if (NeeoUtility.IsNullOrEmpty(uID) && !ulong.TryParse(uID, out temp) && NeeoUtility.IsNullOrEmpty(fileID)) { NeeoUtility.SetServiceResponseHeaders(CustomHttpStatusCode.InvalidArguments); } else { NeeoUser user = new NeeoUser(uID); try { if (!SharedMedia.UpdateDownloadCount(user, fileID)) { NeeoUtility.SetServiceResponseHeaders((CustomHttpStatusCode)HttpStatusCode.NotFound); } } catch (ApplicationException appExp) { NeeoUtility.SetServiceResponseHeaders((CustomHttpStatusCode)(Convert.ToInt32(appExp.Message))); } } //} //else //{ // NeeoUtility.SetServiceResponseHeaders((CustomHttpStatusCode)HttpStatusCode.Unauthorized); //} }
private LibNeeo.IO.File GetRequestedFile(FileRequest fileRequest) { switch (fileRequest.FileCategory) { case FileCategory.Shared: return(SharedMedia.GetMedia(fileRequest.Name, fileRequest.MediaType)); case FileCategory.Group: return(NeeoGroup.GetGroupIcon(fileRequest.Name)); default: return(null); } }
public void OnBackRequested(HandledRoutedEventArgs args) { if (_scrollingHostDisabled) { _scrollingHostDisabled = false; SharedMedia.SetScrollMode(false); //SetScrollMode(true); ScrollingHost.VerticalScrollMode = ScrollMode.Auto; ScrollingHost.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; ScrollingHost.ChangeView(null, 0, null, false); ScrollingInfo.Visibility = Visibility.Visible; InfoPanel.Visibility = Visibility.Collapsed; args.Handled = true; } }
private LibNeeo.IO.File GetRequestedFile(string fileID, FileCategory fileCategory, MediaType mediaType) { string filePath = null; switch (fileCategory) { case FileCategory.Shared: return(SharedMedia.GetMedia(fileID, mediaType)); break; case FileCategory.Group: return(NeeoGroup.GetGroupIcon(fileID)); break; default: return(null); } }
private void Callback(object state) { LogManager.CurrentInstance.InfoLogger.LogInfo( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "Callback fired at " + DateTime.UtcNow.ToString()); try { SharedMedia.DeleteExpiredFiles(); } catch (ApplicationException applicationException) { //already logged. } catch (Exception exception) { LogManager.CurrentInstance.ErrorLogger.LogError( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, exception.Message, exception); } UpdateTimeInterval(); }
public async Task <HttpResponseMessage> Put([FromUri] string type, [FromUri] string sessionID) { long startingPosition = 0; try { if (type != "resumable" || NeeoUtility.IsNullOrEmpty(sessionID)) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } var session = await UploadSessionManager.ValidateSessionAsync(sessionID); if (session == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } session.FileInfo.Extension = MimeTypeMapping.GetMimeTypeDetail(session.FileInfo.MimeType.GetDescription()).Extension; long? contentLength = Request.Content.Headers.ContentLength; string contentType = Request.Content.Headers.ContentType == null ? null : Request.Content.Headers.ContentType.ToString(); if (Request.Content.Headers.Contains("Content-Range")) { var contentRange = Request.Content.Headers.GetValues("Content-Range").First(); if (contentRange == "bytes */*") { var file = SharedMedia.GetMedia(session.FileInfo.Name, session.FileInfo.MediaType); if (file != null) { var response = Request.CreateResponse((HttpStatusCode)308); response.Headers.Add("Range", "bytes=0-" + file.Info.Length); response.ReasonPhrase = "Resumable Incomplete"; return(response); } else { var response = Request.CreateResponse((HttpStatusCode)308); response.Headers.Add("Range", "bytes=0-0"); response.ReasonPhrase = "Resumable Incomplete"; return(response); } } else { var delimeter = new char[] { '-', '/', ' ' }; var rangeValues = contentRange.Split(delimeter); if (rangeValues.Length != 4) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } if (Convert.ToInt64(rangeValues[2]) != session.FileInfo.Length) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } startingPosition = Convert.ToInt64(rangeValues[1]); } } if (contentLength == null || contentLength > (long)session.FileInfo.Length) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } using (var stream = await Request.Content.ReadAsStreamAsync()) { var newFile = new File() { Info = session.FileInfo, FileStream = new FileDataStream() { Stream = stream, Postion = startingPosition } }; if (SharedMedia.Save(new NeeoUser(session.FileInfo.Creator), newFile, FileCategory.Shared, 0)) { // check the length of the file with the database then delete it. await UploadSessionManager.DeleteSessionAsync(sessionID); var response = new HttpResponseMessage(HttpStatusCode.Created); response.Headers.Location = new Uri(newFile.Info.Url); return(response); } } return(Request.CreateResponse(HttpStatusCode.InternalServerError)); } catch (Exception exception) { return(Request.CreateResponse(HttpStatusCode.InternalServerError)); } }
public async Task <HttpResponseMessage> UploadDataAsync(ApiController controller) { if (controller.Request.Content.Headers.ContentType == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } if (Request.Content.Headers.ContentType.ToString().Split(new char[] { ';' })[0] != "application/json") { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } var requestBody = await Request.Content.ReadAsStringAsync(); var fileRequest = JsonConvert.DeserializeObject <UploadFileRequest>(requestBody); controller.Validate(fileRequest); if (!ModelState.IsValid) { return(controller.Request.CreateResponse(HttpStatusCode.BadRequest)); } if (!NeeoUtility.IsNullOrEmpty(fileRequest.FId)) { Guid resultingGuid; if (!Guid.TryParse(fileRequest.FId, out resultingGuid)) { LogManager.CurrentInstance.InfoLogger.LogInfo(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, System.Reflection.MethodBase.GetCurrentMethod().Name + "===>" + "fID : " + fileRequest.FId + " is not parseable."); return(Request.CreateResponse(HttpStatusCode.BadRequest)); } fileRequest.FId = resultingGuid.ToString("N").ToLower(); } NeeoUser sender = new NeeoUser(fileRequest.Uid); File uploadedFile = FileFactory.Create(fileRequest.MimeType.GetDescription()); uploadedFile.Info.Name = fileRequest.FId; uploadedFile.Info.Creator = fileRequest.Uid; uploadedFile.Data = fileRequest.Data; //LibNeeo.IO.File uploadingFile = new LibNeeo.IO.File() //{ // Info = new NeeoFileInfo() // { // MediaType = MediaType.Image, // MimeType = fileRequest.MimeType, // Extension = "jpg" // }, // Data = fileRequest.Data //}; SharedMedia.Save(sender, uploadedFile, FileCategory.Shared, 0); #region log user request and response /*********************************************** * To log user response ***********************************************/ if (_logRequestResponse) { LogManager.CurrentInstance.InfoLogger.LogInfo( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "Response ===> " + uploadedFile.Info.Url); } #endregion log user request and response return(Request.CreateResponse(HttpStatusCode.OK, new Dictionary <string, string>() { { "UploadFileResult", uploadedFile.Info.Url } })); }
protected override void OnNavigatedFrom(NavigationEventArgs e) { SharedMedia.OnNavigatedFrom(e); }
/// <summary> /// Checks the already uploaded file whether it still exist or not. If exists, its shared date-time and number of recipient information are updated. /// </summary> /// <param name="userID">A string containing the user id.</param> /// <param name="fileID">A string containing the file id.</param> /// <param name="recipientCount">An unsigned integer value containing the recipient count.</param> /// <returns>If true, file exists and information is updated; otherwise false.</returns> public bool ShareFile(string uID, string fID, ushort recipientCount) { uID = (uID != null) ? uID.Trim() : uID; fID = (fID != null) ? fID.Trim() : fID; bool result = false; ulong temp = 0; string resultUrl = null; #region log user request and response /*********************************************** * To log user request ***********************************************/ if (_logRequestResponse) { LogManager.CurrentInstance.InfoLogger.LogInfo( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, System.Reflection.MethodBase.GetCurrentMethod().Name + "===>" + "Request ===> senderID : " + uID + ", recipientCount : " + recipientCount.ToString()); } #endregion // #region Verify User //var request = OperationContext.Current.IncomingMessageProperties[HttpRequestMessageProperty.Name] as HttpRequestMessageProperty; //string keyFromClient = request.Headers["key"]; //if (NeeoUtility.AuthenticateUserRequest(uID, keyFromClient)) //{ // #endregion if (NeeoUtility.IsNullOrEmpty(uID) && !ulong.TryParse(uID, out temp) && (recipientCount == 0 || recipientCount >= 255) && NeeoUtility.IsNullOrEmpty(fID)) { NeeoUtility.SetServiceResponseHeaders(CustomHttpStatusCode.InvalidArguments); } else { NeeoUser user = new NeeoUser(uID); try { result = SharedMedia.Share(user, fID, recipientCount); } catch (ApplicationException appExp) { NeeoUtility.SetServiceResponseHeaders((CustomHttpStatusCode)(Convert.ToInt32(appExp.Message))); } catch (Exception exp) { LogManager.CurrentInstance.ErrorLogger.LogError( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, exp.Message, exp); NeeoUtility.SetServiceResponseHeaders(CustomHttpStatusCode.UnknownError); } } return(result); //} //else //{ // NeeoUtility.SetServiceResponseHeaders((CustomHttpStatusCode)HttpStatusCode.Unauthorized); // return result; //} }
/// <summary> /// /// </summary> /// <param name="uID"></param> /// <param name="data"></param> /// <param name="mimeType"></param> /// <param name="recipientCount"></param> /// <returns></returns> public string UploadFile(string uID, string fID, string data, ushort mimeType, ushort recipientCount) { ulong temp = 0; string resultUrl = null; uID = (uID != null) ? uID.Trim() : uID; fID = (fID != null) ? fID.Trim() : fID; fID = (fID != null) ? fID.Trim() : fID; #region log user request and response /*********************************************** * To log user request ***********************************************/ if (_logRequestResponse) { LogManager.CurrentInstance.InfoLogger.LogInfo( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, System.Reflection.MethodBase.GetCurrentMethod().Name + "===>" + "Request ===> senderID : " + uID + ", mimeType : " + mimeType.ToString() + ", fID : " + fID + ", recipientCount : " + recipientCount.ToString()); } #endregion // #region Verify User //var request = OperationContext.Current.IncomingMessageProperties[HttpRequestMessageProperty.Name] as HttpRequestMessageProperty; //string keyFromClient = request.Headers["key"]; //if (NeeoUtility.AuthenticateUserRequest(uID, keyFromClient)) //{ // #endregion if (NeeoUtility.IsNullOrEmpty(uID) && !ulong.TryParse(uID, out temp) && !Enum.IsDefined(typeof(MimeType), mimeType) && (recipientCount == 0 || recipientCount >= 255) && NeeoUtility.IsNullOrEmpty(data)) { NeeoUtility.SetServiceResponseHeaders(CustomHttpStatusCode.InvalidArguments); } else { if (!NeeoUtility.IsNullOrEmpty(fID)) { Guid resultingGuid; if (!Guid.TryParse(fID, out resultingGuid)) { LogManager.CurrentInstance.InfoLogger.LogInfo(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, System.Reflection.MethodBase.GetCurrentMethod().Name + "===>" + "fID : " + fID + " is not parseable."); NeeoUtility.SetServiceResponseHeaders(CustomHttpStatusCode.InvalidArguments); return(resultUrl); } fID = resultingGuid.ToString("N").ToLower(); } NeeoUser sender = new NeeoUser(uID); try { LibNeeo.IO.File file = new LibNeeo.IO.File() { Info = new NeeoFileInfo() { Creator = uID, MediaType = MediaType.Image, MimeType = (MimeType)mimeType, Name = fID }, Data = data }; if (SharedMedia.Save(sender, file, FileCategory.Shared, recipientCount)) { resultUrl = file.Info.Url; } #region log user request and response /*********************************************** * To log user response ***********************************************/ if (_logRequestResponse) { LogManager.CurrentInstance.InfoLogger.LogInfo( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "Response ===> " + resultUrl); } #endregion } catch (ApplicationException appExp) { NeeoUtility.SetServiceResponseHeaders((CustomHttpStatusCode)(Convert.ToInt32(appExp.Message))); } catch (Exception exp) { LogManager.CurrentInstance.ErrorLogger.LogError( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, exp.Message, exp); NeeoUtility.SetServiceResponseHeaders(CustomHttpStatusCode.UnknownError); } } return(resultUrl); //} //else //{ // NeeoUtility.SetServiceResponseHeaders((CustomHttpStatusCode)HttpStatusCode.Unauthorized); // return resultUrl; //} }
protected override void OnNavigatedTo(NavigationEventArgs e) { SharedMedia.OnNavigatedTo(e); SharedMedia.UpdateSharedCount(ViewModel.Chat); }