--- /dev/null
+(function() {
+ "use strict";
+
+ angular
+ .module("nero.app")
+ .factory("profileService", profileService);
+
+ profileService.$inject = ["$http", "$q", "promiseCache", "errorHandlerService"];
+
+ function profileService($http, $q, promiseCache, errorHandlerService) {
+
+ var service = {
+ getProfile: getProfile
+ };
+
+ return service;
+
+ /////////////////
+
+ // I get the profile.
+ function getProfile(userId) {
+ var config = {};
+ config.params = {
+ cmd: "getProfile",
+ userId: userId
+ };
+
+ return promiseCache({
+ promise: function() {
+ return $http.get(actionURLAjax, config);
+ },
+ ttl: 120000, //2 minutes
+ key: JSON.stringify(config.params)
+ })
+ .then(getProfileComplete)
+ ["catch"](getProfileFailed);
+
+ function getProfileComplete(response) {
+ if (response.data.success) {
+ return response.data.profile;
+ }
+
+ // If success variable is false or undefined then throw an error
+ var message = "An unknown error occurred in getProfile.";
+ var error = errorHandlerService.buildErrorObject(response, message);
+ return ($q.reject(error));
+ }
+
+ function getProfileFailed(error) {
+ // If message is undefined then throw unknown error. Otherwise, use expected error message.
+ if (!angular.isObject(error.data) || !error.data.message) {
+ var message = "An unknown error occurred in getProfileFailed.";
+ return ($q.reject(message));
+ }
+
+ return ($q.reject(error.data.message));
+ }
+ }
+ }
+})();