Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 801 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
797 stevensc 1
import axios from 'axios'
2
 
3
export class Request {
4
  #client
5
  #abortController
6
 
7
  constructor(baseURL, timeout = 5000) {
8
    this.#client = axios.create({ baseURL, timeout })
9
    this.#abortController = new AbortController()
10
  }
11
 
12
  async MakeRequest(method = 'get', { endpoint, data, params }) {
13
    const config = { ...params }
14
    config.signal = this.#abortController.signal
15
 
16
    const response =
17
      method === 'get' || method === 'delete'
18
        ? await this.#client[method](endpoint, config)
19
        : await this.#client[method](endpoint, data, config)
20
 
21
    return response.data
22
  }
23
 
24
  async get(endpoint, params) {
25
    return await this.MakeRequest('get', { endpoint, params })
26
  }
27
 
28
  async delete(endpoint, params) {
29
    return await this.MakeRequest('delete', { endpoint, params })
30
  }
31
 
32
  async post(endpoint, data, params) {
33
    return await this.MakeRequest('post', { endpoint, data, params })
34
  }
35
 
36
  async put(endpoint, data, params) {
37
    return await this.MakeRequest('put', { endpoint, data, params })
38
  }
39
 
40
  cancelToken() {
41
    if (!this.#abortController.signal.aborted) {
42
      this.#abortController.abort()
43
    }
44
  }
45
}