Skip to content

Commit

Permalink
Merge b63af6e into 4334cec
Browse files Browse the repository at this point in the history
  • Loading branch information
iphydf committed Mar 9, 2018
2 parents 4334cec + b63af6e commit 688f34c
Show file tree
Hide file tree
Showing 16 changed files with 113 additions and 123 deletions.
38 changes: 38 additions & 0 deletions BUILD.bazel
@@ -1,3 +1,41 @@
load("@io_tweag_rules_haskell//haskell:haskell.bzl", "haskell_library")
load("//tools:project.bzl", "project")

project("hs-toxcore")

haskell_library(
name = "hs-toxcore",
srcs = glob(["src/tox/**/*.*hs"]),
compiler_flags = [
"-j4",
"-Wall",
"-Werror",
"-Wno-unused-imports",
],
prebuilt_dependencies = [
"base",
"binary",
"bytestring",
"containers",
"integer-gmp",
"transformers",
],
src_strip_prefix = "src/tox",
visibility = ["//visibility:public"],
deps = [
"//hs-msgpack",
"//hs-msgpack-rpc",
"@haskell_MonadRandom//:MonadRandom",
"@haskell_QuickCheck//:QuickCheck",
"@haskell_base16_bytestring//:base16-bytestring",
"@haskell_binary_bits//:binary-bits",
"@haskell_clock//:clock",
"@haskell_entropy//:entropy",
"@haskell_iproute//:iproute",
"@haskell_lens_family//:lens-family",
"@haskell_mtl//:mtl",
"@haskell_network//:network",
"@haskell_random//:random",
"@haskell_saltine//:saltine",
],
)
2 changes: 1 addition & 1 deletion appveyor.yml
Expand Up @@ -3,7 +3,7 @@ cache:
- '%APPDATA%\ghc'

install:
- choco install ghc
- choco install ghc --version 8.2.2
- curl https://download.libsodium.org/libsodium/releases/libsodium-1.0.16-mingw.tar.gz | tar zx
- refreshenv
- set PATH=%PATH%;C:\ProgramData\chocolatey\lib\ghc\tools\ghc-8.0.2\bin
Expand Down
4 changes: 1 addition & 3 deletions src/tox/Network/Tox/Binary.hs
Expand Up @@ -8,9 +8,7 @@ module Network.Tox.Binary
, decode, decodeC, decodeS
) where

import Control.Applicative ((<$>))
import Control.Monad ((>=>))
import Data.Binary (Binary, get, put)
import Data.Binary (Binary)
import Data.ByteString (ByteString)
import Data.MessagePack (MessagePack,
fromObject, toObject)
Expand Down
9 changes: 4 additions & 5 deletions src/tox/Network/Tox/Crypto/Keyed.hs
Expand Up @@ -9,17 +9,16 @@ module Network.Tox.Crypto.Keyed where
import Control.Applicative (Applicative, pure, (<*>))
import Control.Monad (Monad)
import Control.Monad.Random (RandT)
import Control.Monad.Reader (ReaderT, mapReaderT)
import Control.Monad.RWS (RWST, mapRWST)
import Control.Monad.State (StateT, mapStateT)
import Control.Monad.Reader (ReaderT)
import Control.Monad.RWS (RWST)
import Control.Monad.State (StateT)
import Control.Monad.Trans (lift)
import Control.Monad.Writer (WriterT, mapWriterT)
import Control.Monad.Writer (WriterT)
import Data.Monoid (Monoid)

import qualified Network.Tox.Crypto.CombinedKey as CombinedKey
import Network.Tox.Crypto.Key (CombinedKey, PublicKey,
SecretKey)
import Network.Tox.Time (Timestamp)

