const parseGoogleData = service => ({ email: service.email, name: { first: service.given_name, last: service.family_name }, lang: service.locale }); const parseGithubData = (profile, service) => { const name = profile.name.split(' '); return { email: service.email, name: { first: name[0], last: name[1] } }; }; const parseFacebookData = service => ({ email: service.email, name: { first: service.first_name, last: service.last_name } }); const getDataForService = (profile, services) => { if (services.facebook) return parseFacebookData(services.facebook); if (services.github) return parseGithubData(profile, services.github); if (services.google) return parseGoogleData(services.google); }; export default (options, user) => { const isOAuth = !options.password; const serviceData = isOAuth ? getDataForService(options.profile, user.services) : null; return isOAuth ? serviceData : null; };