module Haste.PasteProviders.HPaste ( HPaste (HPaste) ) where import Data.Maybe (fromMaybe) import qualified Data.Char as Char import Haste.Post import Haste.Types import Haste.Monad data HPaste = HPaste deriving Show defaultLang = "text" langaugeKey :: Language -> String langaugeKey = map Char.toLower . show instance PasteProvider HPaste where preferredLanguages _ = [Haskell] paste _ text = do lang <- asks envLanguage resp <- post "http://hpaste.org/fastcgi/hpaste.fcgi/save" [ "title" :=> "" , "author" :=> "" , "content" :=> text , "language" :=> langaugeKey lang , "channel" :=> "none" ] return $ case lookup "Location" (headers resp) of Nothing -> error . statusLine $ resp Just loc -> "http://hpaste.org" ++ tail loc