PluginProbe
Extendify / 1.4.0
Extendify v1.4.0
3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 0.6.0 0.7.0 All 126 releases
extendify / src / Library / api / axios.js

axios.js in Extendify 1.4.0, at src/Library/api/axios.js

73 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import axios from 'axios'
2 import { useUserStore } from '@library/state/User'
3
4 const Axios = axios.create({
5 baseURL: window.extendifyData.root,
6 headers: {
7 'X-WP-Nonce': window.extendifyData.nonce,
8 'X-Requested-With': 'XMLHttpRequest',
9 'X-Extendify-Library': true,
10 'X-Extendify': true,
11 },
12 })
13
14 function findResponse(response) {
15 return Object.prototype.hasOwnProperty.call(response, 'data')
16 ? response.data
17 : response
18 }
19
20 function handleErrors(error) {
21 if (!error.response) {
22 return
23 }
24 console.error(error.response)
25 // TODO: add a global error message system
26 return Promise.reject(findResponse(error.response))
27 }
28
29 function addDefaults(request) {
30 const userState = useUserStore.getState()
31 const remainingImports = userState.apiKey
32 ? 'unlimited'
33 : userState.remainingImports()
34 if (request.data) {
35 request.data.remaining_imports = remainingImports
36 request.data.entry_point = userState.entryPoint
37 request.data.total_imports = userState.imports
38 }
39 return request
40 }
41
42 function checkDevMode(request) {
43 request.headers['X-Extendify-Dev-Mode'] =
44 window.location.search.indexOf('DEVMODE') > -1
45 request.headers['X-Extendify-Local-Mode'] =
46 window.location.search.indexOf('LOCALMODE') > -1
47 return request
48 }
49
50 function checkForSoftError(response) {
51 if (Object.prototype.hasOwnProperty.call(response, 'soft_error')) {
52 window.dispatchEvent(
53 new CustomEvent('extendify::softerror-encountered', {
54 detail: response.soft_error,
55 bubbles: true,
56 }),
57 )
58 }
59 return response
60 }
61
62 Axios.interceptors.response.use(
63 (response) => checkForSoftError(findResponse(response)),
64 (error) => handleErrors(error),
65 )
66
67 Axios.interceptors.request.use(
68 (request) => checkDevMode(addDefaults(request)),
69 (error) => error,
70 )
71
72 export { Axios }
73