public static RemoteFileInfo Get(string url, EventHandler <BeforeSendingRequestEventArgs> before, EventHandler <AfterGettingResponseEventArgs> after) { using (var response = (HttpWebResponse)RequestHelper.CreateHttpRequest(url, before).GetResponse()) { after.Raise(null, new AfterGettingResponseEventArgs(response)); var headers = response.Headers; return(new RemoteFileInfo { AcceptRange = headers.AllKeys.Any(x => x.ToLower().Contains("range") && headers[x].Contains("bytes")), ServerFileName = FileNameHelper.GetFileName(response), URL = url, Length = response.ContentLength }); } }
/// <summary> /// Gets the remote file informations from the server /// </summary> /// <param name="url">Remote file url</param> /// <param name="before">Event to be raised before sending request</param> /// <param name="after">Event to be raised after getting response</param> /// <returns></returns> public static RemoteFileInfo Get(string url, EventHandler <BeforeSendingRequestEventArgs> before, EventHandler <AfterGettingResponseEventArgs> after) { var request = (HttpWebRequest)RequestHelper.CreateHttpRequest(url, before); request.AddRange(0); using (var response = (HttpWebResponse)request.GetResponse()) { after.Raise(null, new AfterGettingResponseEventArgs(response)); var headers = response.Headers; var serverFileName = FileNameHelper.GetFileName(response); var contentSize = response.ContentLength; var contentRange = response.Headers[HttpResponseHeader.ContentRange]; if (contentSize < 1 && !string.IsNullOrEmpty(contentRange)) { var parts = contentRange.Split('/'); if (parts.Length > 1) { long.TryParse(parts[1], out contentSize); } } var transferEncodingHeader = response.Headers[HttpResponseHeader.TransferEncoding]; var isChunked = false; if (transferEncodingHeader != null) { isChunked = transferEncodingHeader.ToLower() == "chunked"; } var acceptRanges = headers.AllKeys.Any(x => x.ToLower().Contains("range") && headers[x].Contains("bytes")) && contentSize > 0; return(new RemoteFileInfo { AcceptRange = acceptRanges, ServerFileName = serverFileName, URL = url, Length = contentSize, IsChunked = isChunked }); } }