{-# LANGUAGE TemplateHaskell, OverloadedStrings #-}

module Android (pushMess) where 

import Network.HTTP.Conduit
import Data.Conduit
import Control.Monad.IO.Class (liftIO)

import Data.ByteString.Lazy.Char8 (unpack)

import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as LBS

{-
Resend with exponential fallback
-}

pushMess :: BS.ByteString -> LBS.ByteString -> IO ()
pushMess apikey payload =
   runResourceT $ do
     liftIO $ print payload
     manager <- liftIO $ newManager def
     req <- liftIO $ parseUrl "https://android.googleapis.com/gcm/send"
     res <- httpLbs req {method = "POST",
                         requestHeaders = [("Authorization", BS.append "key=" apikey),
                                           ("Content-Type", "application/json")],
                         requestBody = RequestBodyLBS payload} manager
     liftIO $ do
       --print $ unpack payload
       --print $ responseStatus res
       --print $ responseBody res
       mapM_ print $ responseHeaders res