packages feed

haste-0.1: src/Haste/PasteProviders/HPaste.hs

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