From 6a87a97c85cd135a9faed9b30aa290d222526026 Mon Sep 17 00:00:00 2001 From: Nikolay <46225163+vigdorov@users.noreply.github.com> Date: Thu, 30 Jul 2020 21:47:26 +0300 Subject: [PATCH] =?UTF-8?q?HM-82.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20api=20=D0=B4=D0=BB=D1=8F=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=D0=BC?= =?UTF-8?q?=D0=B8=20(#37)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/HttpAuthAPI.js | 3 ++ src/api/UsersServiceAPI.js | 74 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 src/api/UsersServiceAPI.js diff --git a/src/api/HttpAuthAPI.js b/src/api/HttpAuthAPI.js index f9c201d..46396ae 100644 --- a/src/api/HttpAuthAPI.js +++ b/src/api/HttpAuthAPI.js @@ -12,6 +12,9 @@ import tokenApi from './TokenAPI'; /** * Api прикрепляет ко всем запросом заголовок с токеном авторизации. В случае, когда сервер + * возвращает ошибку 401 (Не авторизован), пытается рефрешнуть токен. В момент обновления пары токенов + * api сохраняет все запросы в очередь. Если ревреш токенов удался, то запросы будут выполнены + * в том же порядке, как и пришли, либо упадут с ошибкой, если ревреш выполнить не удалось. * @class HttpAuthApi */ class HttpAuthApi { diff --git a/src/api/UsersServiceAPI.js b/src/api/UsersServiceAPI.js new file mode 100644 index 0000000..60efcac --- /dev/null +++ b/src/api/UsersServiceAPI.js @@ -0,0 +1,74 @@ +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; + } + + /** + * Метод поиска пользователя по Логину + * @param {string} login - Логин пользователя + */ + find = async (login) => { + const {data} = await http.get(`${ROOT_URL}/${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 (login, updateOptions) => { + const {data} = await http.put(ROOT_URL, {...updateOptions, login}); + 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;