Renamed GUI folder in VIEWS
diff --git a/views/ngXosLib/xosHelpers/spec/csrftoken.test.js b/views/ngXosLib/xosHelpers/spec/csrftoken.test.js
new file mode 100644
index 0000000..6a74040
--- /dev/null
+++ b/views/ngXosLib/xosHelpers/spec/csrftoken.test.js
@@ -0,0 +1,20 @@
+'use strict';
+
+describe('The xos.helper module', () => {
+
+ var app, httpProvider;
+
+ beforeEach(module('xos.helpers'));
+ beforeEach(function(){
+ module(function($httpProvider){
+ httpProvider = $httpProvider;
+ });
+ });
+
+
+
+ it('should set SetCSRFToken interceptor', inject(($http) => {
+ expect(httpProvider.interceptors).toContain('SetCSRFToken');
+ }));
+
+});
\ No newline at end of file
diff --git a/views/ngXosLib/xosHelpers/src/services/api.services.js b/views/ngXosLib/xosHelpers/src/services/api.services.js
new file mode 100644
index 0000000..c7384f8
--- /dev/null
+++ b/views/ngXosLib/xosHelpers/src/services/api.services.js
@@ -0,0 +1,32 @@
+(function() {
+ 'use strict';
+
+ angular
+ .module('xos.helpers')
+ .service('XosApi', xosApi)
+ .service('XoslibApi', xoslibApi)
+ .service('HpcApi', hpcApi);
+
+ var xosApiCache, xoslibApiCache, hpcApiCache;
+
+ function xosApi(xos) {
+ if(!xosApiCache){
+ xosApiCache = new xos({domain: ''});
+ }
+ return xosApiCache;
+ }
+
+ function xoslibApi(xoslib) {
+ if(!xoslibApiCache){
+ xoslibApiCache = new xoslib({domain: ''});
+ }
+ return xoslibApiCache;
+ }
+
+ function hpcApi(hpcapi) {
+ if(!hpcApiCache){
+ hpcApiCache = new hpcapi({domain: ''});
+ }
+ return hpcApiCache;
+ }
+})();
diff --git a/views/ngXosLib/xosHelpers/src/services/csrfToken.interceptor.js b/views/ngXosLib/xosHelpers/src/services/csrfToken.interceptor.js
new file mode 100644
index 0000000..283e90d
--- /dev/null
+++ b/views/ngXosLib/xosHelpers/src/services/csrfToken.interceptor.js
@@ -0,0 +1,18 @@
+(function() {
+ 'use strict';
+
+ angular
+ .module('xos.helpers')
+ .factory('SetCSRFToken', setCSRFToken);
+
+ function setCSRFToken($cookies) {
+ return {
+ request: function(request){
+ if(request.method !== 'GET'){
+ request.headers['X-CSRFToken'] = $cookies.get('xoscsrftoken');
+ }
+ return request;
+ }
+ };
+ }
+})();
diff --git a/views/ngXosLib/xosHelpers/src/services/noHyperlinks.interceptor.js b/views/ngXosLib/xosHelpers/src/services/noHyperlinks.interceptor.js
new file mode 100644
index 0000000..6059f99
--- /dev/null
+++ b/views/ngXosLib/xosHelpers/src/services/noHyperlinks.interceptor.js
@@ -0,0 +1,18 @@
+(function() {
+ 'use strict';
+
+ angular
+ .module('xos.helpers')
+ .factory('NoHyperlinks', noHyperlinks);
+
+ function noHyperlinks() {
+ return {
+ request: function(request){
+ if(request.url.indexOf('.html') === -1){
+ request.url += '?no_hyperlinks=1';
+ }
+ return request;
+ }
+ };
+ }
+})();
\ No newline at end of file
diff --git a/views/ngXosLib/xosHelpers/src/xosHelpers.module.js b/views/ngXosLib/xosHelpers/src/xosHelpers.module.js
new file mode 100644
index 0000000..1f73be1
--- /dev/null
+++ b/views/ngXosLib/xosHelpers/src/xosHelpers.module.js
@@ -0,0 +1,22 @@
+(function() {
+ 'use strict';
+
+ angular
+ .module('xos.helpers',[
+ 'ngCookies',
+ 'xos.xos',
+ 'xos.hpcapi',
+ 'xos.xoslib'
+ ])
+ .config(config);
+
+ function config($httpProvider, $interpolateProvider, $resourceProvider) {
+ $httpProvider.interceptors.push('SetCSRFToken');
+
+ $interpolateProvider.startSymbol('{$');
+ $interpolateProvider.endSymbol('$}');
+
+ // NOTE http://www.masnun.com/2013/09/18/django-rest-framework-angularjs-resource-trailing-slash-problem.html
+ $resourceProvider.defaults.stripTrailingSlashes = false;
+ }
+})();
\ No newline at end of file