50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
|
|
import got from 'got'
|
|
|
|
const DEFAULT = {
|
|
m: 'This is the Default Message', // message
|
|
t: '', // title
|
|
s: 5, // sound (value 0-28)
|
|
v: 2, // vibration (empty or value 1-3)
|
|
i: 5, // icon (value 1-98)
|
|
c: '#FF0000', // icon color (optional)
|
|
l: 0, // Time to Live in minutes
|
|
pr: 2, // Priority (optional: -2, -1, 0, 1, 2)
|
|
re: 60, // Retry (optional: 60-10800 seconds)
|
|
ex: 60, // Expire (optional: 60-10800 seconds)
|
|
a: 0, // Answer
|
|
p2: '', // Image 2 converted to > Data URL with Base64-encoded string
|
|
p3: '' // Image 3 converted to > Data URL with Base64-encoded string
|
|
}
|
|
|
|
class Pushsafer {
|
|
constructor(opts) {
|
|
this._req = Object.assign({},DEFAULT,opts)
|
|
this.url = opts.url || 'https://www.pushsafer.com/api'
|
|
this.key = opts.k
|
|
this.device = opts.d
|
|
}
|
|
|
|
async send (msg, opts={}) {
|
|
Object.assign(this._req,opts)
|
|
this._req.m = typeof msg === 'string' ? msg : msg.msg || msg.message || msg.subject
|
|
let s = new URLSearchParams (Object.entries(this._req))
|
|
try {
|
|
const {body} = await got(this.url,{searchParams:s})
|
|
return JSON.parse(body)
|
|
} catch (err) {
|
|
return {error:err}
|
|
}
|
|
}
|
|
|
|
setOpts (opts) {
|
|
// missing opts and they are reset to defaults
|
|
if (!opts) this._req = Object.assign({},DEFAULT,{k:this.key, d:this.device})
|
|
Object.assign(this._req,opts)
|
|
}
|
|
|
|
}
|
|
|
|
export default Pushsafer
|
|
export { Pushsafer as Service }
|