Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 801 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import axios from 'axios'

export class Request {
  #client
  #abortController

  constructor(baseURL, timeout = 5000) {
    this.#client = axios.create({ baseURL, timeout })
    this.#abortController = new AbortController()
  }

  async MakeRequest(method = 'get', { endpoint, data, params }) {
    const config = { ...params }
    config.signal = this.#abortController.signal

    const response =
      method === 'get' || method === 'delete'
        ? await this.#client[method](endpoint, config)
        : await this.#client[method](endpoint, data, config)

    return response.data
  }

  async get(endpoint, params) {
    return await this.MakeRequest('get', { endpoint, params })
  }

  async delete(endpoint, params) {
    return await this.MakeRequest('delete', { endpoint, params })
  }

  async post(endpoint, data, params) {
    return await this.MakeRequest('post', { endpoint, data, params })
  }

  async put(endpoint, data, params) {
    return await this.MakeRequest('put', { endpoint, data, params })
  }

  cancelToken() {
    if (!this.#abortController.signal.aborted) {
      this.#abortController.abort()
    }
  }
}