Implemented list project versions endpoint.

This commit is contained in:
Jonathan Bernard
2017-05-08 12:40:48 -05:00
parent 2d4f1bfdd2
commit fd804a9aa8
3 changed files with 49 additions and 2 deletions

View File

@ -162,6 +162,26 @@ proc start*(cfg: StrawBossConfig): void =
resp(Http501, makeJsonResp(Http501), JSON)
get "/project/@projectName/versions":
## Get a list of all versions that we have built
checkAuth(); if not authed: return true
# Make sure we know about that project
var project: ProjectDef
try: project = cfg.findProject(@"projectName")
except: resp(Http404, makeJsonResp(Http404, getCurrentExceptionMsg()), JSON)
var versions: seq[string] = @[]
for cfgFilePath in walkFiles(cfg.artifactsRepo & "/" & project.name & "/configuration.*.json"):
let vstart = cfgFilePath.rfind("/configuration.") + 15
versions.add(cfgFilePath[vstart..^6])
if versions.len == 0:
resp(Http404, makeJsonResp(Http404, "I have not built any versions of " & project.name), JSON)
resp($(%(versions)), JSON)
get "/project/@projectName/@version?":
## Get a detailed project record including step definitions (ProjectConfig).
@ -185,7 +205,7 @@ proc start*(cfg: StrawBossConfig): void =
# No version requested, use "latest"
else:
let confFilePaths = toSeq(walkFiles("configuration.*.json"))
let confFilePaths = toSeq(walkFiles(cfg.artifactsRepo & "/" & project.name & "/configuration.*.json"))
if confFilePaths.len == 0:
resp(Http404, makeJsonResp(Http404, "I have not built any versions of " & project.name), JSON)
let modTimes = confFilePaths.mapIt(it.getLastModificationTime)