packages feed

factual-api-0.6.0: examples/MultiExample.hs

module Main where

import System.Environment (getArgs)
import Network.Factual.API
import Data.Factual.Query.ReadQuery
import Data.Factual.Response
import qualified Data.Map as M

main :: IO()
main = do
  args <- getArgs
  let oauthKey = head args
  let oauthSecret = last args
  let options = Options { token = generateToken oauthKey oauthSecret, timeout = Nothing }
  let query1 = ReadQuery { table = Places
                         , search = AndSearch []
                         , select = ["name"]
                         , limit = Just 50
                         , offset = Nothing
                         , includeCount = True
                         , geo = Just (Circle 34.06021 (-118.41828) 5000.0)
                         , filters = [EqualStr "name" "Stand"] }
  let query2 = ReadQuery { table = Places
                         , search = AndSearch []
                         , select = ["name"]
                         , limit = Just 50
                         , offset = Nothing
                         , includeCount = True
                         , geo = Just (Circle 34.06021 (-118.41828) 5000.0)
                         , filters = [EqualStr "name" "Xerox"] }
  let multiQuery = M.fromList [("query1", query1), ("query2", query2)]
  multiResult <- executeMultiQuery options multiQuery
  let result1 = multiResult M.! "query1"
  let result2 = multiResult M.! "query2"
  putStrLn "query1:"
  putStrLn $ "Status: " ++ status result1
  putStrLn $ "Version: " ++ show (version result1)
  putStrLn $ "Data: " ++ show (response result1)
  putStrLn "query2:"
  putStrLn $ "Status: " ++ status result2
  putStrLn $ "Version: " ++ show (version result2)
  putStrLn $ "Data: " ++ show (response result2)