class (Monad m, Applicative m) => Keyed m where
getCombinedKey :: SecretKey -> PublicKey -> m CombinedKey
Expand Down
2 changes: 0 additions & 2 deletions src/tox/Network/Tox/Crypto/KeyedT.hs
Expand Up @@ -10,8 +10,6 @@ module Network.Tox.Crypto.KeyedT where
import Control.Applicative (Applicative, (<$>))
import Control.Monad (Monad)
import Control.Monad.IO.Class (MonadIO)
import Control.Monad.Reader (ReaderT, ask, local,
runReaderT)
import Control.Monad.State (MonadState, StateT,
StateT (..), evalStateT,
gets, modify, runStateT,
Expand Down
6 changes: 2 additions & 4 deletions src/tox/Network/Tox/DHT/ClientList.lhs
Expand Up @@ -5,8 +5,7 @@
{-# LANGUAGE Safe #-}
module Network.Tox.DHT.ClientList where
import Control.Applicative (Const (..), getConst, (<$>),
(<*>))
import Control.Applicative ((<$>), (<*>))
import Control.Monad (join)
import Data.List (sort)
import Data.Map (Map)
Expand All @@ -23,8 +22,7 @@ import Network.Tox.DHT.Distance (Distance)
import qualified Network.Tox.DHT.Distance as Distance
import Network.Tox.NodeInfo.NodeInfo (NodeInfo)
import qualified Network.Tox.NodeInfo.NodeInfo as NodeInfo
import Network.Tox.Time (TimeDiff, Timestamp)
import qualified Network.Tox.Time as Time
import Network.Tox.Time (Timestamp)
{-------------------------------------------------------------------------------
Expand Down
34 changes: 16 additions & 18 deletions src/tox/Network/Tox/DHT/DhtPacket.lhs
Expand Up @@ -27,24 +27,22 @@ protocol never actually sends empty messages, so in reality the minimum size is
{-# LANGUAGE Safe #-}
module Network.Tox.DHT.DhtPacket where
import Control.Applicative ((<$>), (<*>))
import Data.Binary (Binary, get, put)
import Data.Binary.Get (getRemainingLazyByteString)
import Data.Binary.Put (putByteString, putByteString,
runPut)
import qualified Data.ByteString.Lazy as LazyByteString
import Data.MessagePack (MessagePack)
import Data.Typeable (Typeable)
import GHC.Generics (Generic)
import Network.Tox.Crypto.Box (CipherText, PlainText (..),
unCipherText)
import qualified Network.Tox.Crypto.Box as Box
import qualified Network.Tox.Crypto.CombinedKey as CombinedKey
import Network.Tox.Crypto.Key (Nonce, PublicKey)
import Network.Tox.Crypto.Keyed (Keyed)
import qualified Network.Tox.Crypto.Keyed as Keyed
import Network.Tox.Crypto.KeyPair (KeyPair (..))
import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)
import Control.Applicative ((<$>), (<*>))
import Data.Binary (Binary, get, put)
import Data.Binary.Get (getRemainingLazyByteString)
import Data.Binary.Put (putByteString, runPut)
import qualified Data.ByteString.Lazy as LazyByteString
import Data.MessagePack (MessagePack)
import Data.Typeable (Typeable)
import GHC.Generics (Generic)
import Network.Tox.Crypto.Box (CipherText, PlainText (..),
unCipherText)
import qualified Network.Tox.Crypto.Box as Box
import Network.Tox.Crypto.Key (Nonce, PublicKey)
import Network.Tox.Crypto.Keyed (Keyed)
import qualified Network.Tox.Crypto.Keyed as Keyed
import Network.Tox.Crypto.KeyPair (KeyPair (..))
import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)
Expand Down
23 changes: 10 additions & 13 deletions src/tox/Network/Tox/DHT/DhtRequestPacket.lhs
Expand Up @@ -20,19 +20,16 @@ DHT Packet which is to be received by the addressee.
{-# LANGUAGE Safe #-}
module Network.Tox.DHT.DhtRequestPacket where
import Control.Applicative ((<$>), (<*>))
import Data.Binary (Binary, get, put)
import Data.MessagePack (MessagePack)
import Data.Typeable (Typeable)
import GHC.Generics (Generic)
import Network.Tox.Crypto.Box (PlainText (..))
import Network.Tox.Crypto.Key (Nonce, PublicKey)
import Network.Tox.Crypto.KeyPair (KeyPair (..))
import Network.Tox.DHT.DhtPacket (DhtPacket)
import qualified Network.Tox.DHT.DhtPacket as DhtPacket
import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)
import Control.Applicative ((<$>), (<*>))
import Data.Binary (Binary, get, put)
import Data.MessagePack (MessagePack)
import Data.Typeable (Typeable)
import GHC.Generics (Generic)
import Network.Tox.Crypto.Key (PublicKey)
import Network.Tox.DHT.DhtPacket (DhtPacket)
import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)
Expand Down
7 changes: 1 addition & 6 deletions src/tox/Network/Tox/DHT/DhtState.lhs
Expand Up @@ -9,9 +9,7 @@
module Network.Tox.DHT.DhtState where
import Control.Applicative (Applicative, Const (..),
getConst, pure, (<$>), (<*>),
(<|>))
import Control.Monad.State (MonadState, StateT)
getConst, (<$>), (<*>), (<|>))
import Data.Functor.Identity (Identity (..))
import Data.List (nub, sortBy)
import Data.Map (Map)
Expand All @@ -34,13 +32,10 @@ import qualified Network.Tox.DHT.KBuckets as KBuckets
import Network.Tox.DHT.NodeList (NodeList)
import qualified Network.Tox.DHT.NodeList as NodeList
import Network.Tox.DHT.PendingReplies (PendingReplies)
import qualified Network.Tox.DHT.RpcPacket as RpcPacket
import Network.Tox.DHT.Stamped (Stamped)
import qualified Network.Tox.DHT.Stamped as Stamped
import Network.Tox.NodeInfo.NodeInfo (NodeInfo)
import qualified Network.Tox.NodeInfo.NodeInfo as NodeInfo
import Network.Tox.Time (Timestamp)
import qualified Network.Tox.Time as Time
{-------------------------------------------------------------------------------
Expand Down
4 changes: 2 additions & 2 deletions src/tox/Network/Tox/DHT/KBuckets.lhs
Expand Up @@ -12,11 +12,11 @@ module Network.Tox.DHT.KBuckets where
import Control.Applicative (Applicative, (<$>))
import Data.Binary (Binary)
import Data.Foldable (maximumBy, toList)
import Data.Foldable (toList)
import Data.List (sortBy)
import Data.Map (Map)
import qualified Data.Map as Map
import Data.Maybe (isJust, maybeToList)
import Data.Maybe (isJust)
import Data.Ord (comparing)
import Data.Traversable (Traversable, mapAccumR,
traverse)
Expand Down
3 changes: 1 addition & 2 deletions src/tox/Network/Tox/DHT/NodeList.lhs
Expand Up @@ -18,7 +18,6 @@ import Network.Tox.DHT.Distance (Distance)
import Network.Tox.DHT.KBuckets (KBuckets)
import qualified Network.Tox.DHT.KBuckets as KBuckets
import Network.Tox.NodeInfo.NodeInfo (NodeInfo)
import qualified Network.Tox.NodeInfo.NodeInfo as NodeInfo
import Network.Tox.Time (Timestamp)
class NodeList l where
Expand All @@ -35,7 +34,7 @@ class NodeList l where
-- | 'closeNodes pub' returns the (pub',node) pairs of the Node List in
-- increasing order of distance of pub' from pub.
closeNodes :: PublicKey -> l -> [ (Distance, NodeInfo) ]
closeNodes :: PublicKey -> l -> [(Distance, NodeInfo)]
-- | copied from Data.Traversable.foldMapDefault
foldMapClientLists :: Monoid m => (ClientList -> m) -> l -> m
Expand Down
31 changes: 9 additions & 22 deletions src/tox/Network/Tox/DHT/Operation.lhs
Expand Up @@ -13,39 +13,30 @@
module Network.Tox.DHT.Operation where
import Control.Applicative (Applicative, pure, (*>),
(<$), (<$>), (<*>))
(<$>), (<*>))
import Control.Monad (guard, msum, replicateM,
unless, void, when)
import Control.Monad.Identity (Identity, runIdentity)
import Control.Monad.IO.Class (MonadIO, liftIO)
import Control.Monad.Random (RandT, evalRandT)
import Control.Monad.Reader (MonadReader, ReaderT,
ask, runReaderT)
import Control.Monad.State (MonadState, State,
StateT, evalStateT,
import Control.Monad.State (MonadState, StateT,
execStateT, get, gets,
modify, put, runStateT,
state)
modify, put, runStateT)
import Control.Monad.Trans (lift)
import Control.Monad.Trans.Maybe (MaybeT (..), runMaybeT)
import Control.Monad.Writer (MonadWriter, Writer,
WriterT, execWriter,
execWriterT, runWriter,
tell)
import Control.Monad.Writer (MonadWriter, WriterT,
execWriterT, tell)
import Data.Binary (Binary)
import Data.Foldable (for_)
import Data.Map (Map)
import qualified Data.Map as Map
import Data.Maybe (isNothing)
import Data.Traversable (for, traverse)
import Data.Traversable (traverse)
import Lens.Family2 (Lens')
import Lens.Family2.State (zoom, (%%=), (%=))
import System.Random (StdGen, getStdGen,
mkStdGen)
import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary,
shrink)
import System.Random (StdGen, mkStdGen)
import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)
import Network.Tox.Crypto.Key (Nonce, PublicKey)
import Network.Tox.Crypto.Key (PublicKey)
import Network.Tox.Crypto.Keyed (Keyed)
import Network.Tox.Crypto.KeyedT (KeyedT)
import qualified Network.Tox.Crypto.KeyedT as KeyedT
Expand All @@ -54,22 +45,18 @@ import Network.Tox.DHT.ClientList (ClientList)
import qualified Network.Tox.DHT.ClientList as ClientList
import Network.Tox.DHT.ClientNode (ClientNode)
import qualified Network.Tox.DHT.ClientNode as ClientNode
import Network.Tox.DHT.DhtPacket (DhtPacket (..))
import qualified Network.Tox.DHT.DhtPacket as DhtPacket
import Network.Tox.DHT.DhtRequestPacket (DhtRequestPacket (..))
import qualified Network.Tox.DHT.DhtRequestPacket as DhtRequestPacket
import Network.Tox.DHT.DhtState (DhtState)
import qualified Network.Tox.DHT.DhtState as DhtState
import Network.Tox.DHT.NodeList (NodeList)
import qualified Network.Tox.DHT.NodeList as NodeList
import Network.Tox.DHT.NodesRequest (NodesRequest (..))
import Network.Tox.DHT.NodesResponse (NodesResponse (..))
import Network.Tox.DHT.PendingReplies (PendingReplies)
import qualified Network.Tox.DHT.PendingReplies as PendingReplies
import Network.Tox.DHT.PingPacket (PingPacket (..))
import Network.Tox.DHT.RpcPacket (RpcPacket (..))
import qualified Network.Tox.DHT.RpcPacket as RpcPacket
import Network.Tox.DHT.Stamped (Stamped)
import qualified Network.Tox.DHT.Stamped as Stamped
import Network.Tox.Network.MonadRandomBytes (MonadRandomBytes)
import qualified Network.Tox.Network.MonadRandomBytes as MonadRandomBytes
Expand Down
54 changes: 23 additions & 31 deletions src/tox/Network/Tox/Network/MonadRandomBytes.hs
Expand Up @@ -3,37 +3,29 @@

