UNPKG

cordova-plugin-hotspot

Version:
825 lines (759 loc) 23.3 kB
/** * @namespace */ var HotSpotPlugin = function () { }; /** * @name Hotspot * @description * @usage * ```typescript * import { Hotspot, Network } from 'ionic-native'; * * * Hotspot.scanWifi().then((networks: Array<Network>) => { * console.log(networks); * }); * * ``` */ export class Hotspot { /** * Check if plugin is available * @param {isAvailableCallback} callback * A callback function which is invoked on success. */ isAvailable(callback:Function):void { if (cordova.platformId === 'android') { callback(true); } else { callback(false); } } /** * @callback getWriteSettingsCallback * @param {boolean} settings false if no write settings, true if write settings are permitted */ /** * get the current write settings of the app * @param {getWriteSettingsCallback} successCB * * @param {errorCallback} errorCB */ getWriteSettings(successCB:Function, errorCB:Function):void { cordova.exec( function (val) { if (val === 1) successCB(true); else successCB(false); }, errorCB, 'HotSpotPlugin', 'getWriteSettings', [] ); } /** * get the current write settings of the app * @param {requestWriteSettingsCallback} callback * A callback function which is invoked on success. * * @param {errorCB} error callback * A callback function to be called when errors occurr */ requestWriteSettings(requestWriteSettingsCallback:Function, errorCB:Function):void { cordova.exec( successCB, errorCB, 'HotSpotPlugin', 'requestWriteSettings', [] ); } /** * Callback which provides the toggle Wifi info * * @callback toggleWifiCallback * @param {boolean} wifiOn, true or false as response,true if wifi ON and false if wifi OFF */ /** * Method to Toggle wifi ON/OFF * * @param {toggleWifiCallback} callback * A callback function which is invoked on success. * @param {errorCallback} errorCB * A callback function to be called when errors occurr */ toggleWifi(callback:Function, errorCB:Function):void { cordova.exec(function (code) { if (code === 1) { callback(true); } else { callback(false); } }, function (err) { errorCB(err); }, "HotSpotPlugin", "toggleWifi", []); } , /** * A callback function to be called when start was successful * * @callback createHotspotCallback */ /** * Create a WiFi Hotspot * * @param {string} ssid * SSID to connect * @param {string} mode * wireless mode (Open, WEP, WPA, WPA_PSK) * @param {string} password * password to use * @param {createHotspotCallback} successCB * A callback function to be called when start was successful * @param {errorCallback} errorCB * A callback function to be called when connection was not successful */ createHotspot: function (ssid, mode, password, successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, "HotSpotPlugin", "createHotspot", [ssid, mode, password]); } , /** * A callback function to be called when start was successful * * @callback startHotspotCallback */ /** * Start a default WiFi Hotspot * * @param {startHotspotCallback} successCB * A callback function to be called when start was successful * @param {errorCallback} errorCB * A callback function to be called when start was not successful */ startHotspot: function (successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, "HotSpotPlugin", "startHotspot", []); } , /** * A callback function to be called when stop was successful * * @callback stopHotspotCallback */ /** * Stop a running default WiFi Hotspot * * @param {stopHotspotCallback} successCB * A callback function to be called when stop was successful * @param {errorCallback} errorCB * A callback function to be called when stop was not successful */ stopHotspot: function (successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, "HotSpotPlugin", "stopHotspot", []); } , /** * A callback function to be called when stop was successful * * @callback isHotspotEnabledCallback * @param {boolean} enabled, true if hotspot is off or false as response */ /** * Checks if hot spot is enabled * @param {isHotspotEnabledCallback} successCB * A callback function with the result * @param {errorCallback} errorCB * A error callback function */ isHotspotEnabled: function (successCB, errorCallback) { cordova.exec(function () { successCB(true); }, function () { successCB(false); }, "HotSpotPlugin", "isHotspotEnabled", []); } , /** * A callback function to be called when connected successful and is * called with an array of JSON objects. * * @callback getAllHotspotDevicesCallback * @param {Array} of objects: * [{ * ip, * mac * }] */ /** * Get all connected devices * @param {getAllHotspotDevicesCallback} * A callback function when hotspot connection is active and info was rad. * @param {errorCallback} errorCB * An error callback */ getAllHotspotDevices: function (successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, "HotSpotPlugin", "getAllHotspotDevices", []); } , /** * A callback function to be called when connected successful * * @callback connectToWifiCallback */ /** * Connect to a WiFi network * * @param {string} ssid * SSID to connect * @param {string} password * password to use * @param {connectToWifiCallback} successCB * A callback function to be called when connected successful * @param {errorCallback} errorCB * A callback function to be called when connection was not successful */ connectToWifi: function (ssid, password, successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, "HotSpotPlugin", "connectToWifi", [ssid, password]); } , /** * A callback function to be called when connected successful * * @callback connectToWifiAuthEncryptCallback */ /** * configure current WiFi Hotspot * * @param {string} ssid * SSID to connect * @param {string} password * password to use * @param {string} authentication * mode use (LEAP, SHARED, OPEN) * @param {string[]} encryption * mode use (CCMP, TKIP, WEP104, WEP40) * @param {connectToWifiAuthEncryptCallback} successCB * A callback function to be called when connected successful * @param {errorCallback} errorCB * A callback function to be called when connection was not successful */ connectToWifiAuthEncrypt: function (ssid, password, authentication, encryption, successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, "HotSpotPlugin", "connectToWifiAuthEncrypt", [ssid, password, authentication, encryption]); } , /** * A callback function to be called when connected successful * * @callback configureHotspotCallback */ /** * configure current WiFi Hotspot * * @param {string} ssid * SSID to connect * @param {string} mode * mode use (Open, WEP, WPA, WPA_PSK) * @param {string} password * password to use * @param {configureHotspotCallback} successCB * A callback function to be called when connected successful * @param {errorCallback} errorCB * A callback function to be called when configuration was not successful */ configureHotspot: function (ssid, mode, password, successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, "HotSpotPlugin", "configureHotspot", [ssid, mode, password]); } , /** * A callback function to be called when connected successful * * @callback addWifiNetworkCallback */ /** * add a WiFi network * * @param {string} ssid * SSID to connect * @param {string} mode * mode use (Open, WEP, WPA, WPA_PSK) * @param {string} password * password to use * @param {function} successCB * A callback function to be called when adding successful * @param {errorCallback} errorCB * A callback function to be called when adding was not successful */ addWifiNetwork: function (ssid, mode, password, successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, "HotSpotPlugin", "addWifiNetwork", [ssid, password, mode]); } , /** * A callback function function to be called when removal was successful * * @callback removeWifiNetworkCallback */ /** * Delete a WiFi network * * @param {string} ssid * SSID to connect * @param {function} successCB * A callback function function to be called when removal was successful * @param {errorCallback} errorCB * A callback function to be called when removal was not successful */ removeWifiNetwork: function (ssid, successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, "HotSpotPlugin", "removeWifiNetwork", [ssid]); } , /** * A callback function to be called with the result * * @callback isConnectedToInternetCallback * @param {boolean} connected, true if device is connected to internet, otherwise false */ /** * Check if connection to internet is active * * @param {isConnectedToInternetCallback} successCB * A callback function to be called with the result * @param {errorCallback} errorCB * An error callback */ isConnectedToInternet: function (successCB, errorCB) { cordova.exec(function () { successCB(true); }, function () { successCB(false); }, 'HotSpotPlugin', 'isConnectedToInternet', []); } , /** * A callback function to be called when connection is done via wifi * * @callback isConnectedToInternetViaWifiCallback * @param {boolean} connected, true if device is connected to internet via WiFi, otherwise false */ /** * Check if connection to internet is active via WiFi * * @param {isConnectedToInternetViaWifiCallback} successCB * A callback function to be called with the result * @param {errorCallback} errorCB * An error callback */ isConnectedToInternetViaWifi: function (successCB, errorCB) { cordova.exec(function () { successCB(true); }, function () { successCB(false); }, 'HotSpotPlugin', 'isConnectedToInternetViaWifi', []); } , /** * A callback function to be called when WiFi is enabled * * @callback isWifiOnCallback * @param {boolean} connected, true if device if WiFi is on, otherwise false */ /** * Check if WiFi is enabled * * @param {isWifiOnCallback} successCB * A callback function with the result * @param {errorCallback} errorCB * An error callback */ isWifiOn: function (successCB, errorCB) { cordova.exec(function () { successCB(true); }, function () { successCB(false); }, 'HotSpotPlugin', 'isWifiOn', []); } , /** * A callback function to be called when WiFi is supported * * @callback isWifiSupportedCallback * @param {boolean} wifiSupported, true if WiFi is supported, otherwise false */ /** * Check if WiFi is supported * * @param {isWifiSupportedCallback} successCB * A callback function with the result * @param {errorCallback} errorCB * An error callback */ isWifiSupported: function (successCB, errorCB) { cordova.exec(function () { successCB(true); }, function () { successCB(false); }, 'HotSpotPlugin', 'isWifiSupported', []); } , /** * A callback function to be called when WiFi is supported * * @callback isWifiDirectSupportedCallback * @param {boolean} wifiSupported, true if WiFi Direct is supported, otherwise false */ /** * Check if WiFi Direct is supported * * @param {isWifiDirectSupportedCallback} successCB * A callback function with the result * @param {errorCallback} errorCB * An error callback */ isWifiDirectSupported: function (successCB, errorCB) { cordova.exec(function () { successCB(true); }, function () { successCB(false); }, 'HotSpotPlugin', 'isWifiDirectSupported', []); } , /** * A callback function to be called when scan is started * * @callback scanWifiCallback * @param {Array} info - An array of JSON objects with the following information: * [{ * SSID, * BSSID, * frequency, * level, * timestamp, * capabilities * }] */ /** * Scan wifi * * @param {scanWifiCallback} successCB * A callback function to be called when scan is started * @param {errorCallback} errorCB * An error callback */ scanWifi: function (successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, 'HotSpotPlugin', 'scanWifi', []); } , /** * A callback function to be called when scan is started * * @callback scanWifiCallback * @param {Array} info - An array of JSON objects with the following information: * [{ * SSID, * BSSID, * frequency, * level, * timestamp, * capabilities * }] */ /** * Scan wifi by level * * @param {scanWifiByLevelCallback} successCB * A callback function to be called when scan is started * @param {errorCallback} errorCB * An error callback */ scanWifiByLevel: function (successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, 'HotSpotPlugin', 'scanWifiByLevel', []); } , /** * A callback function to be called when scan is started * * @callback startWifiPeriodicallyScanCallback */ /** * Start a periodically scan wifi * * @param {long} interval * interval to use * @param {long} duration * duration to use * @param {startWifiPeriodicallyScanCallback} successCB * A callback function to be called when scan is started * @param {errorCallback} errorCB * An error callback */ startWifiPeriodicallyScan: function (interval, duration, successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, 'HotSpotPlugin', 'startWifiPeriodicallyScan', [interval, duration]); } , /** * A callback function to be called when scan is stopped * * @callback stopWifiPeriodicallyScanCallback */ /** * Stop a periodically scan wifi * * @param {stopWifiPeriodicallyScanCallback} successCB * A callback function to be called when scan is stopped * @param {errorCallback} errorCB * An error callback */ stopWifiPeriodicallyScan: function (successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, 'HotSpotPlugin', 'stopWifiPeriodicallyScan', []); } , /** * A callback function to be called when scan is started * * @callback getNetConfigCallback * @param {Object} info - An JSON object with the following information: * { * deviceIPAddress, * deviceMacAddress, * gatewayIPAddress, * gatewayMacAddress * } */ /** * Get network information, e.g Gateway Ip/Mac Device Mac/Ip etc * * @param {getNetConfigCallback} successCB * A callback function to be called with all information * @param {errorCallback} errorCB * An error callback */ getNetConfig: function (successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, 'HotSpotPlugin', 'getNetConfig', []); } , /** * Callback which provides the connection information. * * @callback getConnectionInfoCallback * @param {Object} info - An JSON object with the following information: * { * SSID, * linkSpeed, * IPAddress * } */ /** * Get current connection information, e.g SSID, linkSpeed,IPAddress etc * * @param {getConnectionInfoCallback} successCB * A callback function with the connection details. * @param {errorCallback} errorCB * An error callback */ getConnectionInfo: function (successCB, errorCB) { cordova.exec(successCB, function (err) { errorCB(err); }, 'HotSpotPlugin', 'getConnectionInfo', []); } /** * Callback which provides the ping information. * * @callback pingHostCallback * @param {Object} info - An JSON object with the following information: * { * requestTimeout, * stat: { * requestTimeout, * time, * min, * max, * stddev * } * } */ /** * Ping a host * * @param {string} ip * host IP * @param {pingHostCallback} successCB * A callback function to be called with all information * @param {errorCallback} errorCB * An error callback */ pingHost(ip:string, successCB:Function, errorCB:Function) :void{ var statsPattern = /\s=\s(\d+\.\d+)\/(\d+\.\d+)\/(\d+\.\d+)\/(\d+\.\d+)/; function parseResponse(response) { var stats = response.substring(response.indexOf('min/avg/max/mdev') + 'min/avg/max/mdev'.length); var result = { requestTimeout: response.indexOf('Request timeout') !== -1 }; result.stat = { packetLoss: response.match(/\sreceived,\s(\d+(\.\d+)?)%\spacket\sloss/)[1], time: response.match(/,\stime\s(\d+)ms/)[1] }; if (stats.match(statsPattern)) { result.stat.min = stats.match(statsPattern)[1]; result.stat.max = stats.match(statsPattern)[3]; result.stat.avg = stats.match(statsPattern)[2]; result.stat.stddev = stats.match(statsPattern)[4]; } return result; } cordova.exec(function (response) { if (response && response.length > 0) { successCB(parseResponse(response)); } else { errorCB(parseResponse(response)); } }, function (err) { errorCB(parseResponse(err)); }, 'HotSpotPlugin', 'pingHost', [ip]); } /** * A callback function to be called with all information * * @callback getMacAddressOfHostCallback * @param {String} info - the MAC address */ /** * Get MAC address of host * * @param {string} ip * host IP * @param {getMacAddressOfHost} successCB * A callback function to be called with all information * @param {errorCallback} errorCB * An error callback */ getMacAddressOfHost (ip:string, successCB:Function, errorCB:Function):void { cordova.exec(successCB, function (err) { errorCB(err); }, 'HotSpotPlugin', 'getMacAddressOfHost', [ip]); } /** * A callback function to be called with DNS details * * @callback isDnsLiveCallback * @param {boolean} isDnsLive, true if device is DNS is live, otherwise false */ /** * dnsLive * * @param {string} ip * host IP * @param {function} successCB * A callback function to be called with the result * @param {errorCallback} errorCB * An error callback */ isDnsLive(ip:string, successCB:Function, errorCB:Function):void { cordova.exec(function (code) { if (code === 1) { successCB(true); } else { successCB(false); } }, function (err) { errorCB(err); }, 'HotSpotPlugin', 'dnsLive', [ip]); } /** * A callback function to be called with DNS details * * @callback isPortLiveCallback * @param {boolean} isPortLive, true if device is port is available, otherwise false */ /** * is port available * * @param {string} ip * host IP * @param {isPortLiveCallback} successCB * A callback function to be called with all information * @param {errorCallback} errorCB * An error callback */ isPortLive(ip:string, successCB:Function, errorCB:Function):void { cordova.exec(function (code) { if (code === 1) { successCB(true); } else { successCB(false); } }, errorCB, 'HotSpotPlugin', 'portLive', [ip]); } /** * A callback function to be called with Rooted information * * @callback isRootedCallback * @param {boolean} isRooted, true if device is port is available, otherwise false */ /** * Check Device is Rooted * * @param {isRootedCallback} successCB * A callback function to be called with all information * @param {errorCallback} errorCB * An error callback */ isRooted(successCB:Function, errorCB:Function):void { cordova.exec(function (code) { if (code === 1) { successCB(true); } else { successCB(false); } }, errorCB, 'HotSpotPlugin', 'checkRoot', []); } } module.exports = new HotSpotPlugin();