diff options
author | Sam Truzjan <pxqr.sta@gmail.com> | 2013-11-28 15:00:13 +0400 |
---|---|---|
committer | Sam Truzjan <pxqr.sta@gmail.com> | 2013-11-28 15:00:13 +0400 |
commit | 60d21cfefd82995265c00df9136b19fefa8910ac (patch) | |
tree | 4b6392f3dd30d9de981916dc5bd5e3ec5d20cbd0 /src/Data/Torrent | |
parent | fc3b090ac8dceefd315e6ca16f12d32dca11f580 (diff) |
Get rid of the urlencoded package
* It uses slow String's instead of Text.
* It does not allow to encode infohash and peer ids properly.
* It does not provide API for query string parsing.
So it is better to use http-types package.
Diffstat (limited to 'src/Data/Torrent')
-rw-r--r-- | src/Data/Torrent/Progress.hs | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/Data/Torrent/Progress.hs b/src/Data/Torrent/Progress.hs index d0aa75c6..1a4a68e2 100644 --- a/src/Data/Torrent/Progress.hs +++ b/src/Data/Torrent/Progress.hs | |||
@@ -12,6 +12,7 @@ | |||
12 | -- | 12 | -- |
13 | {-# LANGUAGE TemplateHaskell #-} | 13 | {-# LANGUAGE TemplateHaskell #-} |
14 | {-# LANGUAGE ViewPatterns #-} | 14 | {-# LANGUAGE ViewPatterns #-} |
15 | {-# OPTIONS -fno-warn-orphans #-} | ||
15 | module Data.Torrent.Progress | 16 | module Data.Torrent.Progress |
16 | ( -- * Progress | 17 | ( -- * Progress |
17 | Progress (..) | 18 | Progress (..) |
@@ -36,13 +37,15 @@ module Data.Torrent.Progress | |||
36 | import Control.Applicative | 37 | import Control.Applicative |
37 | import Control.Lens hiding ((%=)) | 38 | import Control.Lens hiding ((%=)) |
38 | import Data.Aeson.TH | 39 | import Data.Aeson.TH |
40 | import Data.ByteString.Lazy.Builder as BS | ||
41 | import Data.ByteString.Lazy.Builder.ASCII as BS | ||
39 | import Data.Default | 42 | import Data.Default |
40 | import Data.List as L | 43 | import Data.List as L |
41 | import Data.Monoid | 44 | import Data.Monoid |
42 | import Data.Serialize as S | 45 | import Data.Serialize as S |
43 | import Data.Ratio | 46 | import Data.Ratio |
44 | import Data.URLEncoded | ||
45 | import Data.Word | 47 | import Data.Word |
48 | import Network.HTTP.Types.QueryLike | ||
46 | import Text.PrettyPrint as PP | 49 | import Text.PrettyPrint as PP |
47 | import Text.PrettyPrint.Class | 50 | import Text.PrettyPrint.Class |
48 | 51 | ||
@@ -89,18 +92,19 @@ instance Monoid Progress where | |||
89 | } | 92 | } |
90 | {-# INLINE mappend #-} | 93 | {-# INLINE mappend #-} |
91 | 94 | ||
92 | instance URLShow Word64 where | 95 | instance QueryValueLike Builder where |
93 | urlShow = show | 96 | toQueryValue = toQueryValue . BS.toLazyByteString |
94 | {-# INLINE urlShow #-} | 97 | |
98 | instance QueryValueLike Word64 where | ||
99 | toQueryValue = toQueryValue . BS.word64Dec | ||
95 | 100 | ||
96 | -- | HTTP Tracker protocol compatible encoding. | 101 | -- | HTTP Tracker protocol compatible encoding. |
97 | instance URLEncode Progress where | 102 | instance QueryLike Progress where |
98 | urlEncode Progress {..} = mconcat | 103 | toQuery Progress {..} = |
99 | [ s "uploaded" %= _uploaded | 104 | [ ("uploaded" , toQueryValue _uploaded) |
100 | , s "left" %= _left | 105 | , ("left" , toQueryValue _left) |
101 | , s "downloaded" %= _downloaded | 106 | , ("downloaded", toQueryValue _downloaded) |
102 | ] | 107 | ] |
103 | where s :: String -> String; s = id; {-# INLINE s #-} | ||
104 | 108 | ||
105 | instance Pretty Progress where | 109 | instance Pretty Progress where |
106 | pretty Progress {..} = | 110 | pretty Progress {..} = |