module HUGOConvert
( toHUGOAnn
) where
import Data.Monoid
import qualified Data.Text as T
import Data.Aeson
import Data.Aeson.Lens
import Control.Lens
import Network.Wreq
import Safe
import Types
toHUGOAnn :: HUGOType -> UnknownAnn -> IO (Maybe Ann)
toHUGOAnn _ (UnknownAnn "") = return Nothing
toHUGOAnn (HUGOType queryType) (UnknownAnn query) = do
let opts = set (header "Accept") ["application/json"] defaults
r <- getWith opts
$ "http://rest.genenames.org/search/"
<> T.unpack queryType
<> "/"
<> T.unpack query
let getSymbols = responseBody
. key "response"
. key "docs"
. _Array
. traverse
. key "symbol"
. _String
return . fmap Ann . headMay . toListOf getSymbols $ r