mirror of
https://github.com/skydiver/ewelink-api.git
synced 2025-12-24 14:31:53 +01:00
* Added arpTableSolver (#18) * Added arpTableSolver * fix package import * linting class * changed arp library * refactor arp class * using arpping fork * refactor arpTableSolver class * Added Zero Conf functionality (LAN mode) (#46) * added crypto-js * zeroconf helper functions * zeroconf update payload * new method to save devices cache file * class renamed * refactor Zeroconf class * return cached device if exists * moved method to get local ip address * fix mac addresses without leading zeroes * refactor Zeroconf class * using new zeroconf functionality * zeroconf working with single and multichannel devices * save device mixin enhancement * working on zeroconf test cases * catch errors on filesystem methods * zeroconf: added extra test cases * better error handling * zeroconf: 100% code coverage * removed deprecated login method * updates on credentials file * version bump * Docs for v2.0 (#52) * added v1 docs * added zeroconf docs * updated readme * docs updated * removed zeroconf article warning * updated vscode config Co-authored-by: Luis Llamas <luisllamas@hotmail.com>
50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
const rp = require('request-promise');
|
|
|
|
const { _get } = require('../../lib/helpers');
|
|
const { credentialsPayload } = require('../../lib/payloads');
|
|
const { makeAuthorizationSign } = require('../../lib/ewelink-helper');
|
|
|
|
const getCredentialsMixin = {
|
|
/**
|
|
* Returns user credentials information
|
|
*
|
|
* @returns {Promise<{msg: string, error: *}>}
|
|
*/
|
|
async getCredentials() {
|
|
const body = credentialsPayload({
|
|
email: this.email,
|
|
password: this.password,
|
|
});
|
|
|
|
let response = await rp({
|
|
method: 'POST',
|
|
uri: `${this.getApiUrl()}/user/login`,
|
|
headers: { Authorization: `Sign ${makeAuthorizationSign(body)}` },
|
|
body,
|
|
json: true,
|
|
});
|
|
|
|
const error = _get(response, 'error', false);
|
|
const region = _get(response, 'region', false);
|
|
|
|
if (error && [400, 401, 404].indexOf(parseInt(error)) !== -1) {
|
|
return { error, msg: 'Authentication error' };
|
|
}
|
|
|
|
if (error && parseInt(error) === 301 && region) {
|
|
if (this.region !== region) {
|
|
this.region = region;
|
|
response = await this.getCredentials();
|
|
return response;
|
|
}
|
|
return { error, msg: 'Region does not exist' };
|
|
}
|
|
|
|
this.apiKey = _get(response, 'user.apikey', '');
|
|
this.at = _get(response, 'at', '');
|
|
return response;
|
|
},
|
|
};
|
|
|
|
module.exports = getCredentialsMixin;
|