This commit is contained in:
Matej Glasnák committed 2023-02-01 15:04:03 +01:00
1 parent 3902cbd601
commit 63394d3a8a
6 files changed
+264 -35

No files matched your search

+53
View File
@@ -0,0 +1,53 @@
# W / Axios
- This plugin will add axios (this.$axios) with custom functions
# Required internal plugins
- w/auth
# Installation
1. Install plugin in `main.ts`
```javascript
import axios from '@/plugins/w/axios'
const app = createApp(App)
.use(auth)
.use(axios)
```
2. Create `.env` in app root directory
3. Add `VUE_APP_WAXIOS_URL=defaultBaseUrl` to `.env`
# Examples
1. Call without authorization header
```javascript
this.$axios.get('v1/courses')
```
2. Call with authorization header
```javascript
this.$axios.get_auth('v1/courses')
```
3. Call that will return directly response.data.data
```javascript
this.$axios.get_data('v1/courses')
this.$axios.get_auth_data('v1/courses')
```
# Public functions
```javascript
async get(url: string, config?: any)
async get_data(url: string, config?: any)
async get_auth(url: string, config?: any)
async get_auth_data(url: string, config?: any)
async post(url: string, config?: any)
async post_data(url: string, config?: any)
async post_auth(url: string, config?: any)
async post_auth_data(url: string, config?: any)
async patch(url: string, config?: any)
async patch_data(url: string, config?: any)
async patch_auth(url: string, config?: any)
async patch_auth_data(url: string, config?: any)
async delete(url: string, config?: any)
async delete_data(url: string, config?: any)
async delete_auth(url: string, config?: any)
async delete_auth_data(url: string, config?: any)
```
+11
View File
@@ -0,0 +1,11 @@
import { App } from 'vue'
import { Options } from './types'
import axios from './models/axios'
export default {
install: (app: App, options: Options) => {
if (options && options.disabled === true) return
app.config.globalProperties.$axios = axios
}
}
@@ -0,0 +1,176 @@
import axios from 'axios'
import store from '@/store'
axios.defaults.baseURL = process.env.VUE_APP_WAXIOS_URL
export default {
async get(url: string, config?: any) {
return axios.get(url, config)
.then(response => response.data)
.catch(error => Promise.reject(error))
},
async get_auth(url: string, config?: any) {
config = this._config(config)
return axios.get(url, config)
.then(response => response.data)
.catch(error => Promise.reject(error))
},
async get_data(url: string, config?: any) {
return axios.get(url, config)
.then(response => response.data.data)
.catch(error => Promise.reject(error.response || error))
},
async get_auth_data(url: string, config?: any) {
config = this._config(config)
return axios.get(url, config)
.then(response => Promise.resolve(response.data.data))
.catch(error => Promise.reject(error.response || error))
},
async post(url: string, params = null, config?: any) {
return axios.post(url, this._objectToFormData(params), config)
.then(response => response.data)
.catch(error => Promise.reject(error))
},
async post_auth(url: string, params = null, config?: any) {
config = this._config(config)
return axios.post(url, this._objectToFormData(params), config)
.then(response => response.data)
.catch(error => Promise.reject(error))
},
async post_data(url: string, params = null, config?: any) {
return axios.post(url, this._objectToFormData(params), config)
.then(response => response.data.data)
.catch(error => Promise.reject(error.response || error))
},
async post_auth_data(url: string, params = null, config?: any) {
config = this._config(config)
return axios.post(url, this._objectToFormData(params), config)
.then(response => response.data.data)
.catch(error => Promise.reject(error.response || error))
},
async delete(url: string, config?: any) {
return axios.delete(url, config)
.then(response => response.data)
.catch(error => Promise.reject(error))
},
async delete_auth(url: string, config?: any) {
config = this._config(config)
return axios.delete(url, config)
.then(response => response.data)
.catch(error => Promise.reject(error))
},
async delete_data(url: string, config?: any) {
return axios.delete(url, config)
.then(response => response.data.data)
.catch(error => Promise.reject(error.response || error))
},
async delete_auth_data(url: string, config?: any) {
config = this._config(config)
return axios.delete(url, config)
.then(response => response.data.data)
.catch(error => Promise.reject(error.response || error))
},
async patch(url: string, params = null, config?: any) {
return axios.patch(url, this._objectToFormData(params), config)
.then(response => response.data)
.catch(error => Promise.reject(error))
},
async patch_auth(url: string, params = null, config?: any) {
config = this._config(config)
return axios.patch(url, this._objectToFormData(params), config)
.then(response => response.data)
.catch(error => Promise.reject(error))
},
async patch_data(url: string, params = null, config?: any) {
return axios.patch(url, this._objectToFormData(params), config)
.then(response => response.data.data)
.catch(error => Promise.reject(error.response || error))
},
async patch_auth_data(url: string, params = null, config?: any) {
config = this._config(config)
return axios.patch(url, this._objectToFormData(params), config)
.then(response => response.data.data)
.catch(error => Promise.reject(error.response || error))
},
async put(url: string, params = null, config?: any) {
return axios.put(url, this._objectToFormData(params), config)
.then(response => response.data)
.catch(error => Promise.reject(error))
},
async put_auth(url: string, params = null, config?: any) {
config = this._config(config)
return axios.put(url, this._objectToFormData(params), config)
.then(response => response.data)
.catch(error => Promise.reject(error))
},
async put_data(url: string, params = null, config?: any) {
return axios.put(url, this._objectToFormData(params), config)
.then(response => response.data.data)
.catch(error => Promise.reject(error.response || error))
},
async put_auth_data(url: string, params = null, config?: any) {
config = this._config(config)
return axios.put(url, this._objectToFormData(params), config)
.then(response => response.data.data)
.catch(error => Promise.reject(error.response || error))
},
_config(config: any) {
if (config) console.error('NOT IMPLEMENTED')
if (!store.getters['auth/token']) {
return {headers: {}}
}
return {
headers: {
Authorization: `Bearer ${store.getters['auth/token']}`
}
}
},
_buildFormData(formData, data, parentKey) {
if (data && typeof data === 'object' && !(data instanceof Date) && !(data instanceof File))
Object.keys(data).forEach(key => this._buildFormData(formData, data[key], parentKey ? `${parentKey}[${key}]` : key));
else
formData.append(parentKey, data == null ? '' : data);
},
_objectToFormData(data) {
const formData = new FormData()
this._buildFormData(formData, {data: data})
return formData
}
}
@@ -0,0 +1,3 @@
export interface Options {
disabled?: Boolean
}