PageSourceSearch

https://boutique.tetu.com/core/aboshop/ws.factory.js?v=

js tetu.com collected 2026-10-02 03:56:14 UTC 13,102 bytes, 397 lines download raw bytes

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.