48 lines
965 B
TypeScript
48 lines
965 B
TypeScript
|
import * as plugins from './smartnetwork.plugins'
|
||
|
|
||
|
export class ISpeedtestData {
|
||
|
speeds: {
|
||
|
download: number
|
||
|
upload: number
|
||
|
originalDownload: number
|
||
|
originalUpload: number
|
||
|
}
|
||
|
client: {
|
||
|
ip: string
|
||
|
lat: number
|
||
|
lon: number
|
||
|
isp: string
|
||
|
isprating: string
|
||
|
rating: number
|
||
|
ispdlavg: number
|
||
|
ispulavg: number
|
||
|
}
|
||
|
server: {
|
||
|
host: string,
|
||
|
lat: number,
|
||
|
lon: number,
|
||
|
location: string,
|
||
|
country: string,
|
||
|
cc: string,
|
||
|
sponsor: string,
|
||
|
distance: number,
|
||
|
distanceMi: number,
|
||
|
ping: number,
|
||
|
id: string
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export class SmartNetwork {
|
||
|
async getSpeed (measurementTime = 5000): Promise<ISpeedtestData> {
|
||
|
let done = plugins.smartq.defer<ISpeedtestData>()
|
||
|
const test = plugins.speedtestNet({ maxTime: measurementTime });
|
||
|
test.on('data', data => {
|
||
|
done.resolve(data)
|
||
|
});
|
||
|
test.on('error', err => {
|
||
|
done.reject(err)
|
||
|
});
|
||
|
return await done.promise
|
||
|
}
|
||
|
}
|