fleet/frontend/kolide/helpers.js
2017-01-13 18:10:43 -05:00

78 lines
2.1 KiB
JavaScript

import { flatMap, kebabCase, pick } from 'lodash';
import md5 from 'js-md5';
const ORG_INFO_ATTRS = ['org_name', 'org_logo_url'];
const ADMIN_ATTRS = ['email', 'name', 'password', 'password_confirmation', 'username'];
export const addGravatarUrlToResource = (resource) => {
const { email } = resource;
const emailHash = md5(email.toLowerCase());
const gravatarURL = `https://www.gravatar.com/avatar/${emailHash}?d=blank&size=200`;
return {
...resource,
gravatarURL,
};
};
const labelSlug = (label) => {
const { display_text: displayText } = label;
if (!displayText) return undefined;
const lowerDisplayText = displayText.toLowerCase();
return kebabCase(lowerDisplayText);
};
const filterTarget = (targetType) => {
return (target) => {
return target.target_type === targetType ? [target.id] : [];
};
};
export const formatConfigDataForServer = (config) => {
const orgInfoAttrs = ['org_logo_url', 'org_name'];
const serverSettingsAttrs = ['kolide_server_url'];
const smtpSettingsAttrs = [
'authentication_method', 'authentication_type', 'email_enabled', 'enable_ssl_tls',
'enable_start_tls', 'password', 'port', 'sender_address', 'server', 'user_name', 'verify_ssl_certs',
];
return {
org_info: pick(config, orgInfoAttrs),
server_settings: pick(config, serverSettingsAttrs),
smtp_settings: pick(config, smtpSettingsAttrs),
};
};
export const formatSelectedTargetsForApi = (selectedTargets, appendID = false) => {
const targets = selectedTargets || [];
const hosts = flatMap(targets, filterTarget('hosts'));
const labels = flatMap(targets, filterTarget('labels'));
if (appendID) {
return { host_ids: hosts, label_ids: labels };
}
return { hosts, labels };
};
const setupData = (formData) => {
const orgInfo = pick(formData, ORG_INFO_ATTRS);
const adminInfo = pick(formData, ADMIN_ATTRS);
return {
kolide_server_url: formData.kolide_server_url,
org_info: {
...orgInfo,
},
admin: {
admin: true,
...adminInfo,
},
};
};
export default { addGravatarUrlToResource, formatConfigDataForServer, formatSelectedTargetsForApi, labelSlug, setupData };