7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel/**
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel *
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * Copyright (c) 2014 ForgeRock AS. All rights reserved.
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel *
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * The contents of this file are subject to the terms
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * of the Common Development and Distribution License
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * (the License). You may not use this file except in
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * compliance with the License.
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel *
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * You can obtain a copy of the License at
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * http://forgerock.org/license/CDDLv1.0.html
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * See the License for the specific language governing
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * permission and limitations under the License.
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel *
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * When distributing Covered Code, include this CDDL
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * Header Notice in each file and include the License file
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * at http://forgerock.org/license/CDDLv1.0.html
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * If applicable, add the following below the CDDL Header,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * with the fields enclosed by brackets [] replaced by
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * your own identifying information:
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel * "Portions Copyrighted [year] [name of copyright owner]"
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel */
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel/*global require, exports */
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feaselvar _ = require("lib/lodash");
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel_.extend(exports, {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel getMetaData: function (existingMetaData) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel var meta = {},
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel currentDate = new Date();
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel meta.lastModified = currentDate.toString();
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (typeof existingMetaData !== "object" || typeof existingMetaData.created === "undefined") {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel meta.created = meta.lastModified;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel } else {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel meta.created = existingMetaData.created;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return meta;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel },
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel // addressList is expected to be an array of "|" separated values
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel getAddresses: function (addressList) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel var addresses = [],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel i = 0,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel array,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel thisFormatted;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel for (i = 0; i < addressList.length; i++) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel array = addressList[i].split("|");
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel thisFormatted = array[1] + "\n" + array[2] + ", " + array[3] + " " + array[4] + " " + array[5];
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel addresses.push({
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel type: array[0],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel streetAddress : array[1],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel locality :array[2],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel region : array[3],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel postalCode : array[4],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel country : array[5],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel formatted : thisFormatted,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel primary : array[6]
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel });
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return addresses;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel },
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel getDisplayName: function (firstName, lastName, name) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel var displayName = "";
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (firstName !== null) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel displayName = firstName + " ";
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (lastName !== null) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel displayName = displayName + lastName;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (firstName === null && lastName === null) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel displayName = name;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel displayName.replace(/(^\s*)|(\s*$)/g, "");
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return displayName;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel },
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel getEmails: function (mailArray) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel var emails = [],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel i = 0;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel for (i = 0; i < mailArray.length; i++) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (i === 0) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel emails.push({value: mailArray[i], type : "work", primary : true });
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel } else if (i === 1) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel emails.push({value: mailArray[i], type : "home"});
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel } else {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel emails.push({value: mailArray[i], type : "no type"});
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return emails;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel },
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel // groupsList is expected to be an array of "value|display" elements
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel getGroups : function (groupsList) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel var groups = [],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel groupArray,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel i = 0;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel for (i = 0; i < groupsList.length; i++) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel groupArray = groupsList[i].split("|");
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel groups.push({value: groupArray[0], display : groupArray[1]});
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return groups;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel },
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel // imAddresses is expected to be an array of "value:type" elements
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel getIMs: function (imAddresses) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel var ims = [],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel imArray,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel i = 0;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel for (i = 0; i < imAddresses.length; i++) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel imArray = imAddresses[i].split(":");
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel ims.push({value: imArray[1], type : imArray[0]});
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return ims;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel },
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel getName: function (source) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel var fn = source.firstName,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel ln = source.lastName,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel mn = source.middleName,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel mi = source.middleName.substring(0,1),
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel hp = source.honorificPrefix,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel hs = source.honorificSuffix,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel formatted = "",
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel name = {};
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (hp !== null) {formatted = hp + " "; }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (fn !== null) {formatted = formatted + fn + " "; }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (mi !== null) {formatted = formatted + mi + " "; }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (ln !== null) {formatted = formatted + ln + " "; }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (hs !== null) {formatted = formatted + hs; }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel name.formatted = formatted.replace(/(^\s*)|(\s*$)/g, "");
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (ln !== null) {name.familyName = ln; }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (fn !== null) {name.givenName = fn; }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (mn !== null) {name.middleName = mn; }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (hp !== null) {name.honorificPrefix = hp; }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (hs !== null) {name.honorificSuffix = hs; }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return name;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel },
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel getPhoneNumbers: function (phones) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel var phoneNumbers = [],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel i = 0;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel for (i = 0; i < phones.length; i++) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel if (i === 0) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel phoneNumbers.push({value: phones[i], type : "work" });
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel } else if (i === 1) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel phoneNumbers.push({value: phones[i], type : "home"});
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel } else {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel phoneNumbers.push({value: phones[i], type : "no type"});
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return phoneNumbers;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel },
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel getPhotos: function (photosList) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel var photos = [],
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel i = 0,
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel getType = function (photoUrl) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel var test = photoUrl.split("/").reverse()[0];
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel switch (test) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel case "F":
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return "photo";
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel case "T":
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return "thumbnail";
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel default:
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return "no-type";
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel };
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel for (i = 0; i < photosList.length; i += 1) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel photos.push({value: photosList[i], type : getType(photosList[i])});
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return photos;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel },
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel getProfileUrl: function (name) {
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel var UrlPrefix = "https://login.example.com/";
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel return UrlPrefix + name;
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel }
7d83b6a03bd7b63f2eb6404d6cc1e4c074391ea7Jake Feasel});