packages feed

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

module Haste.PasteProviders.Paste2
  ( Paste2 (Paste2)
  ) where

import Data.Maybe (fromMaybe)
import qualified Data.Char as C

import Haste.Post
import Haste.Types
import Haste.Monad

data Paste2 = Paste2
  deriving Show

defaultLang = "text"

langaugeKey :: Language -> String
langaugeKey = map C.toLower . show

instance PasteProvider Paste2 where

  paste _ text = do
    lang <- asks envLanguage
    resp <- post "http://paste2.org/new-paste" [ "code"        :=> text
                                               , "lang"        :=> langaugeKey lang
                                               , "parent"      :=> "0"
                                               , "description" :=> ""
                                               ]
    return $ case lookup "Location" (headers resp) of
              Nothing  -> error . statusLine $ resp
              Just loc -> "http://paste2.org" ++ tail loc