{-# LANGUAGE OverloadedStrings #-}

module Rollbar.Client.Ping
  ( -- ** Requests
    Pong(..)
    -- ** Endpoints
  , ping
  ) where

import Control.Monad (void)
import Network.HTTP.Req
import Rollbar.Client.Internal (baseUrl)

data Pong = Pong
  deriving (Pong -> Pong -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Pong -> Pong -> Bool
$c/= :: Pong -> Pong -> Bool
== :: Pong -> Pong -> Bool
$c== :: Pong -> Pong -> Bool
Eq, Int -> Pong -> ShowS
[Pong] -> ShowS
Pong -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Pong] -> ShowS
$cshowList :: [Pong] -> ShowS
show :: Pong -> String
$cshow :: Pong -> String
showsPrec :: Int -> Pong -> ShowS
$cshowsPrec :: Int -> Pong -> ShowS
Show)

-- | Pings Rollbar API server, on success returns 'Pong'.
--
-- __Example__
--
-- > settings <- readSettings "rollbar.yaml"
-- > runRollbar settings ping
--
-- __Reference__
--
-- <https://explorer.docs.rollbar.com/#section/Ping>
ping :: MonadHttp m => m Pong
ping :: forall (m :: * -> *). MonadHttp m => m Pong
ping = do
  forall (f :: * -> *) a. Functor f => f a -> f ()
void forall a b. (a -> b) -> a -> b
$ forall (m :: * -> *) method body response (scheme :: Scheme).
(MonadHttp m, HttpMethod method, HttpBody body,
 HttpResponse response,
 HttpBodyAllowed (AllowsBody method) (ProvidesBody body)) =>
method
-> Url scheme
-> body
-> Proxy response
-> Option scheme
-> m response
req GET
GET Url 'Https
url NoReqBody
NoReqBody Proxy IgnoreResponse
ignoreResponse forall a. Monoid a => a
mempty
  forall (m :: * -> *) a. Monad m => a -> m a
return Pong
Pong
  where
    url :: Url 'Https
url = Url 'Https
baseUrl forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"status" forall (scheme :: Scheme). Url scheme -> Text -> Url scheme
/: Text
"ping"