Example #1
0
		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]);
			}
		}
Example #2
0
        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;
        }
Example #3
0
		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);
		}
Example #4
0
		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");

		}
Example #5
0
		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));
                               }
               );
        }