You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
1.9 KiB
87 lines
1.9 KiB
package alfred.http
|
|
|
|
import alfred.*
|
|
import alfred.running.GitRunner
|
|
import alfred.running.Handles
|
|
import alfred.running.ScriptRunner
|
|
import javax.enterprise.inject.Default
|
|
import javax.inject.Inject
|
|
import javax.ws.rs.*
|
|
import javax.ws.rs.core.MediaType
|
|
import javax.ws.rs.core.Response
|
|
import javax.ws.rs.core.Response.Status.PRECONDITION_REQUIRED
|
|
|
|
@Path("build")
|
|
class Endpoints {
|
|
|
|
@field:Inject
|
|
lateinit var builds: Builds
|
|
|
|
@field:Inject
|
|
lateinit var security: Security
|
|
|
|
@field:Inject
|
|
lateinit var scriptRunner: ScriptRunner
|
|
|
|
@field:Inject
|
|
lateinit var gitRunner: GitRunner
|
|
|
|
@field:Inject
|
|
lateinit var handles: Handles
|
|
|
|
@GET
|
|
@Path("{build}/info")
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
fun info(
|
|
@PathParam("build")
|
|
build: BuildId,
|
|
@QueryParam("key")
|
|
key: String?
|
|
) = security.requireKey(build, key) {
|
|
it
|
|
}
|
|
|
|
@POST
|
|
@Path("{build}/trigger")
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
fun trigger(
|
|
@PathParam("build")
|
|
build: BuildId,
|
|
@QueryParam("key")
|
|
key: String?,
|
|
@QueryParam("rev")
|
|
rev: String?
|
|
) = security.requireKey(build, key) {
|
|
if (rev == null) {
|
|
return@requireKey Response.status(PRECONDITION_REQUIRED).build()
|
|
}
|
|
|
|
val info = if (builds.buildConfig(build).script != null) {
|
|
scriptRunner.run(build, rev)
|
|
} else {
|
|
gitRunner.run(build, rev)
|
|
}
|
|
|
|
Response.ok(
|
|
mapOf(
|
|
"log" to info.logFile.absolutePath,
|
|
"pid" to info.pid
|
|
)
|
|
).build()
|
|
}
|
|
|
|
@GET
|
|
@Path("{build}/handles")
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
fun handles(
|
|
@PathParam("build")
|
|
build: BuildId,
|
|
@QueryParam("key")
|
|
key: String?
|
|
) = security.requireKey(build, key) {
|
|
handles.active(build)
|
|
}
|
|
|
|
}
|
|
|