UNPKG

pip-webui

Version:

HTML5 UI for LOB applications

252 lines (198 loc) 8.39 kB
/** * @file PipServices Rest API * @copyright Digital Living Software Corp. 2014-2016 * @todo: * - Separate application and administrative APIs */ (function () { 'use strict'; var thisModule = angular.module('pipRest', [ 'ngResource', 'pipRest.Enums', 'pipRest.Access', 'pipRest.Session', 'pipRest.State' ]); thisModule.provider('pipRest', function ($httpProvider) { var serverUrl = ''; var serverUrlFixed = false; var api = []; this.addApi = addApi; function addApi(extension) { for (var request in extension) { api[request] = extension[request]; } }; // Set default API version $httpProvider.defaults.headers.common['api-version'] = '1.0'; this.version = function (newVersion) { if (newVersion) $httpProvider.defaults.headers.common['api-version'] = newVersion; return $httpProvider.defaults.headers.common['api-version']; }; this.serverUrlFixed = function (value) { if (value === true || value === 'on') serverUrlFixed = value; return serverUrlFixed; }; this.serverUrl = function (newServerUrl) { if (newServerUrl) serverUrl = newServerUrl; return newServerUrl; }; this.$get = function ($rootScope, $http, $resource) { function createResource(url, path, paramDefaults, actions) { url = url || serverUrl; return $resource(url + path, paramDefaults, actions); }; function createOperation(url, path) { url = url || serverUrl; return $resource(url + path, {}, { call: {method: 'POST'} } ); }; function createCollection(url, path, paramDefaults) { url = url || serverUrl; return $resource(url + path, paramDefaults || {id: '@id'}, { update: {method: 'PUT'} } ); }; function createPagedCollection(url, path, paramDefaults) { url = url || serverUrl; return $resource(url + path, paramDefaults || {id: '@id'}, { page: {method: 'GET', isArray: false}, update: {method: 'PUT'} } ); }; function createPartyCollection(url, path, paramDefaults) { return createPagedCollection(url, path, paramDefaults || { id: '@id', party_id: '@party_id' } ); }; var restApi = { version: function (newVersion) { if (newVersion) $httpProvider.defaults.headers.common['api-version'] = newVersion; return $httpProvider.defaults.headers.common['api-version']; }, serverUrl: function (newServerUrl) { if (newServerUrl) { serverUrl = newServerUrl; } return serverUrl; }, userId: function () { return $http.defaults.headers.common['user-id']; }, serverUrlFixed: function () { return serverUrlFixed; }, sessionId: function () { return $http.defaults.headers.common['session-id']; }, // Used in routing partyId: function ($stateParams) { return $stateParams.party_id || $http.defaults.headers.common['user-id']; }, about: function (url) { return createResource(url, '/api/about'); }, session: function (userId, sessionId) { $http.defaults.headers.common['session-id'] = sessionId; $http.defaults.headers.common['user-id'] = userId; }, signin: function (url) { return createOperation(url, '/api/signin'); }, signout: function (url) { return createOperation(url, '/api/signout'); }, signup: function (url) { return createOperation(url, '/api/signup'); }, recoverPassword: function (url) { return createOperation(url, '/api/recover_password'); }, resetPassword: function (url) { return createOperation(url, '/api/reset_password'); }, changePassword: function (url) { return createOperation(url, '/api/change_password'); }, requestEmailVerification: function (url) { return createCollection(url, '/api/users/:party_id/resend_email_verification'); }, verifyEmail: function (url) { return createOperation(url, '/api/verify_email'); }, signupValidate: function (url) { return createOperation(url, '/api/signup_validate'); }, users: function (url) { return createPagedCollection(url, '/api/users/:id'); }, currentUser: function (url) { return createResource(url, '/api/users/current', {}, { get: {method: 'GET', isArray: false} } ); }, userSessions: function (url) { return createPartyCollection(url, '/api/users/:party_id/sessions/:id'); }, parties: function (url) { return createPagedCollection(url, '/api/parties/:id'); }, partySettings: function (url) { return createPartyCollection(url, '/api/parties/:party_id/settings'); }, serverActivities: function (url) { return createPagedCollection(url, '/api/servers/activities/:id'); }, guides: function (url) { return createPagedCollection(url, '/api/guides/:id'); }, tips: function (url) { return createPagedCollection(url, '/api/tips/:id'); }, image_sets: function (url) { return createPagedCollection(url, '/api/image_sets/:id'); }, images: function (url) { return createPagedCollection(url, '/api/images/search'); }, feedbacks: function (url) { return createPartyCollection(url, '/api/feedbacks/:id'); }, announces: function (url) { return createPagedCollection(url, '/api/announcements/:id'); }, // for testing //-------------- createResource: createResource, createOperation: createOperation, createCollection: createCollection, createPagedCollection: createPagedCollection, createPartyCollection: createPartyCollection }; function addApi() { for (var call in api) { restApi[call] = api[call]; } }; addApi(); return restApi; }; }); })();