prosper-0.1.0.0: src/Prosper/Internal/JSON.hs
{-# LANGUAGE OverloadedStrings #-}
module Prosper.Internal.JSON
( jsonGet
, jsonGetHandler
, investRequest
) where
import Network.Http.Client
import System.IO.Streams (InputStream)
import Data.Aeson (FromJSON)
import Data.ByteString (ByteString)
import qualified Data.ByteString.Char8 as C
import Data.Monoid ((<>))
import Prosper.Internal.Request
import Prosper.Invest
import Prosper.Money
import Prosper.User
-- | Make a GET request to Prosper's JSON api, return the parsed JSON data
jsonGet
:: FromJSON a
=> User -- ^ The user name and password for the prosper user
-> ByteString -- ^ The name of the API service, relative to the API url
-> IO a -- ^ JSON response
jsonGet userInfo url =
issueRequest userInfo url GET "application/json" jsonHandler []
jsonGetHandler
:: FromJSON a
=> User -- ^ The user name and password for the prosper user
-> ByteString -- ^ The name of the API service, relative to the API url
-> (Response -> InputStream ByteString -> IO a)
-> IO a -- ^ JSON response
jsonGetHandler userInfo url handler =
issueRequest userInfo url GET "application/json" handler []
investRequest
:: User
-> Int -- ^ The listing id
-> Money -- ^ Amount
-> IO InvestResponse -- ^ JSON response from Prosper
investRequest userInfo listingId amount =
issueRequest userInfo "Invest" POST "application/x-www-form-urlencoded" jsonHandler
[ ("listingId", C.pack $ show listingId)
, ("amount", C.pack $ show amount)
]