UNPKG

redux-security

Version:
65 lines (56 loc) 2.26 kB
import Promise from 'bluebird' 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` export const configAPISocket = ( { serverServiceName = SERVICE, socket } = { serverServiceName: SERVICE } ) => { const paths = configAPIPaths(serverServiceName) const codeEmail = ({ sessionID }) => new Promise((resolve, reject) => { socket.off(paths.codeEmail) socket.emit(paths.codeEmail, { sessionID }) socket.on(paths.codeEmail, ({ error }) => { if (error) { return reject(new Error(error)) } resolve() }) }) const codeConfirm = ({ code }) => new Promise((resolve, reject) => { socket.off(paths.codeConfirm) socket.emit(paths.codeConfirm, { code }) socket.on(paths.codeConfirm, ({ error }) => { if (error) { return reject(new Error(error)) } resolve() }) }) const login = ({ username, password }) => new Promise((resolve, reject) => { write(`({ username = '${username}', password = ${typeof password} }), paths.login = ${paths.login}`, `${tags}.login`) socket.off(paths.login) socket.emit(paths.login, { username, password }) socket.on(paths.login, ({ sessionID, error }) => { if (error) { return reject(new Error(error)) } resolve({ sessionID }) }) }) const logout = ({ sessionID }) => new Promise((resolve, reject) => { write(`({ sessionID = '${sessionID})'`, `${tags}.logout`) socket.off(paths.logout) socket.emit(paths.logout, { sessionID }) socket.on(paths.logout, ({ error }) => { if (error) { return reject(new Error(error)) } resolve() }) }) const signup = ({ username, password, email }) => new Promise((resolve, reject) => { write(`({ username = '${username}', password = ${typeof password}, email = '${email}')`, `${tags}.signup`) socket.off(paths.signup) socket.emit(paths.signup, { username, password, email }) socket.on(paths.signup, ({ error }) => { if (error) { return reject(new Error(error)) } resolve({ username }) }) }) return { codeEmail, codeConfirm, login, logout, signup } }