170 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			170 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Note: we make sure that oauth3 loads first just so that we know the PromiseA
							 | 
						||
| 
								 | 
							
								// implementation exists as an angular-style promise before any of the modules
							 | 
						||
| 
								 | 
							
								// (all of which use promises) are instantiated
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// DaplieApiStorage / CannedStorage
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								angular
							 | 
						||
| 
								 | 
							
								  .module('daplie.storage', ['oauth3'])
							 | 
						||
| 
								 | 
							
								  .service('DaplieApiStorage', [function DaplieApiStorage() {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.log('DEBUG DaplieApiStorage');
							 | 
						||
| 
								 | 
							
								    return window.CannedStorage.create({
							 | 
						||
| 
								 | 
							
								      namespace: 'com.daplie'
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// DaplieApiConfig / Oauth3Config
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								angular
							 | 
						||
| 
								 | 
							
								  .module('daplie.config', ['daplie.storage'])
							 | 
						||
| 
								 | 
							
								  .service('DaplieApiConfig', [
							 | 
						||
| 
								 | 
							
								    '$window'
							 | 
						||
| 
								 | 
							
								  , 'DaplieApiStorage'
							 | 
						||
| 
								 | 
							
								  , function DaplieApiConfig($window, DaplieApiStorage) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.log('DEBUG DaplieApiConfig');
							 | 
						||
| 
								 | 
							
								    return window.Oauth3Config.create({
							 | 
						||
| 
								 | 
							
								      defaults: {
							 | 
						||
| 
								 | 
							
								        libPrefix: 'ng'
							 | 
						||
| 
								 | 
							
								        // TODO this should be grabbed from oauth3.html?action=directives
							 | 
						||
| 
								 | 
							
								                      // i.e. https://daplie.com/connect
							 | 
						||
| 
								 | 
							
								      , providerUri: 'https://' + window.location.host + window.location.pathname
							 | 
						||
| 
								 | 
							
								      , apiBaseUri: 'https://oauth3.org'
							 | 
						||
| 
								 | 
							
								      , devProviderUri: 'https://'  + window.location.host + window.location.pathname
							 | 
						||
| 
								 | 
							
								      , devApiBaseUri: 'https://oauth3.org'
							 | 
						||
| 
								 | 
							
								      , appId: null
							 | 
						||
| 
								 | 
							
								      , appUri: window.location.protocol + '//' + window.location.host + window.location.pathname
							 | 
						||
| 
								 | 
							
								        // TODO fix this
							 | 
						||
| 
								 | 
							
								      , apiPrefix: '/api/org.oauth3.provider'
							 | 
						||
| 
								 | 
							
								      //, apiPrefix: '/api/org.oauth3.credentials'
							 | 
						||
| 
								 | 
							
								        //< not used yet
							 | 
						||
| 
								 | 
							
								      //, credentialsPrefix: '/api/org.oauth3.credentials'
							 | 
						||
| 
								 | 
							
								      , consumerPrefix: '/api/org.oauth3.consumer'
							 | 
						||
| 
								 | 
							
								      , providerPrefix: '/api/org.oauth3.provider'
							 | 
						||
| 
								 | 
							
								        //>
							 | 
						||
| 
								 | 
							
								      , refreshWait: (15 * 60 * 1000)
							 | 
						||
| 
								 | 
							
								      , uselessWait: Infinity // (30 * 24 * 60 * 60 * 1000)
							 | 
						||
| 
								 | 
							
								      // note: host includes 'port' when port is non-80 / non-443
							 | 
						||
| 
								 | 
							
								      , invokeLogin: function () {
							 | 
						||
| 
								 | 
							
								          window.alert("override `DaplieApiConfig.invokeLogin` with a function that shows a login dialog,"
							 | 
						||
| 
								 | 
							
								            + " calls DaplieApiSession.login on click, and returns a promise in that chain."
							 | 
						||
| 
								 | 
							
								            + " TODO document on website");
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    , storage: DaplieApiStorage
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// DaplieApiCache / JohnnyCache
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								angular
							 | 
						||
| 
								 | 
							
								  .module('daplie.cache', ['oauth3', 'daplie.storage'])
							 | 
						||
| 
								 | 
							
								  .service('DaplieApiCache', [
							 | 
						||
| 
								 | 
							
								    'DaplieApiConfig'
							 | 
						||
| 
								 | 
							
								  , 'DaplieApiStorage'
							 | 
						||
| 
								 | 
							
								  , function DaplieApiCache(DaplieApiConfig, DaplieApiStorage) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // TODO maybe the refreshWait and uselessWait should be here directly
							 | 
						||
| 
								 | 
							
								    console.log('DEBUG DaplieApiCache');
							 | 
						||
| 
								 | 
							
								    return window.JohnnyCache.create({
							 | 
						||
| 
								 | 
							
								      storage: DaplieApiStorage
							 | 
						||
| 
								 | 
							
								    , config: DaplieApiConfig
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// DaplieApiSession / TherapySession
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								angular
							 | 
						||
| 
								 | 
							
								  .module('daplie.session', ['oauth3', 'daplie.cache', 'daplie.storage', 'daplie.config'])
							 | 
						||
| 
								 | 
							
								  .service('DaplieApiSession', [
							 | 
						||
| 
								 | 
							
								    '$window'
							 | 
						||
| 
								 | 
							
								  , '$timeout'
							 | 
						||
| 
								 | 
							
								  , '$q'
							 | 
						||
| 
								 | 
							
								  , '$http'
							 | 
						||
| 
								 | 
							
								  , 'DaplieApiConfig'
							 | 
						||
| 
								 | 
							
								  , 'DaplieApiStorage'
							 | 
						||
| 
								 | 
							
								  , 'DaplieApiCache'
							 | 
						||
| 
								 | 
							
								  , 'Oauth3'
							 | 
						||
| 
								 | 
							
								  , function DaplieApiSession($window, $timeout, $q, $http
							 | 
						||
| 
								 | 
							
								      , DaplieApiConfig, DaplieApiStorage, DaplieApiCache/*, Oauth3*/) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.log('DEBUG DaplieApiSession');
							 | 
						||
| 
								 | 
							
								    return window.TherapySession.create({
							 | 
						||
| 
								 | 
							
								      namespace: 'com.daplie'
							 | 
						||
| 
								 | 
							
								    , sessionKey: 'session'
							 | 
						||
| 
								 | 
							
								    , cache: DaplieApiCache
							 | 
						||
| 
								 | 
							
								    , config: DaplieApiConfig
							 | 
						||
| 
								 | 
							
								    , usernameMinLength: 4
							 | 
						||
| 
								 | 
							
								    , secretMinLength: 16
							 | 
						||
| 
								 | 
							
								    , invokeLogin: null // fallthru to config.invokeLogin
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// DaplieApiRequest
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								angular
							 | 
						||
| 
								 | 
							
								  .module('daplie.api', ['daplie.cache', 'daplie.config'])
							 | 
						||
| 
								 | 
							
								  .service('DaplieApiRequest', [
							 | 
						||
| 
								 | 
							
								    '$window'
							 | 
						||
| 
								 | 
							
								  , '$timeout'
							 | 
						||
| 
								 | 
							
								  , '$q'
							 | 
						||
| 
								 | 
							
								  , '$http'
							 | 
						||
| 
								 | 
							
								  , 'DaplieApiConfig'
							 | 
						||
| 
								 | 
							
								  , 'DaplieApiCache'
							 | 
						||
| 
								 | 
							
								  , 'DaplieApiSession'
							 | 
						||
| 
								 | 
							
								  , function DaplieApiRequest($window, $timeout, $q, $http, DaplieApiConfig, DaplieApiCache, DaplieApiSession) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.log('DEBUG DaplieApiRequest');
							 | 
						||
| 
								 | 
							
								    return window.DaplieApi.create({
							 | 
						||
| 
								 | 
							
								      config: DaplieApiConfig
							 | 
						||
| 
								 | 
							
								    , cache: DaplieApiCache
							 | 
						||
| 
								 | 
							
								    , session: DaplieApiSession
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Daplie
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								angular
							 | 
						||
| 
								 | 
							
								  .module('daplie', ['oauth3', 'daplie.api', 'daplie.session', 'daplie.cache', 'daplie.storage', 'daplie.config'])
							 | 
						||
| 
								 | 
							
								  .service('DaplieApi', [
							 | 
						||
| 
								 | 
							
								    '$window', 'DaplieApiStorage', 'DaplieApiCache', 'DaplieApiSession', 'DaplieApiRequest', 'DaplieApiConfig'
							 | 
						||
| 
								 | 
							
								  , function ($window, DaplieApiStorage, DaplieApiCache, DaplieApiSession, DaplieApiRequest, DaplieApiConfig) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var ngDaplie = $window.ngDaplie = {};
							 | 
						||
| 
								 | 
							
								    ngDaplie.storage = DaplieApiStorage;
							 | 
						||
| 
								 | 
							
								    ngDaplie.cache = DaplieApiCache;
							 | 
						||
| 
								 | 
							
								    ngDaplie.session = DaplieApiSession;
							 | 
						||
| 
								 | 
							
								    ngDaplie.request = DaplieApiRequest;
							 | 
						||
| 
								 | 
							
								    ngDaplie.config = DaplieApiConfig;
							 | 
						||
| 
								 | 
							
								    //ngDaplie.init = ngDaplie.config.init;
							 | 
						||
| 
								 | 
							
								    ngDaplie.init = function (opts) {
							 | 
						||
| 
								 | 
							
								      console.log('DEBUG init config');
							 | 
						||
| 
								 | 
							
								      console.log(opts);
							 | 
						||
| 
								 | 
							
								      return ngDaplie.config.init(opts).then(function (config) {
							 | 
						||
| 
								 | 
							
								        return ngDaplie.cache.init().then(function () {
							 | 
						||
| 
								 | 
							
								          console.log('DEBUG init complete');
							 | 
						||
| 
								 | 
							
								          console.log(config);
							 | 
						||
| 
								 | 
							
								          return config;
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    window.Daplie = ngDaplie;
							 | 
						||
| 
								 | 
							
								    return ngDaplie;
							 | 
						||
| 
								 | 
							
								  }]);
							 |