import http from './HttpAPI'; const ROOT_URL = 'http://api.auth.vigdorov.ru/users'; /** * Объект с полями для создания пользователя * @interface UserCreateOptions * @type {Object} * @property {string} login - Логин пользователя * @property {string} password - Пароль пользователя * @property {string} avatar - url на аватарку пользователя */ /** * Объект с полями для обновления данных пользователя * @interface UpdateUserOptions * @type {Object} * @property {string} avatar - url на аватарку пользователя */ /** * Класс для работы с api пользователей * @class UsersService */ class UsersService { /** * Метод получения полного списка пользователей */ request = async () => { const {data} = await http.get(ROOT_URL); return data; } getSelfInfo = async () => { const {data} = await http.get(`${ROOT_URL}/me`); return data; } setAvatar = async (avatar, updateOptions) => { const {data} = await http.post(`${ROOT_URL}/edit-me`, {...updateOptions, avatar}); return data; } changePassword = async (password, updateOptions) => { const {data} = await http.post(`${ROOT_URL}/edit-me`, {...updateOptions, password}); return data; } /** * Метод поиска пользователя по Логину * @param {string} login - Логин пользователя */ find = async (login) => { const {data} = await http.get(`${ROOT_URL}/search/${login}`); return data; } /** * Метод создания пользователя * @param {UserCreateOptions} user - настройки для создания пользователя */ create = async (user) => { const {data} = await http.post(ROOT_URL, user); return data; } /** * Метод обновления информации о пользователе * @param {string} login - Логин пользователя * @param {UpdateUserOptions} updateOptions - настройки для обновления пользователя */ update = async (user) => { const {data} = await http.put(ROOT_URL, user); return data; } /** * Метод удаления пользователя * @param {string} login - Логин пользователя */ remove = async (login) => { const {data} = await http.delete(`${ROOT_URL}/${login}`); return data; } } const usersServiceApi = new UsersService(); export default usersServiceApi;