module Web.VKHS.API ( api , envcall ) where import Control.Monad import Control.Monad.Trans import Control.Monad.Writer import Control.Monad.Error import Data.Label import qualified Data.ByteString.UTF8 as U import qualified Data.ByteString as BS import Network.Curlhs.Core import Network.Protocol.Http import Network.Protocol.Uri import Network.Protocol.Uri.Query import Text.Printf import Web.VKHS.Types import Web.VKHS.Curl envcall :: String -> Env CallEnv envcall at = mkEnv (CallEnv at) -- | Invoke the request. Return answer (normally, string representation of -- JSON data). See documentation: -- -- api :: Env CallEnv -- ^ the VKHS environment -> String -- ^ API method name -> [(String, String)] -- ^ API method parameters (name-value pairs) -> IO (Either String BS.ByteString) api e mn mp = let uri = showUri $ (\f -> f $ toUri $ printf "https://api.vk.com/method/%s" mn) $ set query $ bw params (("access_token",(access_token . sub) e):mp) in vk_curl_payload e (tell [CURLOPT_URL $ U.fromString uri])