forked from coolaj86/walnut.js
		
	
		
			
				
	
	
		
			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;
 | |
|   }]);
 |