packages feed

hercules-ci-api-agent-0.4.6.1: src/Hercules/API/Agent/State.hs

{-# LANGUAGE DataKinds #-}

module Hercules.API.Agent.State where

import Data.ByteString (ByteString)
import Hercules.API.Prelude
import Servant.API

type ContentLength = Header "Content-Length" Integer

data StateAPI auth f = StateAPI
  { getState ::
      f
        :- "current-task"
          :> "state"
          :> Capture' '[Required] "name" Text
          :> "data"
          :> auth
          :> StreamGet NoFraming OctetStream (Headers '[ContentLength] (SourceIO ByteString)),
    putState ::
      f
        :- "current-task"
          :> "state"
          :> Capture' '[Required] "name" Text
          :> "data"
          :> StreamBody NoFraming OctetStream (SourceIO ByteString)
          :> ContentLength
          :> auth
          :> Put '[JSON] NoContent
  }
  deriving (Generic)