module Network.Tox.Network.MonadRandomBytes where

import Control.Applicative (Applicative, (<$>), (<*>))
import Control.Monad.Random (RandT, getRandoms)
import Control.Monad.Reader (ReaderT)
import Control.Monad.RWS (MonadReader, MonadState,
RWST, execRWST, local,
state)
import Control.Monad.State (StateT)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Writer (WriterT)
import qualified Crypto.Saltine.Class as Sodium (decode)
import qualified Crypto.Saltine.Internal.ByteSizes as Sodium (boxNonce)
import Data.Binary (get)
import Data.Binary.Get (Get, getWord16be,
getWord32be, getWord64be,
getWord8, runGet)
import qualified Data.Bits as Bits
import Data.ByteString (ByteString, pack, unpack)
import Data.ByteString.Lazy (fromStrict)
import Data.Maybe (fromJust)
import Data.Monoid (Monoid)
import Data.Proxy (Proxy (..))
import Data.Word (Word16, Word32, Word64,
Word8)
import System.Entropy (getEntropy)
import System.Random (RandomGen)


import Network.Tox.Crypto.Key (Key)
import qualified Network.Tox.Crypto.Key as Key
import Network.Tox.Crypto.KeyPair (KeyPair)
import qualified Network.Tox.Crypto.KeyPair as KeyPair
import Control.Applicative (Applicative, (<$>))
import Control.Monad.Random (RandT, getRandoms)
import Control.Monad.Reader (ReaderT)
import Control.Monad.RWS (RWST)
import Control.Monad.State (StateT)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Writer (WriterT)
import Data.Binary (get)
import Data.Binary.Get (Get, getWord16be, getWord32be,
getWord64be, getWord8, runGet)
import Data.ByteString (ByteString, pack, unpack)
import Data.ByteString.Lazy (fromStrict)
import Data.Monoid (Monoid)
import Data.Proxy (Proxy (..))
import Data.Word (Word16, Word32, Word64, Word8)
import System.Entropy (getEntropy)
import System.Random (RandomGen)


import Network.Tox.Crypto.Key (Key)
import qualified Network.Tox.Crypto.Key as Key
import Network.Tox.Crypto.KeyPair (KeyPair)
import qualified Network.Tox.Crypto.KeyPair as KeyPair

class (Monad m, Applicative m) => MonadRandomBytes m where
randomBytes :: Int -> m ByteString
Expand Down

0 comments on commit 688f34c

Please sign in to comment.