Advertisement
Guest User

haskell-http-request-body

a guest
Apr 29th, 2021
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. {-# LANGUAGE DeriveGeneric #-}
  2. {-# LANGUAGE OverloadedStrings #-}
  3.  
  4. module Wiki (getArticles) where
  5.  
  6. import Network.HTTP.Conduit (simpleHttp, parseRequest, httpLbs, newManager, tlsManagerSettings, responseBody, method)
  7. import Network.HTTP.Simple (setRequestHeader, getResponseBody, getResponseStatus, setRequestBodyJSON)
  8. import qualified Data.ByteString.Lazy.UTF8 as UBS
  9. import qualified Data.ByteString.Lazy as LBS
  10. import qualified Data.ByteString.Char8 as CBS
  11. import qualified Data.ByteString as BS
  12. import qualified Data.Text.Lazy.Encoding as DTLE
  13. import qualified Data.Text.Lazy
  14. import qualified Data.Text
  15. import qualified System.Environment
  16. import Network.HTTP.Types.Header (hAuthorization)
  17. import Network.HTTP.Types.Method ( StdMethod( POST ) )
  18. import Control.Monad.Trans.Resource (runResourceT)
  19.  
  20. graphqlApiUrl :: String
  21. graphqlApiUrl = "secret ;)"
  22.  
  23. testUrl = "https://enudsbs2ojtp.x.pipedream.net"
  24.  
  25. hAuthorizationValue :: String -> BS.ByteString
  26. hAuthorizationValue token = CBS.pack ("Bearer " ++ token)
  27.  
  28. requestBody :: String
  29. requestBody = "{\"operationName\":null,\"variables\":{},\"query\":\"{\n pages {\n list {\n title\n }\n }\n}\n\"}"
  30.  
  31. getArticles :: IO ()
  32. getArticles = do
  33. {- https://hackage.haskell.org/package/http-conduit-2.3.8/docs/Network-HTTP-Conduit.html#v:httpLbs -}
  34. token <- System.Environment.getEnv "WIKI_TOKEN"
  35. initReq <- parseRequest testUrl
  36. let req = initReq
  37. { method = "POST"
  38. }
  39. let finalReq = setRequestBodyJSON requestBody req
  40. manager <- newManager tlsManagerSettings
  41. res <- httpLbs (setRequestHeader hAuthorization [hAuthorizationValue token] finalReq) manager
  42. print (getResponseBody res)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement