summaryrefslogtreecommitdiffhomepage
path: root/Network/DNS/Response.hs
diff options
context:
space:
mode:
authorGravatar Kazu Yamamoto <kazu@iij.ad.jp>2011-10-23 21:32:59 -0700
committerGravatar Kazu Yamamoto <kazu@iij.ad.jp>2011-10-23 21:32:59 -0700
commit04c4afa6f7af8be5bd9ac0871ac42510350ac2f0 (patch)
treec368ba3b3664fbfe9b2be45353d07e1e0960adea /Network/DNS/Response.hs
parent1cc2f6a8882ce9e1a79ab8789b50a79b2d021d14 (diff)
parent89d6ab583274e7e10a69bc915b0e48cfdbc6207a (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.hs20
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)
----------------------------------------------------------------