webhook-action/src/main.ts

71 lines
1.7 KiB
TypeScript
Raw Normal View History

2021-02-26 04:00:44 +00:00
import * as core from '@actions/core'
import {http} from './http'
async function run() {
2021-02-26 04:00:44 +00:00
const url = core.getInput('url')
? core.getInput('url')
: process.env.WEBHOOK_URL
? process.env.WEBHOOK_URL
: ''
const headers = core.getInput('headers')
? core.getInput('headers')
: process.env.headers
? process.env.headers
: null
const body = core.getInput('body')
? core.getInput('body')
: process.env.data
? process.env.data
: null
const insecure = core.getInput('insecure')
? core.getInput('insecure') == 'true'
: process.env.insecure
? process.env.insecure == 'true'
: false
if (!url) {
// validate a url
core.setFailed('A url is required to run this action.')
// error
throw new Error('A url is required to run this action.')
}
// initial info
core.info(`Sending webhook request to ${url}`)
// debug start
core.debug(new Date().toTimeString()) // debug is only output if you set the secret `ACTIONS_RUNNER_DEBUG` to true
// make the request
http
.make(url, headers, body, insecure)
.then(res => {
// if the status code is not 2xx
if (res.status >= 400) {
// throw an error
error(res.status)
return
}
// output the status
core.setOutput('statusCode', res.status)
// report on the status code
core.info(`Received status code: ${res.status}`)
// debug end
core.info(new Date().toTimeString())
})
.catch(err => {
error(err.status)
return
})
}
2020-08-29 01:10:10 +00:00
function error(statusCode) {
// set the action to failed
2021-02-26 04:00:44 +00:00
core.setFailed(`Received status code: ${statusCode}`)
2020-08-29 01:10:10 +00:00
// throw an error
2021-02-26 04:00:44 +00:00
throw new Error(`Request failed with status code: ${statusCode}`)
2020-08-29 01:10:10 +00:00
}
2021-02-26 04:00:44 +00:00
run()