2023-05-08 11:08:04 +00:00
name : Add instance to uptimerobot
on :
issues :
types : [ opened, reopened]
jobs :
replycomment :
runs-on : ubuntu-latest
permissions : write-all
steps :
- uses : actions/checkout@v3
if : contains(github.event.issue.labels.*.name, 'instance-add')
- uses : actions/setup-node@v3
if : contains(github.event.issue.labels.*.name, 'instance-add')
with :
node-version : 16
- run : npm install request linkifyjs
if : contains(github.event.issue.labels.*.name, 'instance-add')
- uses : actions/github-script@v6
if : contains(github.event.issue.labels.*.name, 'instance-add')
with :
script : |
var issueInfo = (await github.rest.issues.get({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
})).data;
var linkify = require("linkifyjs");
var issueTitleParseUrl = linkify.find(issueInfo.title);
if (issueTitleParseUrl.length !== 0) {
if (issueInfo.title.includes(".onion")) {
var replyComment =
[ 'Hello! I\'ve detected that you are requesting to add an onion URL.' ,
'Please create a pull request instead for adding your onion url as an alternative to your clearnet URL : https://github.com/iv-org/documentation/edit/master/docs/instances.md'
] .join('\n');
await github.rest.issues.createComment({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
body : replyComment
});
await github.rest.issues.update({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
state : 'closed'
});
}
else {
var instanceHostname = (new URL(issueTitleParseUrl[0].href)).hostname;
var request = require("request");
var options = { method: 'POST',
url : 'https://api.uptimerobot.com/v2/newMonitor' ,
json:true,
headers :
{ 'content-type' : 'application/x-www-form-urlencoded' ,
'cache-control' : 'no-cache' },
form :
{ api_key : '${{ secrets.UPTIMEROBOT_API_KEY }}' ,
format : 'json' ,
type : '1' ,
url : 'https://' + instanceHostname,
friendly_name : instanceHostname } };
request(options, async function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
if (body.stat == "ok") {
var replyComment =
['Hello! Your instance has been added to our monitoring system : https://stats.uptimerobot.com/89VnzSKAn/' + body.monitor.id,
'You need to wait 30 days before we add your instance.' ,
'' ,
'Make sure you double checked all the mandatory checks or this will slow down the process of adding your instance!'
] .join('\n');
await github.rest.issues.createComment({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
body : replyComment
})
await github.rest.issues.addLabels({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
labels : [ 'wait-30-days' ]
})
}
});
}
}
else {
var replyComment =
2023-05-19 22:13:26 +00:00
[ 'Domain not detected in the title, please edit the title by correcting it like this:' ,
2023-05-08 11:08:04 +00:00
'Issue title example : `[New instance] https://myinstance.com`'
] .join('\n');
await github.rest.issues.createComment({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
body : replyComment
})
2023-05-19 22:13:26 +00:00
}