UNPKG

automizy-js-api

Version:

JavaScript API library for Automizy Marketing Automation software

293 lines (273 loc) 10.1 kB
define([ 'automizyApi/core', 'automizyApi/functions/cookie', 'automizyApi/functions/date' ], function () { var Token = function () { var t = this; t.d = { access_token: $AA.cookie.get('AutomizyApiAccessToken') || false, refresh_token: $AA.cookie.get('AutomizyApiRefreshToken') || false, client_id: $AA.cookie.get('AutomizyApiClientId') || false, username: $AA.cookie.get('AutomizyApiUsername') || false, expires: parseInt($AA.cookie.get('AutomizyApiExpires')) || 0, scope: $AA.cookie.get('AutomizyApiScope') || null, token_type: $AA.cookie.get('AutomizyApiTokenType') || "Bearer", error:function(){}, success:function(){}, loginError:function(){}, loginAjaxError:function(){}, loginAjaxSuccess:function(){}, refreshAjaxError:function(){}, refreshAjaxSuccess:function(){}, refreshLoopTimeout:false }; }; var p = Token.prototype; p.refreshLoop = function(){ var t = this; if ($AA.date.timestamp() > parseInt($AA.cookie.get('AutomizyApiExpires')) - 120) { t.refresh(); } clearTimeout(t.d.refreshLoopTimeout); t.d.refreshLoopTimeout = setTimeout(function(){ t.refreshLoop(); }, 30000); }; p.refreshLoopStop = function(){ var t = this; clearTimeout(t.d.refreshLoopTimeout); }; p.refreshLoopStart = function(){ var t = this; t.refreshLoop(); }; p.refreshLoopRestart = function(){ var t = this; t.refreshLoopStop(); t.refreshLoopStart(); }; p.loggedIn = function(loggedIn){ var t = this; if (typeof loggedIn !== 'undefined') { t.d.loggedIn = $AA.parseBoolean(loggedIn); return t; } return t.d.loggedIn; }; p.get = function () { var t = this; if($AA.cookie.get('AutomizyApiAccessToken') !== false){ t.loggedIn(true); t.refreshLoopRestart(); }else{ t.refreshLoopStop(); t.loggedIn(false); } return $AA.cookie.get('AutomizyApiAccessToken'); }; p.set = function (token) { var t = this; if(typeof token.access_token !== 'undefined'){ t.d.access_token = token.access_token; $AA.cookie.set('AutomizyApiAccessToken', token.access_token, t.cookieAttributes()) } if(typeof token.expires_in !== 'undefined'){ t.d.expires = $AA.date.timestamp() + parseInt(token.expires_in) - 10; $AA.cookie.set('AutomizyApiExpires', t.d.expires, t.cookieAttributes()) } if(typeof token.refresh_token !== 'undefined'){ t.d.refresh_token = token.refresh_token; $AA.cookie.set('AutomizyApiRefreshToken', token.refresh_token, t.cookieAttributes()) } if(typeof token.scope !== 'undefined'){ t.d.scope = token.scope; if(t.d.scope !== false)$AA.cookie.set('AutomizyApiScope', token.scope, t.cookieAttributes()); } if(typeof token.token_type !== 'undefined'){ t.d.token_type = token.token_type; $AA.cookie.set('AutomizyApiTokenType', token.token_type, t.cookieAttributes()) } if(typeof token.client_id !== 'undefined'){ t.d.client_id = token.client_id; $AA.cookie.set('AutomizyApiClientId', token.client_id, t.cookieAttributes()) } if(typeof token.username !== 'undefined'){ t.d.username = token.username; $AA.cookie.set('AutomizyApiUsername', token.username, t.cookieAttributes()) } return true; }; p.refresh = function () { var t = this; return $.ajax({ type: "POST", url: $AA.u.refreshPhp, data: { refresh_token: $AA.cookie.get('AutomizyApiRefreshToken'), username: $AA.cookie.get('AutomizyApiUsername') }, success: function (data, textStatus, jqXHR) { t.set(data); t.loggedIn(true); t.refreshAjaxSuccess.apply(t, [data, textStatus, jqXHR]); }, error: function(jqXHR, textStatus, errorThrown){ t.refreshAjaxError.apply(t, [jqXHR, textStatus, errorThrown]); } }); }; p.error = function(error){ var t = this; if (typeof error === 'function') { t.d.error = error; return t; } return t.d.error; }; p.success = function(success){ var t = this; if (typeof success === 'function') { t.d.success = success; return t; } return t.d.success; }; p.loginError = function(loginError){ var t = this; if (typeof loginError === 'function') { t.d.loginError = loginError; return t; } return t.d.loginError; }; p.loginAjaxError = function(loginAjaxError){ var t = this; if (typeof loginAjaxError === 'function') { t.d.loginAjaxError = loginAjaxError; return t; } return t.d.loginAjaxError; }; p.loginAjaxSuccess = function(loginAjaxSuccess){ var t = this; if (typeof loginAjaxSuccess === 'function') { t.d.loginAjaxSuccess = loginAjaxSuccess; return t; } return t.d.loginAjaxSuccess; }; p.refreshAjaxError = function(refreshAjaxError){ var t = this; if (typeof refreshAjaxError === 'function') { t.d.refreshAjaxError = refreshAjaxError; return t; } return t.d.refreshAjaxError; }; p.refreshAjaxSuccess = function(refreshAjaxSuccess){ var t = this; if (typeof refreshAjaxSuccess === 'function') { t.d.refreshAjaxSuccess = refreshAjaxSuccess; return t; } return t.d.refreshAjaxSuccess; }; p.passwordLogin = function (obj) { var t = this; var obj = obj || {}; obj.username = obj.username || false; obj.password = obj.password || false; if (obj.username === false || obj.password === false) { t.loginError.apply(t, ['The username and password must be provide!']); return false; } $AA.cookie.set('AutomizyApiUsername', obj.username, t.cookieAttributes()); return $.ajax({ type: "POST", url: $AA.u.loginPhp, data: { username: obj.username, password: obj.password }, success: function (data, textStatus, jqXHR) { t.set(data); t.loggedIn(true); t.refreshLoopRestart(); t.d.loginAjaxSuccess.apply(t, [data, textStatus, jqXHR]); }, error: function(jqXHR, textStatus, errorThrown){ t.d.loginAjaxError.apply(t, [jqXHR, textStatus, errorThrown]); } }); }; p.credentialsLogin = function (obj) { var t = this; var obj = obj || {}; obj.clientId = obj.clientId || false; obj.clientSecret = obj.clientSecret || false; if (obj.clientId === false || obj.clientSecret === false) { t.loginError.apply(t, ['The clientId and clientSecret must be provide!']); return false; } return $.ajax({ type: "POST", url: $AA.u.oauth, data: { grant_type: "client_credentials", client_id: obj.clientId, client_secret: obj.clientSecret }, success: function (data, textStatus, jqXHR) { t.set(data); t.loggedIn(true); t.refreshLoopRestart(); t.d.loginAjaxSuccess.apply(t, [data, textStatus, jqXHR]); }, error: function(jqXHR, textStatus, errorThrown){ t.d.loginAjaxError.apply(t, [jqXHR, textStatus, errorThrown]); } }); }; p.login = function (obj) { var t = this; var obj = obj || {}; if (typeof obj.username !== 'undefined' && typeof obj.password !== 'undefined') { return t.passwordLogin(obj); }else if (typeof obj.clientId !== 'undefined' && typeof obj.clientSecret !== 'undefined') { return t.credentialsLogin(obj); } else { t.loginError.apply(t, ['Missing parameters!']); return false; } }; p.cookieAttributes = function(){ var obj = {}; if(location.href.indexOf('.protopmail.com') >= 0){ obj.domain = '.protopmail.com'; }else if(location.href.indexOf('.automizy.com') >= 0){ obj.domain = '.automizy.com'; } return obj; }; p.logout = function(){ var t = this; t.loggedIn(false); t.refreshLoopStop(); t.d.access_token = false; t.d.refresh_token = false; t.d.username = false; t.d.client_id = false; t.d.expires = 0; $AA.cookie.remove('AutomizyApiAccessToken', t.cookieAttributes()); $AA.cookie.remove('AutomizyApiRefreshToken', t.cookieAttributes()); $AA.cookie.remove('AutomizyApiClientId', t.cookieAttributes()); $AA.cookie.remove('AutomizyApiExpires', t.cookieAttributes()); $AA.cookie.remove('AutomizyApiUsername', t.cookieAttributes()); }; $AA.m.Token = Token; $AA.d.token = new Token(); $AA.token = function () { return $AA.d.token; } });