{-# LANGUAGE DataKinds #-}

module Hercules.API.Agent.Build where

import Data.ByteString (ByteString)
import qualified Hercules.API.Agent.Build.BuildEvent as BuildEvent
import qualified Hercules.API.Agent.Build.BuildTask as BuildTask
import Hercules.API.Prelude
import qualified Hercules.API.Task as Task
import Servant.API
import Servant.API.Generic

data BuildAPI auth f = BuildAPI
  { BuildAPI auth f
-> f
   :- ("tasks"
       :> (Capture "taskId" (Id (Task BuildTask))
           :> ("build" :> (auth :> Get '[JSON] BuildTask))))
getBuild ::
      f
        :- "tasks"
        :> Capture "taskId" (Id (Task.Task BuildTask.BuildTask))
        :> "build"
        :> auth
        :> Get '[JSON] BuildTask.BuildTask,
    BuildAPI auth f
-> f
   :- ("tasks"
       :> (Capture "taskId" (Id (Task BuildTask))
           :> ("build"
               :> (ReqBody '[JSON] [BuildEvent]
                   :> (auth :> Post '[JSON] NoContent)))))
updateBuild ::
      f
        :- "tasks"
        :> Capture "taskId" (Id (Task.Task BuildTask.BuildTask))
        :> "build"
        :> ReqBody '[JSON] [BuildEvent.BuildEvent]
        :> auth
        :> Post '[JSON] NoContent,
    BuildAPI auth f
-> f
   :- (Summary "DEPRECATED"
       :> ("tasks"
           :> (Capture "taskId" (Id (Task BuildTask))
               :> ("build"
                   :> ("_log"
                       :> (ReqBody '[OctetStream] ByteString
                           :> (auth :> Post '[JSON] NoContent)))))))
writeBuildLog ::
      f
        :- Summary "DEPRECATED"
        :> "tasks"
        :> Capture "taskId" (Id (Task.Task BuildTask.BuildTask))
        :> "build"
        :> "_log"
        :> ReqBody '[OctetStream] ByteString
        :> auth
        :> Post '[JSON] NoContent
  }
  deriving ((forall x. BuildAPI auth f -> Rep (BuildAPI auth f) x)
-> (forall x. Rep (BuildAPI auth f) x -> BuildAPI auth f)
-> Generic (BuildAPI auth f)
forall x. Rep (BuildAPI auth f) x -> BuildAPI auth f
forall x. BuildAPI auth f -> Rep (BuildAPI auth f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall auth f x. Rep (BuildAPI auth f) x -> BuildAPI auth f
forall auth f x. BuildAPI auth f -> Rep (BuildAPI auth f) x
$cto :: forall auth f x. Rep (BuildAPI auth f) x -> BuildAPI auth f
$cfrom :: forall auth f x. BuildAPI auth f -> Rep (BuildAPI auth f) x
Generic)

{-# DEPRECATED writeBuildLog "Use 'Hercules.API.Logs.writeLog' instead" #-}