Пример #1
0
        private static BenDecoder DecoderForString(string value)
        {
            MemoryStream stream  = new MemoryStream(Encoding.UTF8.GetBytes(value.ToCharArray()));
            BenDecoder   decoder = new BenDecoder(stream);

            return(decoder);
        }
Пример #2
0
        public void ReadDictionaryOfDictionaries()
        {
            BenDecoder  decoder    = DecoderForString("d4:dictd4:spam4:eggsee");
            IDictionary dictionary = decoder.ReadDictionary();

            Assert.AreEqual(1, dictionary.Count);
            Assert.IsInstanceOfType(typeof(IDictionary), dictionary["dict"]);
        }
Пример #3
0
 public static IDictionary Decode(string fileName)
 {
     FileStream stream = new FileStream(fileName, FileMode.Open);
     BenDecoder decoder = new BenDecoder(stream);
     IDictionary result = decoder.ReadDictionary();
     stream.Close();
     return result;
 }
Пример #4
0
        public void ListOfStrings()
        {
            BenDecoder decoder = DecoderForString("l4:spam4:eggse");
            IList      list    = decoder.ReadList();

            Assert.AreEqual(2, list.Count);
            Assert.AreEqual("spam", list[0].ToString());
            Assert.AreEqual("eggs", list[1].ToString());
        }
Пример #5
0
        public void ListOfIntsAndStrings()
        {
            BenDecoder decoder = DecoderForString("li4e4:spame");
            IList      list    = decoder.ReadList();

            Assert.AreEqual(2, list.Count);
            Assert.AreEqual(4, list[0]);
            Assert.AreEqual("spam", list[1].ToString());
        }
Пример #6
0
        public void ListOfLists()
        {
            BenDecoder decoder = DecoderForString("li18el4:spam4:eggsee");
            IList      list    = decoder.ReadList();

            Assert.AreEqual(2, list.Count);
            Assert.AreEqual(18, list[0]);
            Assert.IsInstanceOfType(typeof(IList), list[1]);
        }
Пример #7
0
        public void ReadDictionary()
        {
            BenDecoder  decoder    = DecoderForString("d3:cow3:moo4:spam4:eggse");
            IDictionary dictionary = decoder.ReadDictionary();

            Assert.AreEqual(2, dictionary.Count);
            Assert.AreEqual("moo", dictionary["cow"].ToString());
            Assert.AreEqual("eggs", dictionary["spam"].ToString());
        }
Пример #8
0
        public static IDictionary Decode(string fileName)
        {
            FileStream  stream  = new FileStream(fileName, FileMode.Open);
            BenDecoder  decoder = new BenDecoder(stream);
            IDictionary result  = decoder.ReadDictionary();

            stream.Close();
            return(result);
        }
Пример #9
0
 static void Main(string[] args)
 {
     string filename = args[0];
     BenDecoder decoder = new BenDecoder(File.OpenRead(filename));
     Torrent torrent = new Torrent(decoder.ReadDictionary());
     Console.WriteLine("Tracker: {0}", torrent.AnnounceUri);
     Console.WriteLine("Number of pieces: {0}", torrent.Pieces.Count);
     Console.WriteLine("Piece length: {0}", torrent.PieceLength);
     Console.WriteLine("Hash: {0}", torrent.InfoHash.ToHexString());
     Console.WriteLine("Files:");
     foreach (ITorrentFile file in torrent.Files)
     {
         Console.WriteLine("  Name: {0}, Size: {1}", file.Name, file.Length);
     }
 }
Пример #10
0
 public TrackerResponse(ByteString responseText)
 {
     HttpResponse response = new HttpResponse(responseText);
     BenDecoder decoder = new BenDecoder(new MemoryStream(response.Content.ToBytes()));
     responseContent = decoder.ReadDictionary();
     
     if(IsSuccessful)
     {
         ByteString peers = responseContent["peers"] as ByteString;
         BinaryReader reader = new BinaryReader(new MemoryStream(peers.ToBytes()));
         for(int i = 0; i<peers.ToBytes().Length; i+=6)
         {
             peerList.Add(new PeerInfo(reader.ReadBytes(4), reader.ReadInt16()));
         }
     }
 }
Пример #11
0
        public TrackerResponse(ByteString responseText)
        {
            HttpResponse response = new HttpResponse(responseText);
            BenDecoder   decoder  = new BenDecoder(new MemoryStream(response.Content.ToBytes()));

            responseContent = decoder.ReadDictionary();

            if (IsSuccessful)
            {
                ByteString   peers  = responseContent["peers"] as ByteString;
                BinaryReader reader = new BinaryReader(new MemoryStream(peers.ToBytes()));
                for (int i = 0; i < peers.ToBytes().Length; i += 6)
                {
                    peerList.Add(new PeerInfo(reader.ReadBytes(4), reader.ReadInt16()));
                }
            }
        }
Пример #12
0
        public void NegativeInteger()
        {
            BenDecoder decoder = DecoderForString("i-4e");

            Assert.AreEqual(-4L, decoder.ReadInt());
        }
Пример #13
0
 private static BenDecoder DecoderForString(string value)
 {            
     MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(value.ToCharArray()));  
     BenDecoder decoder = new BenDecoder(stream);
     return decoder;
 }
Пример #14
0
        public void NonsenceInputThrowsException()
        {
            BenDecoder decoder = DecoderForString("Nonsence!");

            decoder.ReadDictionary();
        }
Пример #15
0
        public void DecodeString()
        {
            BenDecoder decoder = DecoderForString("4:spam");

            Assert.AreEqual("spam", decoder.ReadString().ToString());
        }
Пример #16
0
        public void DecoderZeroLengthString()
        {
            BenDecoder decoder = DecoderForString("0:");

            Assert.AreEqual("", decoder.ReadString().ToString());
        }
Пример #17
0
        public void DecodePositiveInteger()
        {
            BenDecoder decoder = DecoderForString("i3e");

            Assert.AreEqual(3L, decoder.ReadInt());
        }