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; | ||
|  |   }]); |