1 {-# LANGUAGE OverloadedStrings #-} 2 module Controller.Citation 3 ( getCitationHandler 4 ) where 5 6 import Network.URI (URI) 7 8 import Has (focusIO) 9 import qualified JSON 10 import HTTP.Form.Deform 11 import Action 12 import Controller.Form 13 import Model.Citation.CrossRef 14 15 data GetCitationRequest = GetCitationRequest URI 16 17 getCitationHandler :: Action -- TODO: GET only 18 getCitationHandler = withoutAuth $ do 19 GetCitationRequest url <- runForm Nothing (GetCitationRequest <$> ("url" .:> deform)) 20 cite <- maybeAction =<< focusIO (lookupCitation url) 21 return $ okResponse [] $ JSON.toEncoding cite