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)
api :: Env CallEnv
-> String
-> [(String, String)]
-> 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])