-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathindex.js
35 lines (32 loc) · 1.06 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const axios = require('axios')
class Build {
constructor(meta) {
meta.context = meta.label
meta.target_url = meta.url
this.meta = meta
}
start (message, url) {return update(this.meta, message, url, 'pending')}
pass (message, url) {return update(this.meta, message, url, 'success')}
fail (message, url) {return update(this.meta, message, url, 'failure')}
error (message, url) {return update(this.meta, message, url, 'error')}
}
const update = (build, message, url, status) => new Promise((resolve, reject) => {
axios({
method: 'POST',
url: `https://api.github.com/repos/${build.repo}/statuses/${build.sha}`,
responseType: 'json',
data: {
state: status,
target_url: url || build.url,
description: message || build.description,
context: build.context
},
headers: {'Authorization': `token ${build.token}`}
})
.then(({status, data}) => resolve({status, data}))
.catch(({response = {status: 500}}) => reject({
status: response.status,
error: response.data
}))
})
module.exports = Build;