diff options
author | Kazu Yamamoto <kazu@iij.ad.jp> | 2011-10-23 21:32:59 -0700 |
---|---|---|
committer | Kazu Yamamoto <kazu@iij.ad.jp> | 2011-10-23 21:32:59 -0700 |
commit | 04c4afa6f7af8be5bd9ac0871ac42510350ac2f0 (patch) | |
tree | c368ba3b3664fbfe9b2be45353d07e1e0960adea /Network/DNS/Response.hs | |
parent | 1cc2f6a8882ce9e1a79ab8789b50a79b2d021d14 (diff) | |
parent | 89d6ab583274e7e10a69bc915b0e48cfdbc6207a (diff) |
Merge pull request #3 from yihuang/master
Make this library full capable of decoding and encoding.
Diffstat (limited to 'Network/DNS/Response.hs')
-rw-r--r-- | Network/DNS/Response.hs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/Network/DNS/Response.hs b/Network/DNS/Response.hs index 36f6203..abcb8ba 100644 --- a/Network/DNS/Response.hs +++ b/Network/DNS/Response.hs @@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} -module Network.DNS.Response (responseIter, parseResponse) where +module Network.DNS.Response (responseIter, parseResponse, runDNSFormat, runDNSFormat_) where import Control.Applicative import Control.Monad @@ -12,13 +12,21 @@ import Network.DNS.Internal import Network.DNS.StateBinary import Data.Enumerator (Enumerator, Iteratee, run_, ($$)) import Data.ByteString (ByteString) +import qualified Data.ByteString.Lazy as BL -responseIter :: Iteratee ByteString IO (DNSFormat, PState) -responseIter = runSGet decodeResponse +runDNSFormat :: BL.ByteString -> Either String (DNSFormat, PState) +runDNSFormat bs = runSGet decodeResponse bs -parseResponse :: Enumerator ByteString IO (a,b) - -> Iteratee ByteString IO (a,b) - -> IO a +runDNSFormat_ :: BL.ByteString -> Either String DNSFormat +runDNSFormat_ bs = fst <$> runDNSFormat bs + +responseIter :: Monad m => Iteratee ByteString m (DNSFormat, PState) +responseIter = iterSGet decodeResponse + +parseResponse :: (Functor m, Monad m) + => Enumerator ByteString m (a,b) + -> Iteratee ByteString m (a,b) + -> m a parseResponse enum iter = fst <$> run_ (enum $$ iter) ---------------------------------------------------------------- |