From 7b43f46b2a12eb00d95a7b44161c32cf2d860793 Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Mon, 30 Mar 2015 19:33:45 +0200 Subject: [PATCH] github events without authentication --- muraine.cabal | 5 +++++ src/Main.hs | 23 ++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/muraine.cabal b/muraine.cabal index 2de429e..b279927 100644 --- a/muraine.cabal +++ b/muraine.cabal @@ -21,5 +21,10 @@ executable muraine -- other-modules: -- other-extensions: build-depends: base >=4.7 && <4.8 + , bytestring + , case-insensitive + , conduit + , http-conduit + , http-types hs-source-dirs: src/ default-language: Haskell2010 diff --git a/src/Main.hs b/src/Main.hs index 5b025db..208a61c 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -1,4 +1,25 @@ +{-# LANGUAGE OverloadedStrings #-} module Main where +-- import Data.Conduit +import Network.HTTP.Conduit +import Network.HTTP.Types.Header (Header) +import qualified Data.ByteString.Lazy.Char8 as LZ +import qualified Data.ByteString.Char8 as B +import Data.CaseInsensitive (original) +import Data.Monoid ((<>)) + +simpleHTTPWithUserAgent :: String -> IO (Response LZ.ByteString) +simpleHTTPWithUserAgent url = do + r <- parseUrl url + let request = r {requestHeaders = [("User-Agent","HTTP-Conduit")]} + withManager $ \manager -> httpLbs request manager + +showHeader :: Header -> IO () +showHeader (name, value) = B.putStrLn $ original name <> ": " <> value + main :: IO () -main = putStrLn "Hello Muraine!" +main = do + response <- simpleHTTPWithUserAgent "https://api.github.com/events" + LZ.putStrLn (responseBody response) + mapM_ showHeader (responseHeaders response)