Added Axios and removed fetch...

Axios has CSXF integrated.
This commit is contained in:
Paolo Arena
2019-02-19 02:33:02 +01:00
parent ee6cf47c29
commit ec49343556
15 changed files with 204 additions and 236 deletions

View File

@@ -5,8 +5,9 @@ export class AxiosSuccess {
public status: number
public data: any
constructor(data: any) {
constructor(data: any, status: number) {
this.data = data
this.status = status
}
}
@@ -14,10 +15,12 @@ export class AxiosError {
public success: boolean = false
public status: number
public data: any
public code: any
constructor(status: number, data?: any) {
constructor(status: number, data?: any, code?: any) {
this.status = status
this.data = data
this.code = code
if (status !== 401) {
// if (status == 0) message = 'Vérifiez votre connexion Internet';
// NotificationsStore.actions.addNotification({ type: 'warning', message: message })

View File

@@ -1,50 +1,25 @@
import axios, { AxiosInstance, AxiosPromise, AxiosResponse, AxiosInterceptorManager } from 'axios'
import Api from '@api'
import * as Types from '@src/store/Api/ApiTypes'
async function sendRequest(url: string, lang: string, mytok: string, method: string, mydata: any) {
async function sendRequest(url: string, method: string, mydata: any) {
console.log('sendRequest', method, url, '[', lang, ']')
console.log('sendRequest', method, url)
const authHeader = new Headers()
authHeader.append('content-Type', 'application/json')
authHeader.append('Accept', 'application/json')
if (url !== process.env.MONGODB_HOST + '/users/login') {
authHeader.append('x-auth', mytok)
// console.log('TOK PASSATO ALLA FETCH:', mytok)
}
// authHeader.append('accept-language', lang)
let configInit: RequestInit
if (method === 'GET') {
configInit = {
method: method,
cache: 'no-cache',
mode: 'cors',
headers: authHeader
}
} else if (method === 'DELETE') {
configInit = {
method: method,
cache: 'no-cache',
mode: 'cors',
headers: authHeader
}
} else {
configInit = {
method: method,
cache: 'no-cache',
mode: 'cors',
headers: authHeader
}
if (mydata !== null)
configInit.body = JSON.stringify(mydata)
}
const request: Promise<Response> = fetch(url, configInit)
return request
let request
if (method === 'GET')
request = Api.get(url, mydata)
else if (method === 'POST')
request = Api.post(url, mydata)
else if (method === 'DELETE')
request = Api.Delete(url, mydata)
else if (method === 'PUT')
request = Api.put(url, mydata)
const req: Promise<Types.AxiosSuccess | Types.AxiosError> = request
return req
}
export default sendRequest

View File

@@ -3,8 +3,11 @@ import axios, { AxiosInstance, AxiosPromise, AxiosResponse, AxiosInterceptorMana
import router from '@router'
import {clone} from 'lodash'
import * as Types from './ApiTypes'
import { GlobalStore, UserStore } from '@store'
import { rescodes } from '@src/store/Modules/rescodes'
import { serv_constants } from '@src/store/Modules/serv_constants'
export const API_URL = process.env.API_URL
export const API_URL = process.env.MONGODB_HOST
export const axiosInstance: AxiosInstance = axios.create({
baseURL: API_URL,
headers: {
@@ -32,35 +35,83 @@ export const removeAuthHeaders = () => {
delete axiosInstance.defaults.headers.Authorization
}
async function Request(type: string, path: string, payload: any, noAuth?: boolean): Promise<Types.AxiosSuccess | Types.AxiosError> {
async function Request(type: string, path: string, payload: any, setAuthToken?: boolean): Promise<Types.AxiosSuccess | Types.AxiosError> {
let ricevuto = false
try {
console.log(`Axios Request [${type}]:`, axiosInstance.defaults)
let response: AxiosResponse
if (type === 'post' || type === 'put') {
response = await axiosInstance[type](path, payload, {
headers: {
'Content-Type': 'application/json'
'Content-Type': 'application/json',
'x-auth': UserStore.state.x_auth_token
}
})
console.log(new Types.AxiosSuccess(response.data))
return new Types.AxiosSuccess(response.data)
ricevuto = true
// console.log(new Types.AxiosSuccess(response.data, response.status))
const setAuthToken = (path === '/updatepwd')
if (response.status === 200) {
let x_auth_token = ''
try {
if (setAuthToken || (path === '/users/login')) {
x_auth_token = String(response.headers['x-auth'])
if (x_auth_token === '') {
UserStore.mutations.setServerCode(rescodes.ERR_AUTHENTICATION)
}
if (setAuthToken) {
UserStore.mutations.UpdatePwd(x_auth_token)
localStorage.setItem(rescodes.localStorage.token, x_auth_token)
}
UserStore.mutations.setAuth(x_auth_token)
localStorage.setItem(rescodes.localStorage.token, x_auth_token)
}
GlobalStore.mutations.setStateConnection(ricevuto ? 'online' : 'offline')
UserStore.mutations.setServerCode(rescodes.OK)
} catch (e) {
if (setAuthToken) {
UserStore.mutations.setServerCode(rescodes.ERR_AUTHENTICATION)
UserStore.mutations.setAuth('')
}
GlobalStore.mutations.setStateConnection(ricevuto ? 'online' : 'offline')
return Promise.reject(new Types.AxiosError(serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN, null, rescodes.ERR_AUTHENTICATION))
}
}
return new Types.AxiosSuccess(response.data, response.status)
} else if (type === 'get' || type === 'delete') {
// @ts-ignore
response = await axiosInstance[type](path, {
params: payload,
headers: {'Content-Type': 'application/json'}
headers: {'Content-Type': 'application/json',
'x-auth': UserStore.state.x_auth_token
}
})
return new Types.AxiosSuccess(response.data)
return new Types.AxiosSuccess(response.data, response.status)
} else if (type === 'postFormData') {
response = await axiosInstance.post(path, payload, {
headers: {
'Content-Type': 'multipart/form-data'
'Content-Type': 'multipart/form-data',
'x-auth': UserStore.state.x_auth_token
}
})
return new Types.AxiosSuccess(response.data)
return new Types.AxiosSuccess(response.data, response.status)
}
}
catch (error) {
if (process.env.DEV) {
console.log('ERROR using', path, error, 'ricevuto=', ricevuto)
}
if (!ricevuto) {
UserStore.mutations.setServerCode(rescodes.ERR_SERVERFETCH)
} else {
UserStore.mutations.setServerCode(rescodes.ERR_GENERICO)
}
if (error.response) {
return Promise.reject(new Types.AxiosError(error.response.status, error.response.data))
} else {

View File

@@ -13,6 +13,7 @@ import { GlobalStore, UserStore } from '@modules'
import globalroutines from './../../globalroutines/index'
import { serv_constants } from '@src/store/Modules/serv_constants'
import router from '@router'
import * as Types from "@src/store/Api/ApiTypes"
// const algoliaApi = new AlgoliaSearch()
@@ -47,86 +48,31 @@ export namespace ApiTool {
})
}
export async function SendReq(url: string, method: string, mydata: any, setAuthToken: boolean = false) {
export async function SendReq(url: string, method: string, mydata: any, setAuthToken: boolean = false): Promise<Types.AxiosSuccess | Types.AxiosError> {
UserStore.mutations.setServerCode(rescodes.EMPTY)
UserStore.mutations.setResStatus(0)
return await new Promise(function (resolve, reject) {
let ricevuto = false
return sendRequest(url, UserStore.state.lang, UserStore.state.x_auth_token, method, mydata)
.then(resreceived => {
console.log('resreceived', resreceived)
ricevuto = true
let res = resreceived.clone()
if (process.env.DEV) {
// console.log('SendReq RES [', res.status, ']', res)
}
return sendRequest(url, method, mydata)
.then(res => {
console.log('res', res)
UserStore.mutations.setResStatus(res.status)
if (res.status === 200) {
let x_auth_token = ''
try {
if (setAuthToken) {
x_auth_token = String(res.headers.get('x-auth'))
if (x_auth_token === '') {
UserStore.mutations.setServerCode(rescodes.ERR_AUTHENTICATION)
}
UserStore.mutations.setAuth(x_auth_token)
if (url === process.env.MONGODB_HOST + '/updatepwd') {
UserStore.mutations.UpdatePwd({ x_auth_token })
localStorage.setItem(rescodes.localStorage.token, x_auth_token)
}
}
UserStore.mutations.setServerCode(rescodes.OK)
} catch (e) {
if (setAuthToken) {
UserStore.mutations.setServerCode(rescodes.ERR_AUTHENTICATION)
UserStore.mutations.setAuth('')
}
GlobalStore.mutations.setStateConnection(ricevuto ? 'online' : 'offline')
return reject({ code: rescodes.ERR_AUTHENTICATION })
}
} else if (res.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN) {
if (res.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN) {
// Forbidden
// You probably is connectiong with other page...
UserStore.mutations.setServerCode(rescodes.ERR_AUTHENTICATION)
UserStore.mutations.setAuth('')
GlobalStore.mutations.setStateConnection(ricevuto ? 'online' : 'offline')
router.push('/signin')
return reject({ code: rescodes.ERR_AUTHENTICATION })
}
GlobalStore.mutations.setStateConnection(ricevuto ? 'online' : 'offline')
return res.json()
.then((body) => {
// console.log('BODY RES = ', body)
return resolve({ res, body, status: res.status })
})
.catch(e => {
return resolve({ res, body: {}, status: res.status })
// Array not found...
// UserStore.mutations.setServerCode(rescodes.ERR_GENERICO)
// return reject({ code: rescodes.ERR_GENERICO, status: res.status })
})
return resolve(res)
})
.catch(error => {
if (process.env.DEV) {
console.log('ERROR using', url, error, 'ricevuto=', ricevuto)
}
if (!ricevuto) {
UserStore.mutations.setServerCode(rescodes.ERR_SERVERFETCH)
} else {
UserStore.mutations.setServerCode(rescodes.ERR_GENERICO)
}
GlobalStore.mutations.setStateConnection(ricevuto ? 'online' : 'offline')
return reject({ code: error })
console.log('error', error)
return reject(error)
})
})
}