VKHS 0.0.3 → 0.1.0
raw patch · 5 files changed
+58/−30 lines, 5 filesdep +jsondep ~base
Dependencies added: json
Dependency ranges changed: base
Files
- VKHS.cabal +5/−3
- src/Web/VKHS.hs +2/−2
- src/Web/VKHS/API.hs +32/−0
- src/Web/VKHS/API/JSON.hs +19/−0
- src/Web/VKHS/Api.hs +0/−25
VKHS.cabal view
@@ -1,6 +1,6 @@ name: VKHS-version: 0.0.3+version: 0.1.0 synopsis: Provides access to Vkontakte (popular Russian social network) API description: Provides access to Vkontakte API methods. Library requires no interaction@@ -25,9 +25,11 @@ exposed-modules: Web.VKHS Web.VKHS.Types Web.VKHS.Login- Web.VKHS.Api+ Web.VKHS.API+ Web.VKHS.API.JSON - build-depends: base ==4.5.*,+ build-depends: base >=4.5 && <5,+ json ==0.5.*, containers ==0.4.*, tagsoup-parsec ==0.0.*, tagsoup ==0.12.*,
src/Web/VKHS.hs view
@@ -1,9 +1,9 @@ module Web.VKHS ( module Web.VKHS.Login , module Web.VKHS.Types- , module Web.VKHS.Api+ , module Web.VKHS.API ) where import Web.VKHS.Types import Web.VKHS.Login-import Web.VKHS.Api+import Web.VKHS.API
+ src/Web/VKHS/API.hs view
@@ -0,0 +1,32 @@+module Web.VKHS.API+ ( api+ ) where++import Control.Monad+import Control.Monad.Trans+import Control.Monad.Writer+import Control.Monad.Error++import Data.Label+import qualified Data.ByteString.Char8 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++api :: Env -> AccessToken -> String -> Parameters -> IO (Either String String)+api e (at,_,_) mn mp =+ let uri = BS.pack $ showUri $ (\f -> f $ toUri $ printf "https://api.vk.com/method/%s" mn) $+ set query $ bw params (("access_token",at):mp)+ in runErrorT $ do+ r <- ErrorT $ vk_curl e (tell [CURLOPT_URL uri])+ (_,b) <- ErrorT $ return $ parseResponse r+ return b+
+ src/Web/VKHS/API/JSON.hs view
@@ -0,0 +1,19 @@+module Web.VKHS.API.JSON+ ( api+ ) where++import Control.Monad+import Control.Monad.Trans+import Control.Monad.Writer+import Control.Monad.Error++import Text.JSON as J++import Web.VKHS.Types+import qualified Web.VKHS.API as Base++liftR (Ok a) = return a+liftR (Error s) = fail s++api :: Env -> AccessToken -> String -> [(String,String)] -> IO (Either String JSValue)+api e a mn mp = runErrorT $ ErrorT (Base.api e a mn mp) >>= liftR . J.decode
− src/Web/VKHS/Api.hs
@@ -1,25 +0,0 @@-module Web.VKHS.Api where--import Control.Monad.Writer--import Data.Label-import qualified Data.ByteString.Char8 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--api :: Env -> AccessToken -> String -> Parameters -> IO (Either String String)-api e (at,_,_) mn mp =- let uri = BS.pack $ showUri $ (\f -> f $ toUri $ printf "https://api.vk.com/method/%s" mn) $- set query $ bw params (("access_token",at):mp)- in vk_curl e $ do- tell [CURLOPT_URL uri]-