From d2570fdf01c6b7f1453c393aa11c680d7706540a Mon Sep 17 00:00:00 2001 From: Ramakrishnan Muthukrishnan Date: Thu, 12 Feb 2015 12:04:55 +0530 Subject: [PATCH] WIP: impement benc encoding, needed for infohash computation --- src/Bencode.hs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/Bencode.hs b/src/Bencode.hs index 4bbfa62..62627a6 100644 --- a/src/Bencode.hs +++ b/src/Bencode.hs @@ -108,3 +108,20 @@ bencVal = Bstr <$> bencStr <|> decode :: BC.ByteString -> Either ParseError BVal decode = parse bencVal "BVal" + +-- given an input dict or int or string, encode +-- it into a bencoded bytestring. +-- | encode bencoded-values +-- +-- >>> encode (Bstr (BC.pack "")) +-- "0:" +-- >>> encode (Bstr (BC.pack "spam")) +-- "4:spam" +-- >>> encode (Bint 0) +-- "i0e" +-- >>> encode (Bint 42) +-- "i42e" +encode :: BVal -> String +encode (Bstr bs) = let s = BC.unpack bs + in show (length s) ++ ":" ++ s +encode (Bint i) = "i" ++ show i ++ "e" -- 2.45.2