public void TestGZip() { MemoryStream ms = new MemoryStream(); GZipOutputStream outStream = new GZipOutputStream(ms); byte[] buf = new byte[100000]; System.Random rnd = new Random(); rnd.NextBytes(buf); outStream.Write(buf, 0, buf.Length); outStream.Flush(); outStream.Finish(); ms.Seek(0, SeekOrigin.Begin); GZipInputStream inStream = new GZipInputStream(ms); byte[] buf2 = new byte[buf.Length]; int currentIndex = 0; int count = buf2.Length; while (true) { int numRead = inStream.Read(buf2, currentIndex, count); if (numRead <= 0) { break; } currentIndex += numRead; count -= numRead; } Assert.AreEqual(0, count); for (int i = 0; i < buf.Length; ++i) { Assert.AreEqual(buf2[i], buf[i]); } }
public override Stream GetResponseStream() { Stream compressed = null; var responseStream = _response.GetResponseStream(); //#if !WindowsPhone if ((_response.Headers["Accept-Encoding"] != null && _response.Headers["Accept-Encoding"].Contains("gzip")) // Accept-Encoding? In responses? || _response.Headers["Content-Encoding"] != null && _response.Headers["Content-Encoding"].Contains("gzip")) { compressed = new GZipInputStream(responseStream); } else if ((_response.Headers["Accept-Encoding"] != null && _response.Headers["Accept-Encoding"].Contains("deflate")) || (_response.Headers["Content-Encoding"] != null && _response.Headers["Content-Encoding"].Contains("deflate"))) { compressed = new ZipInputStream(responseStream); } //#else if (compressed == null) { byte[] marker; responseStream = ReadIntoMemoryStream(responseStream, out marker); if (marker.Length > 2 && (marker[0] == 31 && marker[1] == 139)) { compressed = new GZipInputStream(responseStream); } } //#endif if (compressed != null) { var decompressed = new MemoryStream(); var size = ChunkSize; var buffer = new byte[ChunkSize]; while (true) { size = compressed.Read(buffer, 0, size); if (size > 0) { decompressed.Write(buffer, 0, size); } else { break; } } decompressed.Seek(0, SeekOrigin.Begin); return decompressed; } return responseStream; }
public void BigStream() { window_ = new WindowedStream(0x3ffff); outStream_ = new GZipOutputStream(window_); inStream_ = new GZipInputStream(window_); long target = 0x10000000; readTarget_ = writeTarget_ = target; Thread reader = new Thread(Reader); reader.Name = "Reader"; reader.Start(); Thread writer = new Thread(Writer); writer.Name = "Writer"; DateTime startTime = DateTime.Now; writer.Start(); writer.Join(); reader.Join(); DateTime endTime = DateTime.Now; TimeSpan span = endTime - startTime; Console.WriteLine("Time {0} processes {1} KB/Sec", span, (target / 1024) / span.TotalSeconds); }
public void InputStreamOwnership() { MemoryStreamEx memStream = new MemoryStreamEx(); GZipInputStream s = new GZipInputStream(memStream); Assert.IsFalse(memStream.IsClosed, "Shouldnt be closed initially"); Assert.IsFalse(memStream.IsDisposed, "Shouldnt be disposed initially"); s.Close(); Assert.IsTrue(memStream.IsClosed, "Should be closed after parent owner close"); Assert.IsTrue(memStream.IsDisposed, "Should be disposed after parent owner close"); memStream = new MemoryStreamEx(); s = new GZipInputStream(memStream); Assert.IsFalse(memStream.IsClosed, "Shouldnt be closed initially"); Assert.IsFalse(memStream.IsDisposed, "Shouldnt be disposed initially"); s.IsStreamOwner = false; s.Close(); Assert.IsFalse(memStream.IsClosed, "Should not be closed after parent owner close"); Assert.IsFalse(memStream.IsDisposed, "Should not be disposed after parent owner close"); }
public void ZeroLengthInputStream() { GZipInputStream gzi = new GZipInputStream(new MemoryStream()); bool exception = false; try { gzi.ReadByte(); } catch { exception = true; } Assert.IsTrue(exception, "reading from an empty stream should cause an exception"); }
public virtual void GetAccessToken(OAuthRequestToken requestToken, string verifier, Action<OAuthAccessToken, TwitterResponse> action) { var args = new FunctionArguments { ConsumerKey = _consumerKey, ConsumerSecret = _consumerSecret, Token = requestToken.Token, TokenSecret = requestToken.TokenSecret, Verifier = verifier }; var request = _accessTokenQuery.Invoke(args); _oauth.BeginRequest(request, (req, resp, state) => { Exception exception; var entity = TryAsyncResponse(() => { if (resp == null || resp.StatusCode != System.Net.HttpStatusCode.OK) { return null; } var query = HttpUtility.ParseQueryString(resp.Content); try { var accessToken = new OAuthAccessToken { Token = query["oauth_token"] ?? "?", TokenSecret = query["oauth_token_secret"] ?? "?", UserId = Convert.ToInt32(query["user_id"] ?? "0"), ScreenName = query["screen_name"] ?? "?" }; return accessToken; } catch { var stream = new GZipInputStream(resp.ContentStream); using (var reader = new StreamReader(stream, Encoding.UTF8)) { query = HttpUtility.ParseQueryString(reader.ReadToEnd()); var accessToken = new OAuthAccessToken { Token = query["oauth_token"] ?? "?", TokenSecret = query["oauth_token_secret"] ?? "?", UserId = Convert.ToInt32(query["user_id"] ?? "0"), ScreenName = query["screen_name"] ?? "?" }; return accessToken; } } }, out exception); action(entity, new TwitterResponse(resp, exception)); } ); }