heroku-ci/lib/heroku-api.js

153 строки
3.3 KiB
JavaScript

const https = require('https')
const KOLKRABBI = 'https://kolkrabbi.heroku.com'
const V3_HEADER = 'application/vnd.heroku+json; version=3'
const VERSION_HEADER = `${V3_HEADER}.ci`
const PIPELINE_HEADER = `${V3_HEADER}.pipelines`
function* pipelineCoupling (client, app) {
return client.get(`/apps/${app}/pipeline-couplings`)
}
function* pipelineRepository (client, pipelineID) {
return client.request({
host: KOLKRABBI,
path: `/pipelines/${pipelineID}/repository`,
headers: {
Authorization: `Bearer ${client.options.token}`
}
})
}
function* getDyno (client, appID, dynoID) {
return client.request({
path: `/apps/${appID}/dynos/${dynoID}`,
headers: {
Authorization: `Bearer ${client.options.token}`,
Accept: VERSION_HEADER
}
})
}
function* githubArchiveLink (client, user, repository, ref) {
return client.request({
host: KOLKRABBI,
path: `/github/repos/${user}/${repository}/tarball/${ref}`,
headers: {
Authorization: `Bearer ${client.options.token}`
}
})
}
function* testRun (client, pipelineID, number) {
return client.request({
path: `/pipelines/${pipelineID}/test-runs/${number}`,
headers: {
Authorization: `Bearer ${client.options.token}`,
Accept: VERSION_HEADER
}
})
}
function* testNodes (client, testRunIdD) {
return client.request({
path: `/test-runs/${testRunIdD}/test-nodes`,
headers: {
Authorization: `Bearer ${client.options.token}`,
Accept: VERSION_HEADER
}
})
}
function* testRuns (client, pipelineID) {
return client.request({
path: `/pipelines/${pipelineID}/test-runs`,
headers: {
Authorization: `Bearer ${client.options.token}`,
Accept: VERSION_HEADER
}
})
}
function* latestTestRun (client, pipelineID) {
const latestTestRuns = yield client.request({
path: `/pipelines/${pipelineID}/test-runs`,
headers: {
Authorization: `Bearer ${client.options.token}`,
Accept: VERSION_HEADER,
Range: 'number ..; order=desc,max=1'
}
})
return Promise.resolve(latestTestRuns[0])
}
function updateTestRun (client, id, body) {
return client.request({
body,
method: 'PATCH',
path: `/test-runs/${id}`,
headers: {
Accept: VERSION_HEADER
}
})
}
function logStream (url, fn) {
return https.get(url, fn)
}
function* createSource (client) {
return yield client.post(`/sources`)
}
function* createTestRun (client, body) {
const headers = {
Accept: VERSION_HEADER
}
return client.request({
headers: headers,
method: 'POST',
path: '/test-runs',
body: body
})
}
function configVars (client, pipelineID) {
return client.request({
headers: { Accept: PIPELINE_HEADER },
path: `/pipelines/${pipelineID}/stage/test/config-vars`
})
}
function setConfigVars (client, pipelineID, body) {
return client.request({
method: 'PATCH',
headers: { Accept: PIPELINE_HEADER },
path: `/pipelines/${pipelineID}/stage/test/config-vars`,
body
})
}
function appSetup (client, id) {
return client.get(`/app-setups/${id}`)
}
module.exports = {
appSetup,
configVars,
createSource,
createTestRun,
getDyno,
githubArchiveLink,
latestTestRun,
testNodes,
testRun,
testRuns,
logStream,
pipelineCoupling,
pipelineRepository,
setConfigVars,
updateTestRun
}