From b83c5d53be21c03004ebb65d1dc9fe1f841a2a3c Mon Sep 17 00:00:00 2001 From: Daniel Gröber Date: Sun, 1 Dec 2013 21:12:40 +0100 Subject: Fix building with aeson >= 0.6.2.0 deriveJSON now takes an Option record instead of a single function. It might be nicer to define a function that takes the fieldLabelModifier function rather than doing it inline everywhere but I didn't know where a good place to put that would be. --- src/Network/BitTorrent/Core/PeerAddr.hs | 2 +- src/Network/BitTorrent/Exchange/Status.hs | 2 +- src/Network/BitTorrent/Tracker/RPC/Message.hs | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/Network') diff --git a/src/Network/BitTorrent/Core/PeerAddr.hs b/src/Network/BitTorrent/Core/PeerAddr.hs index e58aaa89..ed2dc672 100644 --- a/src/Network/BitTorrent/Core/PeerAddr.hs +++ b/src/Network/BitTorrent/Core/PeerAddr.hs @@ -62,7 +62,7 @@ data PeerAddr = PeerAddr { , peerPort :: {-# UNPACK #-} !PortNumber } deriving (Show, Eq, Ord, Typeable) -$(deriveJSON (L.map toLower . L.dropWhile isLower) ''PeerAddr) +$(deriveJSON defaultOptions { fieldLabelModifier = (L.map toLower . L.dropWhile isLower) } ''PeerAddr) -- | The tracker "announce query" compatible encoding. instance BEncode PeerAddr where diff --git a/src/Network/BitTorrent/Exchange/Status.hs b/src/Network/BitTorrent/Exchange/Status.hs index 7920f2a1..03a71bbe 100644 --- a/src/Network/BitTorrent/Exchange/Status.hs +++ b/src/Network/BitTorrent/Exchange/Status.hs @@ -35,7 +35,7 @@ data PeerStatus = PeerStatus { } deriving (Show, Eq) $(makeLenses ''PeerStatus) -$(deriveJSON L.tail ''PeerStatus) +$(deriveJSON defaultOptions { fieldLabelModifier = L.tail } ''PeerStatus) instance Default PeerStatus where def = PeerStatus True False diff --git a/src/Network/BitTorrent/Tracker/RPC/Message.hs b/src/Network/BitTorrent/Tracker/RPC/Message.hs index cec68169..213f1e83 100644 --- a/src/Network/BitTorrent/Tracker/RPC/Message.hs +++ b/src/Network/BitTorrent/Tracker/RPC/Message.hs @@ -93,7 +93,7 @@ data Event = Started -- ^ To be sent when the peer completes a download. deriving (Show, Read, Eq, Ord, Enum, Bounded, Typeable) -$(deriveJSON (L.map toLower . L.dropWhile isLower) ''Event) +$(deriveJSON defaultOptions { fieldLabelModifier = (L.map toLower . L.dropWhile isLower) } ''Event) -- | HTTP tracker protocol compatible encoding. instance QueryValueLike Event where @@ -163,7 +163,7 @@ data AnnounceQuery = AnnounceQuery , reqEvent :: Maybe Event } deriving (Show, Eq, Typeable) -$(deriveJSON (L.map toLower . L.dropWhile isLower) ''AnnounceQuery) +$(deriveJSON defaultOptions { fieldLabelModifier = (L.map toLower . L.dropWhile isLower) } ''AnnounceQuery) -- | UDP tracker protocol compatible encoding. instance Serialize AnnounceQuery where @@ -386,7 +386,7 @@ data AnnounceInfo = , respWarning :: !(Maybe Text) } deriving (Show, Typeable) -$(deriveJSON (L.map toLower . L.dropWhile isLower) ''AnnounceInfo) +$(deriveJSON defaultOptions { fieldLabelModifier = (L.map toLower . L.dropWhile isLower) } ''AnnounceInfo) -- | HTTP tracker protocol compatible encoding. instance BEncode AnnounceInfo where @@ -524,7 +524,7 @@ data ScrapeEntry = ScrapeEntry { , siName :: !(Maybe Text) } deriving (Show, Eq, Typeable) -$(deriveJSON (L.map toLower . L.dropWhile isLower) ''ScrapeEntry) +$(deriveJSON defaultOptions { fieldLabelModifier = (L.map toLower . L.dropWhile isLower) } ''ScrapeEntry) -- | HTTP tracker protocol compatible encoding. instance BEncode ScrapeEntry where -- cgit v1.2.3 From 5dc7a19e42da1ee1cc3570ca74a55c32d7d243e0 Mon Sep 17 00:00:00 2001 From: Daniel Gröber Date: Sun, 1 Dec 2013 21:19:35 +0100 Subject: Fix building with hashable >= 1.2 hashWithSalt is now the minimal implementation --- bittorrent.cabal | 2 +- src/Data/Torrent.hs | 4 ++-- src/Data/Torrent/InfoHash.hs | 4 ++-- src/Network/BitTorrent/Core/PeerId.hs | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/Network') diff --git a/bittorrent.cabal b/bittorrent.cabal index 7f5a42ae..762bff01 100644 --- a/bittorrent.cabal +++ b/bittorrent.cabal @@ -113,7 +113,7 @@ library -- Hashing , cryptohash == 0.10.* - , hashable + , hashable >= 1.2 -- Codecs & Serialization , aeson >= 0.6.2.0 diff --git a/src/Data/Torrent.hs b/src/Data/Torrent.hs index 7469d621..ce919907 100644 --- a/src/Data/Torrent.hs +++ b/src/Data/Torrent.hs @@ -137,8 +137,8 @@ instance NFData InfoDict where rnf InfoDict {..} = rnf idLayoutInfo instance Hashable InfoDict where - hash = Hashable.hash . idInfoHash - {-# INLINE hash #-} + hashWithSalt = Hashable.hashUsing idInfoHash + {-# INLINE hashWithSalt #-} -- | Smart constructor: add a info hash to info dictionary. infoDictionary :: LayoutInfo -> PieceInfo -> Bool -> InfoDict diff --git a/src/Data/Torrent/InfoHash.hs b/src/Data/Torrent/InfoHash.hs index d840ac87..4d49fcb7 100644 --- a/src/Data/Torrent/InfoHash.hs +++ b/src/Data/Torrent/InfoHash.hs @@ -70,8 +70,8 @@ instance Default InfoHash where -- | Hash raw bytes. (no encoding) instance Hashable InfoHash where - hash (InfoHash ih) = Hashable.hash ih - {-# INLINE hash #-} + hashWithSalt s (InfoHash ih) = hashWithSalt s ih + {-# INLINE hashWithSalt #-} -- | Convert to\/from raw bencoded string. (no encoding) instance BEncode InfoHash where diff --git a/src/Network/BitTorrent/Core/PeerId.hs b/src/Network/BitTorrent/Core/PeerId.hs index 148f550d..1b4409a8 100644 --- a/src/Network/BitTorrent/Core/PeerId.hs +++ b/src/Network/BitTorrent/Core/PeerId.hs @@ -74,8 +74,8 @@ peerIdLen :: Int peerIdLen = 20 instance Hashable PeerId where - hash = hash . getPeerId - {-# INLINE hash #-} + hashWithSalt = hashUsing getPeerId + {-# INLINE hashWithSalt #-} instance Serialize PeerId where put = putByteString . getPeerId -- cgit v1.2.3