-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
52 lines (42 loc) · 1.17 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const fetch = require('isomorphic-unfetch')
const DEFAULT_URL = 'https://zinc.cool/'
class Cothoreasy {
constructor (args) {
const { url } = args || {}
if (url && (!url.startsWith('http') || !url.endsWith('/'))) {
throw new Error('Malformed URL')
}
this.url = url || DEFAULT_URL
}
async init () {
const cothorities = await this.get('cothorities')
if (!cothorities) throw new Error('Could not get the list of cothorities')
this.cothorities = cothorities
this.cothority = cothorities[0]
}
parameters () {
return this.cothority ? `?cothority=${this.cothority}` : ''
}
async changeCothority (cothority) {
if (this.cothorities.includes(cothority)) {
this.cothority = cothority
} else {
throw new Error('Could not change cothority, it does not exist')
}
}
async get (query) {
const res = await fetch(this.url + query + this.parameters())
const text = await res.text()
return JSON.parse(text)
}
async status () {
return this.get('status')
}
async skipchain () {
return this.get('skipchain')
}
async skipchains () {
return this.get('skipchains')
}
}
module.exports = Cothoreasy