packages feed

sensei-0.9.0: src/Sensei/API.hs

module Sensei.API (
  QuickFixRequest(..)
, quickFix
, deepFix
) where

import Imports

import Network.HTTP.Client
import Data.Aeson qualified as Aeson

import HTTP.Util (makeRequest)

data QuickFixRequest = QuickFixRequest {
  choice :: Maybe Int
} deriving (Eq, Show, Generic)

instance ToJSON QuickFixRequest where
  toJSON = genericKebabEncode

instance FromJSON QuickFixRequest where
  parseJSON = genericKebabDecode

quickFix :: FilePath -> QuickFixRequest -> IO (Bool, LazyByteString)
quickFix dir (RequestBodyLBS . Aeson.encode -> requestBody) = makeRequest dir request
  where
    request :: Request
    request = "http://localhost/quick-fix" { method = "POST", requestBody }

deepFix :: FilePath -> IO (Bool, LazyByteString)
deepFix dir = makeRequest dir request
  where
    request :: Request
    request = "http://localhost/deep-fix" { method = "POST" }