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