90 lines
2.8 KiB
JavaScript
90 lines
2.8 KiB
JavaScript
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;
|