diff options
Diffstat (limited to 'src/Network/BitTorrent/Peer/ClientInfo.hs')
-rw-r--r-- | src/Network/BitTorrent/Peer/ClientInfo.hs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/Network/BitTorrent/Peer/ClientInfo.hs b/src/Network/BitTorrent/Peer/ClientInfo.hs index ebbecbd7..bf7fcaab 100644 --- a/src/Network/BitTorrent/Peer/ClientInfo.hs +++ b/src/Network/BitTorrent/Peer/ClientInfo.hs | |||
@@ -12,6 +12,7 @@ | |||
12 | -- > See http://bittorrent.org/beps/bep_0020.html for more information. | 12 | -- > See http://bittorrent.org/beps/bep_0020.html for more information. |
13 | -- | 13 | -- |
14 | {-# LANGUAGE OverloadedStrings #-} | 14 | {-# LANGUAGE OverloadedStrings #-} |
15 | {-# LANGUAGE RecordWildCards #-} | ||
15 | module Network.BitTorrent.Peer.ClientInfo | 16 | module Network.BitTorrent.Peer.ClientInfo |
16 | ( -- * Info | 17 | ( -- * Info |
17 | ClientInfo(..), clientInfo, ppClientInfo, unknownClient | 18 | ClientInfo(..), clientInfo, ppClientInfo, unknownClient |
@@ -30,6 +31,7 @@ import Control.Applicative | |||
30 | import Data.ByteString (ByteString) | 31 | import Data.ByteString (ByteString) |
31 | import qualified Data.ByteString.Char8 as BC | 32 | import qualified Data.ByteString.Char8 as BC |
32 | import Data.Serialize.Get | 33 | import Data.Serialize.Get |
34 | import Text.PrettyPrint | ||
33 | 35 | ||
34 | import Network.BitTorrent.Peer.ID | 36 | import Network.BitTorrent.Peer.ID |
35 | 37 | ||
@@ -163,8 +165,8 @@ parseImpl = f . BC.unpack | |||
163 | f _ = IUnknown | 165 | f _ = IUnknown |
164 | 166 | ||
165 | -- | Format client implementation info in human readable form. | 167 | -- | Format client implementation info in human readable form. |
166 | ppClientImpl :: ClientImpl -> String | 168 | ppClientImpl :: ClientImpl -> Doc |
167 | ppClientImpl = tail . show | 169 | ppClientImpl = text . tail . show |
168 | 170 | ||
169 | unknownImpl :: ClientImpl | 171 | unknownImpl :: ClientImpl |
170 | unknownImpl = IUnknown | 172 | unknownImpl = IUnknown |
@@ -174,8 +176,8 @@ unknownImpl = IUnknown | |||
174 | type ClientVersion = ByteString | 176 | type ClientVersion = ByteString |
175 | 177 | ||
176 | -- | Format client implementation version in human readable form. | 178 | -- | Format client implementation version in human readable form. |
177 | ppClientVersion :: ClientVersion -> String | 179 | ppClientVersion :: ClientVersion -> Doc |
178 | ppClientVersion = BC.unpack | 180 | ppClientVersion = text . BC.unpack |
179 | 181 | ||
180 | unknownVersion :: ClientVersion | 182 | unknownVersion :: ClientVersion |
181 | unknownVersion = "0000" | 183 | unknownVersion = "0000" |
@@ -189,9 +191,10 @@ data ClientInfo = ClientInfo { | |||
189 | } deriving (Show, Eq, Ord) | 191 | } deriving (Show, Eq, Ord) |
190 | 192 | ||
191 | -- | Format client implementation in human readable form. | 193 | -- | Format client implementation in human readable form. |
192 | ppClientInfo :: ClientInfo -> String | 194 | ppClientInfo :: ClientInfo -> Doc |
193 | ppClientInfo ci = ppClientImpl (ciImpl ci) ++ " version " | 195 | ppClientInfo ClientInfo {..} = |
194 | ++ ppClientVersion (ciVersion ci) | 196 | ppClientImpl ciImpl <+> "version" <+> ppClientVersion ciVersion |
197 | |||
195 | 198 | ||
196 | -- | Unrecognized client implementation. | 199 | -- | Unrecognized client implementation. |
197 | unknownClient :: ClientInfo | 200 | unknownClient :: ClientInfo |