(function () { 'use strict'; var serviceId = 'backpackDatacontext'; angular.module('app').factory(serviceId, ['common', '$http', 'config', 'DSCacheFactory', backpackDatacontext]); function backpackDatacontext(common, $http, config, DSCacheFactory) { var $q = common.$q; var service = { clearAllCachedData: clearAllCachedData, changePassword: changePassword, forgotPassword: forgotPassword, isUsernameAvailable: isUsernameAvailable, saveBadgeUser: saveBadgeUser, updateEmails: updateEmails, saveBadgeUserTheme: saveBadgeUserTheme, getBadgeAccount: getBadgeAccount, getAllBadgesForUser: getAllBadgesForUser, createBadgeItem: createBadgeItem, updateBadgeItem: updateBadgeItem, deleteBadgeItem: deleteBadgeItem, getCollectionsForUser: getCollectionsForUser, createCollection: createCollection, updateCollection: updateCollection, deleteCollection: deleteCollection, parseOpenbadge: parseOpenbadge, getBadgesForEmail: getBadgesForEmail, setToRetrieved: setToRetrieved, createBadgeAccount: createBadgeAccount, makeEmailPrimary: makeEmailPrimary, addItemsToCollection: addItemsToCollection, removeItemsFromCollection: removeItemsFromCollection, getCollectionById: getCollectionById, publishCollectionContent: publishCollectionContent, saveBadgeUserMozillaEmail: saveBadgeUserMozillaEmail, validateBadgeUserMozillaEmail: validateBadgeUserMozillaEmail }; return service; function clearAllCachedData() { DSCacheFactory.destroyAll(); } function handleError(response) { // The API response from the server should be returned in a // nomralized format. However, if the request was not handled by the // server (or what not handles properly - ex. server error), then we // may have to normalize it on our end, as best we can. if ( !angular.isObject(response.data) || !response.data.message ) { return ($q.reject("An unknown error occurred.")); } // Otherwise, use expected error message. return ($q.reject(response.data.message)); } // I transform the successful response, unwrapping the application data // from the API response payload. function handleSuccess(response) { return (response.data); } function changePassword(model) { var request = $http({ method: "post", url: config.myusersUrl + 'api/account/changepassword', data: model }); return (request.then(handleSuccess, handleError)); } function forgotPassword(model) { var request = $http({ method: "post", url: config.myusersUrl + 'api/account/forgottenpassword', data: model }); return (request.then(handleSuccess, handleError)); } function isUsernameAvailable(username) { var request = $http({ method: "get", url: config.myusersUrl + 'api/Account/usernameavailable?username=' + username }); return (request.then(handleSuccess, handleError)); } // get backpack account function getBadgeAccount() { var request = $http({ method: "get", url: config.mybadgesUrl + 'account/', }); return (request.then(handleSuccess, handleError)); } // create backpack account function createBadgeAccount(accountModel) { var request = $http({ method: "post", url: config.mybadgesUrl + 'account/', data: {} }); return (request.then(handleSuccess, handleError)); } // send verification email function saveBadgeUser(user) { var request = $http({ method: "put", url: config.mybadgesUrl + 'user', data: user }); return (request.then(handleSuccess, handleError)); } // send users theme function saveBadgeUserTheme(userTheme) { var request = $http({ method: "put", url: config.mybadgesUrl + 'user/theme', data: userTheme }); return (request.then(handleSuccess, handleError)); } // send users mozilla email function saveBadgeUserMozillaEmail(email) { var request = $http({ method: "put", url: config.mybadgesUrl + 'user/mozillaemail', data: email }); return (request.then(handleSuccess, handleError)); } // validate email function validateBadgeUserMozillaEmail(email) { var request = $http({ method: "post", url: config.mybadgesUrl + 'user/mozillaemail/validator', data: email }); return (request.then(handleSuccess, handleError)); } // update alternative emails function updateEmails(emails) { var request = $http({ method: "put", url: config.mybadgesUrl + 'user/alternativeemails', data: emails }); return (request.then(handleSuccess, handleError)); } function makeEmailPrimary(email) { var request = $http({ method: "put", url: config.mybadgesUrl + 'user/primaryemail', data: email }); return (request.then(handleSuccess, handleError)); } // getAllBadgesForUser function getAllBadgesForUser() { var request = $http({ method: "get", url: config.mybadgesUrl + 'backpack', }); return (request.then(handleSuccess, handleError)); } // create badge backpack function createBadgeItem(badge) { var request = $http({ method: "post", url: config.mybadgesUrl + 'backpack/items', data: badge }); return (request.then(handleSuccess, handleError)); } // update a badge function updateBadgeItem(badge) { var request = $http({ method: "put", url: config.mybadgesUrl + 'backpackitems', data: badge }); return (request.then(handleSuccess, handleError)); } // delete a badge function deleteBadgeItem(badgeId) { var request = $http({ method: "delete", url: config.mybadgesUrl + 'backpackitems/' + badgeId, }); return (request.then(handleSuccess, handleError)); } // create a collection function getCollectionsForUser() { var request = $http({ method: "get", url: config.mybadgesUrl + 'backpackcollections/stages' + '?cache=' + Date.now(), }); return (request.then(handleSuccess, handleError)); } // create a collection function createCollection(collection) { var request = $http({ method: "post", url: config.mybadgesUrl + 'backpackcollections/stages', data: collection }); return (request.then(handleSuccess, handleError)); } // update a collection function updateCollection(collection) { var request = $http({ method: "put", url: config.mybadgesUrl + 'backpackcollections/' + collection.id, data: collection }); return (request.then(handleSuccess, handleError)); } // delete a collection function deleteCollection(collection) { var request = $http({ method: "delete", url: config.mybadgesUrl + 'backpackcollections/stages/' + collection.id, }); return (request.then(handleSuccess, handleError)); } // get collection by id function getCollectionById(collectionId) { var request = $http({ method: "get", url: config.mybadgesUrl + 'backpackcollections/stages/' + collectionId + '?cache=' + Date.now(), }); return (request.then(handleSuccess, handleError)); } // publisCollection function publishCollectionContent(collectionId) { var request = $http({ method: "get", url: config.mybadgesUrl + 'backpackcollections/stages/' + collectionId + '/publisher', }); return (request.then(handleSuccess, handleError)); } // add items to a collection function addItemsToCollection(collection) { var request = $http({ method: "post", url: config.mybadgesUrl + 'backpackcollections/items', data: collection }); return (request.then(handleSuccess, handleError)); } // remove items from a collection function removeItemsFromCollection(collection) { var request = $http({ method: "post", url: config.mybadgesUrl + 'backpackcollections/items/remover', data: collection }); return (request.then(handleSuccess, handleError)); } //use a service to upload and strip out data from an openbadge function parseOpenbadge(badgeString, emails, file) { var request = $http({ data: { fileString: badgeString, emails: emails, file: file }, method: "post", url: config.mybadgesUrl + "openbadges/upload/parser" }); return (request.then(handleSuccess, handleError)); } // fetch all badges for a given email address function getBadgesForEmail(backpackModel) { var request = $http({ method: "post", url: config.mybadgesUrl + 'backpack/associatedemails/items', data: backpackModel }); return (request.then(handleSuccess, handleError)); } // set badges to retrieved function setToRetrieved(model) { var request = $http({ method: "put", url: config.mybadgesUrl + 'user/badgesretrieved', data: model }); return (request.then(handleSuccess, handleError)); } } })();