gdaxSignedPost g path par body = do
    signedOpts <- signOptions g "POST" path (Just bodyBS) opts
    res <- liftIO $ postWith signedOpts (g ^. restEndpoint <> path) bodyBS
    decodeResult res
    where
        opts = defaults & header "Content-Type" .~ [ "application/json" ]
                        & manager .~ Right (g ^. networkManager)
                        & params .~ par
        bodyBS = CLBS.toStrict $ Aeson.encode body
gdaxSignedPost g path par body = do
    signedOpts <- signOptions g "POST" path (Just bodyBS) opts
    res <- liftIO $ postWith signedOpts (g ^. restEndpoint <> path) bodyBS
    decodeResult res
    where
        opts = defaults & header "Content-Type" .~ [ "application/json" ]
                        & manager .~ Right (g ^. networkManager)
                        & params .~ par
        bodyBS = CLBS.toStrict $ Aeson.encode body
gdaxSignedPost g path par body = do
    signedOpts <- signOptions g "POST" path (Just bodyBS) opts
    res <- liftIO $ postWith signedOpts (g ^. restEndpoint <> path) bodyBS
    decodeResult res
    where
        opts = defaults & header "Content-Type" .~ [ "application/json" ]
                        & manager .~ Right (g ^. networkManager)
                        & params .~ par
        bodyBS = CLBS.toStrict $ Aeson.encode body