UNPKG

redux-security

Version:
70 lines (60 loc) 2.28 kB
import { error, write } from 'redux-journal' import { manager } from 'redux-manager' import { SERVICE, TAGS } from '../config' import { configAPIPaths } from './api.paths' const tags = `${TAGS}.api.socket.server` export const configAPISocketServer = ( { io, serviceName = SERVICE } = { serviceName: SERVICE } ) => { const api = () => { const API = manager.api.get(serviceName) if (!API) { const ERROR = `manager.api.get('${serviceName}') == undefined` error(ERROR, `${tags}.api`) throw new Error(ERROR) } return API } const paths = configAPIPaths(serviceName) io.on('connection', (socket) => { write(`socket.id = ${socket.id}`, `${tags}.connection`) socket.on(paths.codeEmail, ({ sessionID }) => { api().codeEmail({ sessionID }).then(() => { socket.emit(paths.codeEmail, {}) }).catch((error) => { socket.emit(paths.codeEmail, { error: error.message || error }) }) }) socket.on(paths.codeConfirm, ({ code }) => { api().codeConfirm({ code }).then(() => { socket.emit(paths.codeConfirm, {}) }).catch((error) => { socket.emit(paths.codeConfirm, { error: error.message || error }) }) }) socket.on(paths.login, ({ username, password }) => { write(`on(${paths.login}) receive ({ username = '${username}', password = '${password}' })`, `${tags}.login`) api().login({ username, password }).then(({ sessionID }) => { write(`on(${paths.login}) send ({ sessionID = '${sessionID}')`, `${tags}.login.emit`) socket.emit(paths.login, { sessionID }) }).catch((error) => { socket.emit(paths.login, { error: error.message || error }) }) }) socket.on(paths.logout, ({ sessionID }) => { api().logout({ sessionID }).then(() => { socket.emit(paths.logout, {}) }).catch((error) => { socket.emit(paths.logout, { error: error.message || error }) }) }) socket.on(paths.signup, ({ username, password, email }) => { api().signup({ username, password, email }).then(() => { socket.emit(paths.signup, {}) }).catch((error) => { socket.emit(paths.signup, { error: error.message || error }) }) }) }) }