From 74a0b66071068ce9c0fa40235d2455afae7e679c Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 26 Oct 2021 13:31:55 -0400 Subject: [PATCH] updating API call method --- package-lock.json | 11 ++++ package.json | 1 + src/global-methods.js | 60 +++++++++++++++++++ .../{CarFunnel => FMG}/BaseTemplate.vue | 0 .../Damage/SelectDamage.vue | 0 .../Vehicle}/CarAttributes.vue | 0 .../SelectCar => FMG/Vehicle}/SelectMake.vue | 0 .../SelectCar => FMG/Vehicle}/SelectModel.vue | 0 .../SelectCar => FMG/Vehicle}/SelectStyle.vue | 0 .../SelectCar => FMG/Vehicle}/SelectYear.vue | 0 src/router/index.js | 10 ++-- src/store/index.js | 13 +++- 12 files changed, 88 insertions(+), 7 deletions(-) create mode 100644 src/global-methods.js rename src/layouts/{CarFunnel => FMG}/BaseTemplate.vue (100%) rename src/layouts/{CarFunnel => FMG}/Damage/SelectDamage.vue (100%) rename src/layouts/{CarFunnel/SelectCar => FMG/Vehicle}/CarAttributes.vue (100%) rename src/layouts/{CarFunnel/SelectCar => FMG/Vehicle}/SelectMake.vue (100%) rename src/layouts/{CarFunnel/SelectCar => FMG/Vehicle}/SelectModel.vue (100%) rename src/layouts/{CarFunnel/SelectCar => FMG/Vehicle}/SelectStyle.vue (100%) rename src/layouts/{CarFunnel/SelectCar => FMG/Vehicle}/SelectYear.vue (100%) diff --git a/package-lock.json b/package-lock.json index 251a4fc31..2e94264e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "axios": "^0.21.4", "bootstrap": "^5.1.1", "core-js": "^3.6.5", + "http-status-codes": "^2.1.4", "vue": "^3.0.0", "vue-router": "^4.0.11", "vuex": "^4.0.2", @@ -7912,6 +7913,11 @@ "npm": ">=1.3.7" } }, + "node_modules/http-status-codes": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.1.4.tgz", + "integrity": "sha512-MZVIsLKGVOVE1KEnldppe6Ij+vmemMuApDfjhVSLzyYP+td0bREEYyAoIw9yFePoBXManCuBqmiNP5FqJS5Xkg==" + }, "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -21961,6 +21967,11 @@ "sshpk": "^1.7.0" } }, + "http-status-codes": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.1.4.tgz", + "integrity": "sha512-MZVIsLKGVOVE1KEnldppe6Ij+vmemMuApDfjhVSLzyYP+td0bREEYyAoIw9yFePoBXManCuBqmiNP5FqJS5Xkg==" + }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", diff --git a/package.json b/package.json index 2de6cb442..87a6da71d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "axios": "^0.21.4", "bootstrap": "^5.1.1", "core-js": "^3.6.5", + "http-status-codes": "^2.1.4", "vue": "^3.0.0", "vue-router": "^4.0.11", "vuex": "^4.0.2", diff --git a/src/global-methods.js b/src/global-methods.js new file mode 100644 index 000000000..ddd6f072e --- /dev/null +++ b/src/global-methods.js @@ -0,0 +1,60 @@ +import axios from 'axios'; +import { StatusCodes } from 'http-status-codes'; + +export default { + callHttpClient({ + method, + endpoint, + payload, + responseType = {}, + ignoreErrors = false + }) { + return new Promise((resolve, reject) => { + // Grab our accessToken from Okta. + const accessToken = this.getBearerTokenForStorage(); + + // Merge payload with analytics data + const payloadAndAnalyticsData = Object.assign({}, payload, { + AppName: "Agency Advantage Dashboard" + }); + + axios({ + method: method, + url: endpoint, + //data: payloadAndAnalyticsData, + crossdomain: true, + responseType: responseType + // headers: { + // Authorization: `Bearer ${accessToken}` + // } + }) + .then(function(response) { + if (response.data.isSuccess || (response.status == 200)) { + resolve(response); + } else { + reject(response); + } + }, error => { + let statusCode = error.response.status; + let message = 'Sorry, something happened on our end. Please try again'; + if (!ignoreErrors) { + switch (statusCode) { + case StatusCodes.UNAUTHORIZED: + this.createPromiseRejection("Unauthorized, routing back to login page.", error.response, reject, true, false); + break; + case StatusCodes.BAD_REQUEST: + this.createPromiseRejection(error.response.data, error.response, reject, true, false); + break; + } + } + }); + }) + }, + getBearerTokenForStorage() { + try { + return JSON.parse(localStorage.getItem('okta-token-storage')).accessToken.accessToken; + } catch (error) { + return ''; + } + } +} \ No newline at end of file diff --git a/src/layouts/CarFunnel/BaseTemplate.vue b/src/layouts/FMG/BaseTemplate.vue similarity index 100% rename from src/layouts/CarFunnel/BaseTemplate.vue rename to src/layouts/FMG/BaseTemplate.vue diff --git a/src/layouts/CarFunnel/Damage/SelectDamage.vue b/src/layouts/FMG/Damage/SelectDamage.vue similarity index 100% rename from src/layouts/CarFunnel/Damage/SelectDamage.vue rename to src/layouts/FMG/Damage/SelectDamage.vue diff --git a/src/layouts/CarFunnel/SelectCar/CarAttributes.vue b/src/layouts/FMG/Vehicle/CarAttributes.vue similarity index 100% rename from src/layouts/CarFunnel/SelectCar/CarAttributes.vue rename to src/layouts/FMG/Vehicle/CarAttributes.vue diff --git a/src/layouts/CarFunnel/SelectCar/SelectMake.vue b/src/layouts/FMG/Vehicle/SelectMake.vue similarity index 100% rename from src/layouts/CarFunnel/SelectCar/SelectMake.vue rename to src/layouts/FMG/Vehicle/SelectMake.vue diff --git a/src/layouts/CarFunnel/SelectCar/SelectModel.vue b/src/layouts/FMG/Vehicle/SelectModel.vue similarity index 100% rename from src/layouts/CarFunnel/SelectCar/SelectModel.vue rename to src/layouts/FMG/Vehicle/SelectModel.vue diff --git a/src/layouts/CarFunnel/SelectCar/SelectStyle.vue b/src/layouts/FMG/Vehicle/SelectStyle.vue similarity index 100% rename from src/layouts/CarFunnel/SelectCar/SelectStyle.vue rename to src/layouts/FMG/Vehicle/SelectStyle.vue diff --git a/src/layouts/CarFunnel/SelectCar/SelectYear.vue b/src/layouts/FMG/Vehicle/SelectYear.vue similarity index 100% rename from src/layouts/CarFunnel/SelectCar/SelectYear.vue rename to src/layouts/FMG/Vehicle/SelectYear.vue diff --git a/src/router/index.js b/src/router/index.js index b439265ef..9731743cb 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,10 +1,10 @@ import { createWebHistory, createRouter } from "vue-router"; import Home from "@/layouts/ContentSite/Home.vue"; -import SelectYear from "@/layouts/CarFunnel/SelectCar/SelectYear.vue"; -import SelectMake from "@/layouts/CarFunnel/SelectCar/SelectMake.vue"; -import SelectModel from "@/layouts/CarFunnel/SelectCar/SelectModel.vue"; -import SelectStyle from "@/layouts/CarFunnel/SelectCar/SelectStyle.vue"; -import SelectDamage from "@/layouts/CarFunnel/Damage/SelectDamage.vue"; +import SelectYear from "@/layouts/FMG/Vehicle/SelectYear.vue"; +import SelectMake from "@/layouts/FMG/Vehicle/SelectMake.vue"; +import SelectModel from "@/layouts/FMG/Vehicle/SelectModel.vue"; +import SelectStyle from "@/layouts/FMG/Vehicle/SelectStyle.vue"; +import SelectDamage from "@/layouts/FMG/Damage/SelectDamage.vue"; const routes = [ { diff --git a/src/store/index.js b/src/store/index.js index c956742bd..423914f0d 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,6 +1,7 @@ import { createStore } from 'vuex'; import createPersistedState from 'vuex-persistedstate'; import axios from 'axios'; +import globalMethods from '../global-methods' import router from '@/router'; export default createStore({ @@ -22,7 +23,7 @@ export default createStore({ mutations: { updateYear(state, data){ state.year = data.year; - state.makes = data.makes.data.Result; + state.makes = data.makes; state.slideTransition = 'slide' }, updateMake(state, data){ @@ -49,7 +50,15 @@ export default createStore({ }, actions: { async selectYear(context, year){ - const makes = await axios.get(`https://mockey.qa.sagaws.net/service/makes/year=${year}`); + let makes = []; + await globalMethods.callHttpClient({ + method: 'GET', + endpoint: `https://mockey.qa.sagaws.net/service/makes/year=${year}`, + payload: {}, + }) + .then(function (response) { + makes = response.data.Result; + }); context.commit('updateYear', {year, makes}); router.push(`/select-make?year=${year}`); },