71 lines
1.5 KiB
JavaScript
71 lines
1.5 KiB
JavaScript
|
'use strict'
|
||
|
|
||
|
const req = require('request')
|
||
|
|
||
|
class Intval {
|
||
|
constructor (url) {
|
||
|
this._baseUrl = `http://${url}`
|
||
|
}
|
||
|
async move () {
|
||
|
return new Promise ((resolve, reject) => {
|
||
|
const timeStart = +new Date()
|
||
|
const url = `${this._baseUrl}/frame`
|
||
|
//console.log(url)
|
||
|
return req(url, (err, res, body) => {
|
||
|
let ms = (+new Date()) - timeStart
|
||
|
if (err) {
|
||
|
return reject(err)
|
||
|
}
|
||
|
return resolve(ms)
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
async setDir (dir) {
|
||
|
return new Promise ((resolve, reject) => {
|
||
|
const timeStart = +new Date()
|
||
|
const url = `${this._baseUrl}/dir?dir=${dir}`
|
||
|
//console.log(url)
|
||
|
return req(url, (err, res, body) => {
|
||
|
let ms = (+new Date()) - timeStart
|
||
|
if (err) {
|
||
|
return reject(err)
|
||
|
}
|
||
|
return resolve(ms)
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
async setExposure (exposure, cb) {
|
||
|
return new Promise ((resolve, reject) => {
|
||
|
const timeStart = +new Date()
|
||
|
const url = `${this._baseUrl}/exposure?exposure=${exposure}`
|
||
|
//console.log(url)
|
||
|
return req(url, (err, res, body) => {
|
||
|
let ms = (+new Date()) - timeStart
|
||
|
if (err) {
|
||
|
return reject(err)
|
||
|
}
|
||
|
return resolve(ms)
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
connect (cb) {
|
||
|
const timeStart = +new Date()
|
||
|
const url = `${this._baseUrl}/status`
|
||
|
const opts = {
|
||
|
method : 'GET',
|
||
|
uri : url,
|
||
|
timeout: 5000
|
||
|
}
|
||
|
|
||
|
req(opts, (err, res, body) => {
|
||
|
let ms = (+new Date()) - timeStart
|
||
|
if (err) {
|
||
|
//console.error(err)
|
||
|
return cb(err, ms)
|
||
|
}
|
||
|
cb(null, ms, body)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = Intval
|