1angular.module('AboShopApp').factory('TbsWS', function($http, $log, $q, $rootScope, $analytics, $filter, $localStorage, $timeout, $location, Auth, commonConfig) { 2 let factory = {}; 3 4 function isObject(A) { 5 if( (typeof A === "object") && (A !== null) ){ 6 return true; 7 } 8 return false; 9 } 10 11 factory = { 12 JETON_ERROR : "error", 13 JETON_SUCCESS : "success", 14 call: function call(service,scope,datas,captcha) { 15 return Auth.call(service,scope,datas,captcha); 16 }, 17 18 callExterne : function callExterne(url, datas){ 19 return Auth.callExterne(url, datas); 20 }, 21 22 getJson: function getJson(url) { 23 let deferred = $q.defer(); 24 $http.defaults.useXDomain = true; 25 $http( { 26 method: 'GET', 27 url : url+"?v="+commonConfig.forceversion, 28 headers: { 'Content-Type': 'application/x-www-form-urlencoded', 29 'Cache-Control': 'no-cache', 30 'Accept': 'application/json; charset=utf-8'} 31 } 32 ).success(function(data) { 33 if(isObject(data)){ 34 deferred.resolve(data); 35 } else { 36 let erreur = "Erreur json introuvable ou pas bien formatee : "+url; 37 console.error(erreur); 38 deferred.reject(erreur); 39 } 40 }).error(function(error) { 41 deferred.reject(error); 42 }); 43 return deferred.promise; 44 }, 45 46 getScopeEditor: function getScopeEditor(){ 47 let deferred = $q.defer(); 48 Auth.getScopeEditor().then(function(scope){ 49 if(scope.key) { 50 console.log("lecture du scope=" + scope.value); 51 //On force le bon scope 52 commonConfig.scope = scope.value; 53 CONFIG_ABOSHOP.scope = scope.value; 54 commonConfig.serveurcible.url = CONFIG_ABOSHOP[commonConfig.scope + commonConfig.target]; 55 deferred.resolve(true); 56 } else { 57 deferred.reject(); 58 } 59 }, function(error){ 60 deferred.reject(error); 61 }); 62 return deferred.promise; 63 }, 64 65 refreshConnexion: function refreshConnexion(deferred){ 66 let factoryLocal = this; 67 68 $rootScope.displaymessage = false; 69 let initconnexion = deferred; 70 if(initconnexion === undefined){ 71 initconnexion = $q.defer(); 72 } 73 74 if(factory.refreshConnexionInProgress){ 75 //On tente de synchronizer les demandes lorsque un login est en cours 76 let myVar = setInterval(function(){ wakeUp(); }, 500); 77 78 function wakeUp() { 79 if(!factory.refreshConnexionInProgress){ 80 myStopFunction(); 81 } 82 } 83 84 function myStopFunction() { 85 clearInterval(myVar); 86 factoryLocal.refreshConnexion(initconnexion); 87 } 88 } else { 89 factory.refreshConnexionInProgress=true; 90 91 //Si j'ai un cookie token, je tente de m'autoconnecter 92 //Dans tous les cas, le cookie sera supprime en sortie de methode 93 //Si la connexion a reussi le token sera conserve dans le localStorage 94 //console.log("check cookie exist"); 95 Auth.isCookieTokenExist().then( 96 function(data){ 97 if(data.token !== undefined && data.token != ""){ 98 //On recupere les informations via le token actif 99 Auth.loginFromCookie(data.token).then(function(){ 100 initconnexion.resolve(true); 101 }, function(error){ 102 Auth.processError(error,true); 103 initconnexion.reject(error); 104 factory.refreshConnexionInProgress=false; 105 }); 106 } else if(!Auth.isValidConnexion(data.token)){ 107 if(Auth.isClientConnecte()){ 108 $location.path('/common/logout'); 109 } else { 110 Auth.login({}).then(function(){ 111 initconnexion.resolve(true); 112 factory.refreshConnexionInProgress=false; 113 }, function(error){ 114 Auth.processError(error,true); 115 initconnexion.reject(error); 116 factory.refreshConnexionInProgress=false; 117 });
118 } 119 } else { 120 if($localStorage[commonConfig.currentInstance.keylogin].access_token !== undefined){ 121 $http.defaults.headers.common[commonConfig.authentificationheader] = 'Bearer ' + $localStorage[commonConfig.currentInstance.keylogin].access_token ; 122 } 123 124 $rootScope.user = $localStorage[commonConfig.currentInstance.keylogin].user; 125 126 //Cette methode ne doit pas declencher derreur 127 //Si une error survient, on retente un login 128 $rootScope.noerror = true; 129 let ob = {}; 130 if(commonConfig.forcetimeoutalive !== undefined){ 131 ob.forcetimeout = commonConfig.forcetimeoutalive; 132 } 133 factoryLocal.call('alive','public',ob).then( 134 function(data){ 135 $rootScope.noerror=false; 136 if(data && data.message === "alive"){ 137 initconnexion.resolve(true); 138 factory.refreshConnexionInProgress=false; 139 } else if(data && data.message === "administration"){ 140 $location.path('message/administration'); 141 } else { 142 Auth.login({}).then(function(){ 143 initconnexion.resolve(true); 144 factory.refreshConnexionInProgress=false; 145 }, function(error){ 146 Auth.processError(error,true); 147 initconnexion.reject(error); 148 factory.refreshConnexionInProgress=false; 149 }); 150 } 151 } 152 ,function(error) { 153 let stop = false; 154 stop = Auth.processError(error,false); 155 if(stop){ 156 if(Auth.isClientConnecte()){ 157 Auth.setClientWasConnecte(true); 158 } 159 160 Auth.login({}).then(function(){ 161 if(Auth.clientWasConnecte()){ 162 $rootScope.goPage(undefined, 'common/logout'); 163 } 164 initconnexion.resolve(true); 165 factory.refreshConnexionInProgress=false; 166 }, function(error){ 167 stop = Auth.processError(error,true); 168 initconnexion.reject(error); 169 factory.refreshConnexionInProgress=false; 170 }); 171 } 172 } 173 ); 174 } 175 } 176 ); 177 } 178 179 return initconnexion.promise; 180 }, 181 182 getCountries : function getCountries(){ 183 let deferred = $q.defer(); 184 this.call('getcountries/'+$rootScope.preferredLanguage,'public').then( 185 function(listpays){ 186 let p,ob,pays=[]; 187 188 for(p in listpays){ 189 ob = {}; 190 ob.value = listpays[p]; 191 if($rootScope.preferredLanguage == 'fr'){ 192 ob.label = listpays[p].nomTerritoire; 193 } else { 194 ob.label = listpays[p].nomTerritoireUs; 195 } 196 pays.push(ob); 197 } 198 199 ob = undefined; 200 let language = 'us'; 201 if($rootScope.preferredLanguage == 'fr'){ 202 language = $rootScope.preferredLanguage; 203 } 204 if(pays.length > 0 && commonConfig.domtom[language] !== undefined && commonConfig.domtom[language].length > 0){ 205 for(let i = 0; i < pays.length;i++){ 206 if(pays[i].value.codeIso == 'FR'){ 207 ob = pays[i]; 208 break; 209 } 210 } 211 let newOb; 212 if(ob !== undefined){ 213 for(i = 0; i < commonConfig.domtom[language].length;i++){ 214 newOb = {}; 215 newOb.value = ob; 216 newOb.label = commonConfig.domtom[language][i].toUpperCase(); 217 pays.push(newOb); 218 } 219 } 220 } 221 222 pays = _.sortBy(pays, function(o) { return o.label; }); 223 deferred.resolve(pays); 224 } 225 ,function(error) { 226 console.error(error); 227 deferred.reject({}); 228 } 229 ); 230 return deferred.promise; 231 }, 232 233 getCountriesByDeliveryZone : function getCountriesByDeliveryZone(zones){ 234 let deferred = $q.defer(), 235 params={}, 236 zoneStr=[]; 237 238 if(zones !== undefined && zones.length > 0){ 239 for(p in zones){ 240 zoneStr.push(zones[p].codeZonePort); 241 } 242 } 243 params.array = zoneStr; 244 this.call('getcountriesfromzonelist/'+$rootScope.preferredLanguage,'public',params).then( 245 function(listpays){ 246 let p,ob,pays=[]; 247 248 for(p in listpays){ 249 ob = {}; 250 ob.value = listpays[p]; 251 ob.translate = false; 252 if($rootScope.preferredLanguage == 'fr'){ 253 ob.label = listpays[p].nomTerritoire; 254 } else { 255 ob.label = listpays[p].nomTerritoireUs; 256 } 257 pays.push(ob); 258 } 259 260 pays = _.sortBy(pays, function(o) { return o.label; }); 261 deferred.resolve(pays); 262 } 263 ,function(error) { 264 console.error(error); 265 deferred.reject({}); 266 } 267 ); 268 return deferred.promise; 269 }, 270 271 getZones : function getZones(zones){ 272 let deferred = $q.defer(), 273 params={}, 274 zoneStr=[]; 275 276 if(zones && zones !== undefined && zones.length > 0){ 277 for(p in zones){ 278 zoneStr.push(zones[p].codeZonePort); 279 } 280 } else { 281 zoneStr.push("nozone"); 282 } 283 284 params.array = zoneStr; 285 this.call('getzoneslist/'+$rootScope.preferredLanguage,'public',params).then( 286 function(listzones){ 287 let z,ob,zones=[]; 288 289 for(z in listzones){ 290 ob = {}; 291 ob.value = listzones[z]; 292 ob.label = listzones[z].libZonePort; 293 zones.push(ob); 294 } 295 296 zones = _.sortBy(zones, function(o) { return o.label; }); 297 deferred.resolve(zones); 298 } 299 ,function(error) { 300 console.error(error); 301 deferred.reject({}); 302 } 303 ); 304 return deferred.promise; 305 }, 306 canAccess : function canAccess(){ 307 let deferred = $q.defer(); 308 if(commonConfig.privateshop){ 309 $rootScope.privatePage=true; 310 this.call('isauthorized','private').then( 311 function(success){ 312 deferred.resolve(); 313 } 314 ,function(error) { 315 deferred.reject(); 316 } 317 ); 318 } else { 319 deferred.resolve(); 320 } 321 return deferred.promise; 322 }, 323 canAccessJeton : function canAccessJeton(jeton){ 324 let deferred = $q.defer(); 325 this.call('validatejeton/' + jeton,'public').then( 326 function(result){ 327 if(result && result.key === "validatejeton"){ 328 let res = result.value.split("##"); 329 if(res.length == 2 && res[0] === factory.JETON_ERROR) { 330 deferred.resolve({error: true, data: res[1]}); 331 } else if(res.length == 2 && res[0] === factory.JETON_SUCCESS) { 332 deferred.resolve({error: false, data : res[1]}); 333 } else { 334 deferred.resolve({error: true, data: undefined}); 335 } 336 } else { 337 deferred.resolve({error: true, data: undefined}); 338 } 339 } 340 ,function(error) { 341 deferred.resolve({error: true, data: undefined}); 342 } 343 ); 344 return deferred.promise; 345 }, 346 getUrlHome : function getUrlHome(){ 347 let ob = {}; 348 ob.url = "/"; 349 return ob; 350 }, 351 addError : function addError(exception){ 352 let error = {}; 353 if( exception === undefined) { 354 error.message = "Exception undefined"; 355 error.stack = "No stack"; 356 } else { 357 error.message = exception.message; 358 error.stack = exception.stack; 359 } 360 361 error.target = commonConfig.target; 362 error.url = document.location.href; 363 error.userAgent = navigator.userAgent; 364 error.ip = "#IP#"; 365 366 $rootScope.errors.push(error); 367 }, 368 tryLogErrors : function tryLogErrors(){ 369 try { 370 if($rootScope.errors){ 371 //On nenvoie que les messages uniques 372 $rootScope.errors = _.uniq($rootScope.errors, x => x.message); 373 for(let i = 0; i < $rootScope.errors.length;i++){ 374 let data = {}; 375 data.message = JSON.stringify($rootScope.errors[i]); 376 factory.refreshConnexion().then( 377 function() { 378 $rootScope.noerroronlog = true; 379 factory.call('log','public', data).then(function(result){ 380 $rootScope.noerroronlog = false; 381 } 382 ,function(error) { 383 $rootScope.noerroronlog = false; 384 });
385 }); 386 } 387 } 388 } catch(e) { 389 //do nothing 390 } 391 $rootScope.errors = []; 392 } 393 }; 394 395 factory.refreshConnexionInProgress = false; 396 return factory; 397});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.