Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import axios from "axios";
- // function isFormData(val) {
- // return typeof FormData !== "undefined" && val instanceof FormData;
- // }
- const defaultOptions = {
- baseURL: "https://uxcandy.com/~shapoval/test-task-backend/v2",
- headers: { "Content-Type": "multipart/form-data" }
- };
- class Api {
- constructor(options = {}) {
- this.client = options.client || axios.create(defaultOptions);
- this.token = options.token;
- this.developer = options.developer || "Stepan123";
- this.client.interceptors.request.use(
- config => {
- const newConfig = {
- params: {},
- ...config
- };
- if (this.developer) {
- newConfig.params.developer = this.developer;
- }
- if (this.token) {
- newConfig.data.append("token", this.token);
- }
- // if (this.token && !isFormData(newConfig.data)) {
- // const form = new FormData();
- // form.append("token", this.token);
- // newConfig.data = form;
- // }
- return newConfig;
- },
- e => Promise.reject(e)
- );
- }
- async login({ login, password }) {
- const form = new FormData();
- form.append("username", login);
- form.append("password", password);
- const { data = {} } = await this.client.post("/login", form);
- if (data.status === "ok") {
- this.token = data.message.token;
- }
- }
- logout() {
- this.token = null;
- }
- // sort_field (id | username | email | status) - поле, по которому выполняется сортировка
- // sort_direction (asc | desc) - направление сортировки
- // page - номер страницы для пагинации
- getTasks({ sortField, sortDirection, page }) {
- return this.client("/", {
- params: {
- sort_field: sortField,
- sort_direction: sortDirection,
- page
- }
- }).then(({ data }) => data);
- }
- async createTask({ username, email, text }) {
- const form = new FormData();
- form.append("username", username);
- form.append("email", email);
- form.append("text", text);
- const { data = {} } = await this.client.post("/create", form);
- return data;
- }
- async editTask({ id, status, text }) {
- const form = new FormData();
- form.append("status ", status);
- form.append("text", text);
- const { data = {} } = await this.client.post(`/edit/${id}`, form);
- return data;
- }
- }
- export default Api;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement