{- |
Module      : $Header$
Description : NNTP extentions from RFC2980
Copyright   : (c) Maciej Piechotka
License     : LGPL 3 or later

Maintainer  : uzytkownik2@gmail.com
Stability   : none
Portability : portable

This module contains the common features and common interface.
-}
module Network.NNTP.Common
    (
     -- * Functions
     xhdr
    )
where
import Control.Applicative hiding (empty)
import Control.Monad.Trans
import Data.ByteString.Lazy.Char8(empty)
import Network.NNTP.Internal
import Network.NNTP.Internal.Article
import Network.NNTP.ParserHelpers
import Text.Parsec hiding (many)
xhdr :: Monad m => (Article -> m a) -> NntpT m [a]
xhdr f = nntpSendCommand "XHDR Message-ID 0-" empty [
          (211, many (integer *> many1 space *> iD <* line >>=
                     (\i -> lift $ lift $ f $ Article i Nothing Nothing))),
          (412, error "No news group selected")]