6bfa69926338a2f8d1cada8767680ec63ab5c99b
[motion2.git] / server / api / intZohoAccount / intZohoAccount.model.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x28c7=['then','parse','refresh_token','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','host','/oauth/v2/token','refreshToken','lodash','util','../../config/logger','moment','bluebird','path','rimraf','./intZohoAccount.attributes','exports','define','ZohoAccount','changed','zone','serverUrl','clientSecret','code','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','clientId','application/x-www-form-urlencoded'];(function(_0x2e477e,_0x51e163){var _0x13f742=function(_0x1f4df6){while(--_0x1f4df6){_0x2e477e['push'](_0x2e477e['shift']());}};_0x13f742(++_0x51e163);}(_0x28c7,0x1a8));var _0x728c=function(_0x16560e,_0x1f4374){_0x16560e=_0x16560e-0x0;var _0x189027=_0x28c7[_0x16560e];return _0x189027;};'use strict';var _=require(_0x728c('0x0'));var util=require(_0x728c('0x1'));var logger=require(_0x728c('0x2'))('api');var moment=require(_0x728c('0x3'));var BPromise=require(_0x728c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x728c('0x5'));var rimraf=require(_0x728c('0x6'));var config=require('../../config/environment');var attributes=require(_0x728c('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x728c('0x8')]=function(_0x2f40e5,_0x3754ac){return _0x2f40e5[_0x728c('0x9')](_0x728c('0xa'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1378dc,_0x40b9ca,_0x4bd3e2){if(_0x1378dc[_0x728c('0xb')](_0x728c('0xc'))||_0x1378dc[_0x728c('0xb')](_0x728c('0xd'))||_0x1378dc[_0x728c('0xb')]('clientId')||_0x1378dc[_0x728c('0xb')](_0x728c('0xe'))||_0x1378dc[_0x728c('0xb')](_0x728c('0xf'))||_0x1378dc[_0x728c('0xb')]('host')){var _0x2f7f50,_0x1d488b;_0x2f7f50=_0x1378dc[_0x728c('0xd')];var _0x2c23e6=_0x2f7f50[_0x728c('0x10')](-0x1);if(_0x2c23e6==='/'||_0x2c23e6==='\x5c'||_0x2c23e6===':'){_0x2f7f50=_0x2f7f50[_0x728c('0x11')](0x0,_0x2f7f50[_0x728c('0x12')](_0x2c23e6));}switch(_0x1378dc[_0x728c('0xc')]){case'US':_0x1d488b=_0x728c('0x13');break;case'AU':_0x1d488b=_0x728c('0x14');break;case'IN':_0x1d488b=_0x728c('0x15');break;case'CN':_0x1d488b=_0x728c('0x16');break;default:_0x1d488b=_0x728c('0x17');break;}var _0x2f9927={'method':_0x728c('0x18'),'uri':_0x1d488b+'/oauth/v2/token','form':{'grant_type':'authorization_code','client_id':_0x1378dc[_0x728c('0x19')],'client_secret':_0x1378dc[_0x728c('0xe')],'redirect_uri':_0x1378dc[_0x728c('0xd')],'code':_0x1378dc[_0x728c('0xf')]},'headers':{'Content-Type':_0x728c('0x1a')}};return rp(_0x2f9927)[_0x728c('0x1b')](function(_0x5af62b){var _0x2f4fb2=JSON[_0x728c('0x1c')](_0x5af62b);if(_0x2f4fb2['refresh_token']){_0x1378dc['refreshToken']=_0x2f4fb2[_0x728c('0x1d')];logger[_0x728c('0x1e')](util['format'](_0x728c('0x1f'),_0x1378dc[_0x728c('0x20')],_0x1378dc['id']));}else{logger[_0x728c('0x21')](util[_0x728c('0x22')](_0x728c('0x23'),_0x1378dc[_0x728c('0x20')],_0x1378dc['id']),util[_0x728c('0x24')](_0x2f4fb2,{'showHidden':![],'depth':null}));}return _0x4bd3e2(null,_0x40b9ca);})[_0x728c('0x25')](function(_0x1b9f8a){logger['error'](util[_0x728c('0x22')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1378dc['name'],_0x1378dc['id']),util[_0x728c('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x4bd3e2(_0x1b9f8a);});}else{return _0x4bd3e2(null,_0x40b9ca);}},'beforeUpdate':function(_0x572b59,_0x14b91a,_0x15cae7){if(_0x572b59[_0x728c('0xb')](_0x728c('0xc'))||_0x572b59[_0x728c('0xb')](_0x728c('0xd'))||_0x572b59[_0x728c('0xb')](_0x728c('0x19'))||_0x572b59[_0x728c('0xb')](_0x728c('0xe'))||_0x572b59[_0x728c('0xb')](_0x728c('0xf'))||_0x572b59['changed'](_0x728c('0x26'))){var _0x2e8d34,_0x4b4c79;_0x2e8d34=_0x572b59[_0x728c('0xd')];var _0x2d9c93=_0x2e8d34[_0x728c('0x10')](-0x1);if(_0x2d9c93==='/'||_0x2d9c93==='\x5c'||_0x2d9c93===':'){_0x2e8d34=_0x2e8d34[_0x728c('0x11')](0x0,_0x2e8d34['lastIndexOf'](_0x2d9c93));}switch(_0x572b59['zone']){case'US':_0x4b4c79=_0x728c('0x13');break;case'AU':_0x4b4c79='https://accounts.zoho.com.au';break;case'IN':_0x4b4c79=_0x728c('0x15');break;case'CN':_0x4b4c79=_0x728c('0x16');break;default:_0x4b4c79=_0x728c('0x17');break;}var _0x2b16f0={'method':_0x728c('0x18'),'uri':_0x4b4c79+_0x728c('0x27'),'form':{'grant_type':'authorization_code','client_id':_0x572b59['clientId'],'client_secret':_0x572b59[_0x728c('0xe')],'redirect_uri':_0x572b59['serverUrl'],'code':_0x572b59[_0x728c('0xf')]},'headers':{'Content-Type':_0x728c('0x1a')}};return rp(_0x2b16f0)[_0x728c('0x1b')](function(_0x57330f){var _0x29ee16=JSON[_0x728c('0x1c')](_0x57330f);if(_0x29ee16['refresh_token']){_0x572b59[_0x728c('0x28')]=_0x29ee16['refresh_token'];logger[_0x728c('0x1e')](util['format'](_0x728c('0x1f'),_0x572b59[_0x728c('0x20')],_0x572b59['id']));}else{logger[_0x728c('0x21')](util[_0x728c('0x22')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x572b59[_0x728c('0x20')],_0x572b59['id']),util['inspect'](_0x29ee16,{'showHidden':![],'depth':null}));}return _0x15cae7(null,_0x14b91a);})[_0x728c('0x25')](function(_0x2a6946){logger['error'](util[_0x728c('0x22')](_0x728c('0x23'),_0x572b59['name'],_0x572b59['id']),util[_0x728c('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x15cae7(_0x2a6946);});}else{return _0x15cae7(null,_0x14b91a);}}}});};