public IAsyncResult BeginRetrieve(CacheRequest request, AsyncCallback callback, object state) { if (!request.CanonicalUri.AbsoluteUri.Contains("FragmentInfo") && !request.CanonicalUri.AbsoluteUri.Contains("Manifest")) { return null; } CacheResponse response = null; CacheAsyncResult result = new CacheAsyncResult { strUrl = request.CanonicalUri.ToString() }; result.Complete(response, true); return result; }
public IAsyncResult BeginRetrieve(CacheRequest request, AsyncCallback callback, object state) { if (this.IsStopped) { CacheAsyncResult result = new CacheAsyncResult(); result.Complete(new CacheResponse(0L, null, null, null, HttpStatusCode.NotFound, "Not Found", DateTime.Now, false), true); return result; } if (!request.CanonicalUri.AbsoluteUri.Contains("FragmentInfo") && !request.CanonicalUri.AbsoluteUri.Contains("Manifest")) { return null; } CacheResponse response = null; CacheAsyncResult result2 = new CacheAsyncResult { strUrl = request.CanonicalUri.ToString() }; result2.Complete(response, true); return result2; }
public IAsyncResult BeginRetrieve(CacheRequest request, AsyncCallback callback, object state) { if (this.IsStopped) { CacheAsyncResult result = new CacheAsyncResult(); result.Complete(new CacheResponse(0L, null, null, null, HttpStatusCode.NotFound, "Not Found", DateTime.Now, false), true); return result; } if (!request.CanonicalUri.ToString().Contains("FragmentInfo") && !request.CanonicalUri.ToString().Contains("Manifest")) { return null; } CacheAsyncResult ar = new CacheAsyncResult { strUrl = request.CanonicalUri.ToString() }; HttpWebRequest webRequest = WebRequestCreator.BrowserHttp.Create(request.CanonicalUri) as HttpWebRequest; webRequest.BeginGetResponse(delegate (IAsyncResult result) { try { HttpWebResponse response = webRequest.EndGetResponse(result) as HttpWebResponse; if (response.StatusCode != HttpStatusCode.OK) { ar.Complete(null, true); } else { using (CryptoStream stream = new CryptoStream(response.GetResponseStream(), this._decryptionInfo.Decryptor, CryptoStreamMode.Read)) { MemoryStream stream2 = new MemoryStream(); long contentLength = 0L; int count = 0x1000; byte[] buffer = new byte[count]; while (stream.CanRead) { int num2 = stream.Read(buffer, 0, count); contentLength += num2; if (num2 == 0) { break; } stream2.Write(buffer, 0, num2); } stream2.Position = 0L; if (request.CanonicalUri.ToString().Contains("Manifest")) { StreamReader reader = new StreamReader(stream2); string s = reader.ReadToEnd().Replace("{start time})", "{start time})?" + this._decryptionInfo.SessionID).Replace("300000000", "550000000"); stream2 = new MemoryStream(Encoding.Unicode.GetBytes(s)) { Position = 0L }; } CacheResponse response2 = new CacheResponse(contentLength, response.ContentType, null, stream2, response.StatusCode, response.StatusDescription, DateTime.Now, true); stream2.Position = 0L; ar.Complete(response2, true); } } } catch (Exception) { ar.Complete(null, true); } }, null); return ar; }