module Web.VKHS.API.Base ( api , envcall ) where import Control.Monad () import Control.Monad.Error () import Control.Monad.Writer import Control.Monad.Trans () import Data.Label import qualified Data.ByteString.UTF8 as U import qualified Data.ByteString as BS import Network.CURL730 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 uri])