VKHS 0.5.0 → 0.5.1
raw patch · 2 files changed
+48/−2 lines, 2 files
Files
- VKHS.cabal +3/−2
- src/Web/VKHS/API/Base.hs +45/−0
VKHS.cabal view
@@ -1,6 +1,6 @@ name: VKHS-version: 0.5.0+version: 0.5.1 synopsis: Provides access to Vkontakte social network via public API description: Provides access to Vkontakte API methods. Library requires no interaction@@ -50,7 +50,7 @@ library- --extra-libraries: curl+ extra-libraries: curl build-tools: hsc2hs ghc-options: -Wall -fwarn-tabs hs-source-dirs: src@@ -86,6 +86,7 @@ exposed-modules: Web.VKHS Web.VKHS.API Web.VKHS.API.Aeson+ Web.VKHS.API.Base Web.VKHS.API.Types Web.VKHS.API.Monad Web.VKHS.Curl
+ src/Web/VKHS/API/Base.hs view
@@ -0,0 +1,45 @@+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.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:+--+-- <http://vk.com/developers.php?oid=-1&p=%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%B2_API>+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])++