Ver código fonte

Merge branch 'feature-ip-9.6' into featrue-1.1.7.4

zhangwei 2 anos atrás
pai
commit
0acac3b90b

+ 33 - 0
layouts/error.vue

@@ -0,0 +1,33 @@
+<template>
+	<div v-if="error.statusCode == 500">{{ error.message || 'error' }}</div>
+</template>
+
+<script>
+import Report from '@/log-center/log';
+import { getMid, appVersionCode } from '@/utils/help';
+export default {
+	name: 'error',
+	props: ['error'],
+	data() {
+		return {
+			mid: getMid(),
+		};
+	},
+	mounted() {
+		// 埋点
+		Report.reportLog({
+			baseInfo: {
+				appVersionCode: appVersionCode,
+				mid: this.mid,
+				pageSource: Report.pageSource.error_landing_page,
+				machineCode: this.mid,
+			},
+			params: {
+				url: window.location.href,
+			},
+		});
+	},
+};
+</script>
+
+<style lang="scss"></style>

+ 1 - 0
log-center/logEnum.js

@@ -28,6 +28,7 @@ export const objectType = {
 };
 
 export const pageSource = {
+	error_landing_page: 'error-landing-page',
 	newUserLandingPage: 'pc-landing-page',
 	mobileLandingPage: 'mobile-landing-page',
 	tutorialPage: 'tutorial-page',

+ 11 - 1
nuxt.config.js

@@ -60,6 +60,11 @@ export default {
 					path: '/authlogin',
 					component: resolve(__dirname, 'pages/auth/authLogin.vue'),
 				},
+				{
+					name: 'AuthloginApp',
+					path: '/authloginApp',
+					component: resolve(__dirname, 'pages/auth/authLoginInApp.vue'),
+				},
 				{
 					name: 'Unlogin',
 					path: '/unlogin',
@@ -115,10 +120,15 @@ export default {
 					path: '/payment_ach/:amount',
 					component: resolve(__dirname, 'pages/payment/ach.vue'),
 				},
+				{
+					name: 'HealthCheck',
+					path: '/healthcheck',
+					component: resolve(__dirname, 'pages/_system/healthcheck.vue'),
+				},
 				{
 					name: 'custom',
 					path: '*',
-					component: resolve(__dirname, 'pages/404.vue'),
+					component: resolve(__dirname, 'pages/_system/404.vue'),
 				}
 			);
 		},

+ 0 - 10
pages/404.vue

@@ -1,10 +0,0 @@
-<template>
-    <div>404</div>
-</template>
-
-<script>
-
-</script>
-
-<style lang="scss" >
-</style>

+ 7 - 0
pages/_system/404.vue

@@ -0,0 +1,7 @@
+<template>
+	<div>404</div>
+</template>
+
+<script></script>
+
+<style lang="scss"></style>

+ 7 - 0
pages/_system/healthcheck.vue

@@ -0,0 +1,7 @@
+<template>
+	<div>ok</div>
+</template>
+
+<script></script>
+
+<style lang="scss"></style>

+ 63 - 0
pages/auth/authLoginInApp.vue

@@ -0,0 +1,63 @@
+<!-- 移动端 twitter授权登录中间页 -->
+<template>
+	<div class="welcome">
+		<span class="text"></span>
+	</div>
+</template>
+
+<script>
+export default {
+	name: 'authLogin',
+	data() {
+		return {
+			code: '',
+		};
+	},
+	mounted() {
+		let url = new URL(window.location.href);
+		let search = url.search;
+		let urlParams = new URLSearchParams(search);
+		let verifier = urlParams.get('oauth_verifier');
+		if (verifier) {
+			alert(verifier);
+			window.ReactNativeWebView.postMessage(
+				JSON.stringify({
+					verifier,
+				})
+			);
+			// setStorage(storageKey.verifier, verifier);
+			// let time = process.env.NODE_ENV === 'production' ? 200 : 500;
+			// setTimeout(() => {
+			// 	this.close();
+			// }, time);
+		} else {
+			// 用户取消 或者 异常进入
+			window.ReactNativeWebView.postMessage(
+				JSON.stringify({
+					verifier,
+				})
+			);
+			// setStorage(storageKey.backFromTwitterLogin, 1);
+			// this.close();
+		}
+	},
+};
+</script>
+
+<style lang="scss" scoped>
+body {
+	background-color: #f5f5f5;
+}
+
+.welcome {
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 100%;
+	height: 100%;
+	.text {
+		font-size: 22px;
+		color: #1d9bf0;
+	}
+}
+</style>

+ 27 - 11
pages/course/index.vue

@@ -23,9 +23,8 @@
 
 <script>
 import { PlayType, UsefulType } from '../../types';
-import axios from 'axios';
 import Report from '../../log-center/log';
-import { getQueryString, baseURL, appVersionCode, getMid, getStorage, removeStorage } from '../../utils/help';
+import { getQueryString, baseURL, getMid, getStorage, removeStorage, getDetailSSR } from '../../utils/help';
 
 export default {
 	name: 'course',
@@ -120,20 +119,23 @@ export default {
 			Report.reportLog(logData);
 		},
 	},
-	async asyncData(params) {
-		let { route } = params;
-		let { data } = await axios.post(`${baseURL}/denet/base/guide/getAllMobilePageGuide`, {
-			baseInfo: {
-				appVersionCode: appVersionCode,
-				mid: '00000000-0000-0000-0000-000000000000',
-			},
+	async asyncData(context) {
+		let { route, error } = context;
+		let result = await getDetailSSR({
+			context,
+			url: `${baseURL}/denet/base/guide/getAllMobilePageGuide`,
 		});
-		if (data.code == 0) {
+		if (result.code == 0) {
 			return {
 				useful: route.query.useful,
 				playType: route.query.playType,
-				course: route.query.useful === UsefulType.unUseful || route.query.playType === PlayType.NFT ? data.data.withoutRewardGuideImages : data.data.withRewardGuideImages,
+				course: route.query.useful === UsefulType.unUseful || route.query.playType === PlayType.NFT ? result.data.withoutRewardGuideImages : result.data.withRewardGuideImages,
 			};
+		} else {
+			return error({
+				message: result.msg,
+				statusCode: 500,
+			});
 		}
 	},
 	mounted() {
@@ -163,6 +165,7 @@ body,
 body {
 	background-color: #f5f5f5;
 }
+
 .course-page {
 	min-height: 100%;
 	max-height: 100%;
@@ -184,27 +187,33 @@ body {
 		line-height: 22px;
 		color: #fff;
 		z-index: 1;
+
 		.tip-icon {
 			width: 36px;
 			margin-right: 20px;
 		}
 	}
+
 	&-pics-contail {
 		flex: 1;
 		overflow: hidden;
+
 		&-wrap {
 			display: flex;
 			transition: all 0.5s;
+
 			.pic {
 				width: 100%;
 			}
 		}
 	}
+
 	&-pagination {
 		display: flex;
 		justify-content: center;
 		align-items: center;
 		margin: 16px 0;
+
 		.spon {
 			width: 8px;
 			height: 8px;
@@ -212,14 +221,17 @@ body {
 			margin: 0 3px;
 			border-radius: 50%;
 		}
+
 		.active {
 			background: #1d9bf0;
 		}
 	}
+
 	&-btns {
 		width: 100%;
 		display: flex;
 		padding: 0 8px 30px;
+
 		&-btn {
 			flex: 1;
 			margin: 0 8px;
@@ -228,19 +240,23 @@ body {
 			text-align: center;
 			border-radius: 60px;
 		}
+
 		&-btn:active {
 			-webkit-tap-highlight-color: transparent;
 		}
+
 		.back {
 			background: rgba(29, 155, 240, 0.01);
 			border: 1px solid #e8e8e8;
 			color: #3d3d3d;
 		}
+
 		.next {
 			background: rgba(0, 0, 0, 0.01);
 			border: 1px solid #b5e1ff;
 			color: #1d9bf0;
 		}
+
 		.retweer {
 			background: #1d9bf0;
 			border: 1px solid #1d9bf0;

+ 23 - 20
pages/index.vue

@@ -209,13 +209,13 @@
 <script>
 import axios from 'axios';
 import Cookies from 'js-cookie';
-import { isBrowser, appType } from '../utils/help.js';
-import Report from '../log-center/log';
+import { isBrowser, appType, getDetailSSR } from '@/utils/help.js';
+import Report from '@/log-center/log';
 import { Toast } from 'vant';
-import FontAmount from '../components/FontAmount.vue';
-import MobileGuidePage from '../components/MobileGuidePage.vue';
+import FontAmount from '@/components/FontAmount.vue';
+import MobileGuidePage from '@/components/MobileGuidePage.vue';
 // eslint-disable-next-line no-unused-vars
-import { RewardType, PlayType } from '../types';
+import { RewardType, PlayType } from '@/types';
 
 var moment = require('moment');
 var ClipboardJS = require('clipboard');
@@ -596,31 +596,34 @@ export default {
 		},
 	},
 
-	async asyncData(params) {
-		let { route } = params;
-		let { data } = await axios.post(`${baseURL}/denet/post/getDetail`, {
-			baseInfo: {
-				appVersionCode: appVersionCode,
-				mid: '00000000-0000-0000-0000-000000000000',
-			},
+	async asyncData(context) {
+		let { route, error } = context;
+		let result = await getDetailSSR({
+			context,
 			params: {
 				postId: route.params.id || '',
 			},
+			url: `${baseURL}/denet/post/getDetail`,
 		});
-		if (data.code == 0) {
-			if (data.data && data.data.postBizData && typeof data.data.postBizData == 'string') {
-				data.data.postBizData = JSON.parse(data.data.postBizData);
+		if (result.code == 0) {
+			if (result.data && result.data.postBizData && typeof result.data.postBizData == 'string') {
+				result.data.postBizData = JSON.parse(result.data.postBizData);
 			}
-			if (data.data.postBizData === null) {
-				data.data.postBizData = {
+			if (result.data.postBizData === null) {
+				result.data.postBizData = {
 					postUserInfo: {},
 				};
 			}
 			return {
-				detail: data.data,
-				customCover: data.data.postBizData && data.data.postBizData.posterType == 2 ? 1 : 0,
-				customGiveaway: data.data.postBizData && data.data.postBizData.rewardType == 2 ? 1 : 0,
+				detail: result.data,
+				customCover: result.data.postBizData && result.data.postBizData.posterType == 2 ? 1 : 0,
+				customGiveaway: result.data.postBizData && result.data.postBizData.rewardType == 2 ? 1 : 0,
 			};
+		} else {
+			return error({
+				message: result.msg,
+				statusCode: 500,
+			});
 		}
 	},
 

+ 24 - 21
pages/luckdraw.vue

@@ -178,12 +178,12 @@
 import axios from 'axios';
 import Cookies from 'js-cookie';
 import { Toast } from 'vant';
-import { isBrowser, appType, appVersionCode, formatSecondsAsDaysOrTime } from '../utils/help.js';
-import FontAmount from '../components/FontAmount.vue';
-import CustomCardCover from '../components/CustomCardCover.vue';
-import Report from '../log-center/log';
-import { RewardType, PlayType } from '../types';
-import MobileGuidePage from '../components/MobileGuidePage.vue';
+import { isBrowser, appType, appVersionCode, formatSecondsAsDaysOrTime, getDetailSSR } from '@/utils/help.js';
+import FontAmount from '@/components/FontAmount.vue';
+import CustomCardCover from '@/components/CustomCardCover.vue';
+import Report from '@/log-center/log';
+import { RewardType, PlayType } from '@/types';
+import MobileGuidePage from '@/components/MobileGuidePage.vue';
 
 var moment = require('moment');
 var ClipboardJS = require('clipboard');
@@ -302,31 +302,34 @@ export default {
 			this.layer_show = true;
 		});
 	},
-	async asyncData(params) {
-		let { route } = params;
-		let { data } = await axios.post(`${baseURL}/denet/post/getDetail`, {
-			baseInfo: {
-				appVersionCode: appVersionCode,
-				mid: '00000000-0000-0000-0000-000000000000',
-			},
+	async asyncData(context) {
+		let { route, error } = context;
+		let result = await getDetailSSR({
+			context,
 			params: {
 				postId: route.params.id || '',
 			},
+			url: `${baseURL}/denet/post/getDetail`,
 		});
-		if (data.code == 0) {
-			if (data.data && data.data.postBizData && typeof data.data.postBizData == 'string') {
-				data.data.postBizData = JSON.parse(data.data.postBizData);
+		if (result.code == 0) {
+			if (result.data && result.data.postBizData && typeof result.data.postBizData == 'string') {
+				result.data.postBizData = JSON.parse(result.data.postBizData);
 			}
-			if (data.data.postBizData === null) {
-				data.data.postBizData = {
+			if (result.data.postBizData === null) {
+				result.data.postBizData = {
 					postUserInfo: {},
 				};
 			}
 			return {
-				detail: data.data,
-				customCover: data.data.postBizData && data.data.postBizData.posterType == 2 ? 1 : 0,
-				customGiveaway: data.data.postBizData && data.data.postBizData.rewardType == 2 ? 1 : 0,
+				detail: result.data,
+				customCover: result.data.postBizData && result.data.postBizData.posterType == 2 ? 1 : 0,
+				customGiveaway: result.data.postBizData && result.data.postBizData.rewardType == 2 ? 1 : 0,
 			};
+		} else {
+			return error({
+				message: result.msg,
+				statusCode: 500,
+			});
 		}
 	},
 	methods: {

+ 14 - 11
pages/nft/group.vue

@@ -62,7 +62,7 @@
 import axios from 'axios';
 import Cookies from 'js-cookie';
 import { Toast } from 'vant';
-import { isBrowser, appVersionCode, appType } from '../../utils/help.js';
+import { isBrowser, appVersionCode, appType, getDetailSSR } from '@/utils/help.js';
 import Report from '@/log-center/log';
 const api = {
 	prod: 'https://api.denetme.net',
@@ -136,22 +136,25 @@ export default {
 			],
 		};
 	},
-	async asyncData(params) {
-		let { route } = params;
-		let { data } = await axios.post(`${baseURL}/denet/post/getDetail`, {
-			baseInfo: {
-				appVersionCode: appVersionCode,
-				mid: '00000000-0000-0000-0000-000000000000',
-			},
+	async asyncData(context) {
+		let { route, error } = context;
+		let result = await getDetailSSR({
+			context,
 			params: {
 				postId: route.params.id || '',
 			},
+			url: `${baseURL}/denet/post/getDetail`,
 		});
-		if (data.code == 0 && data.data !== null) {
+		if (result.code == 0 && result.data !== null) {
 			return {
-				detail: data.data,
-				postBizData: JSON.parse(data.data.postBizData),
+				detail: result.data,
+				postBizData: JSON.parse(result.data.postBizData),
 			};
+		} else {
+			return error({
+				message: result.msg,
+				statusCode: 500,
+			});
 		}
 	},
 	created() {

+ 15 - 11
pages/nft/index.vue

@@ -38,7 +38,7 @@
 import axios from 'axios';
 import Cookies from 'js-cookie';
 import { Toast } from 'vant';
-import { isBrowser, appVersionCode } from '../../utils/help.js';
+import { isBrowser, appVersionCode, getDetailSSR } from '@/utils/help.js';
 import Report from '@/log-center/log';
 import { PlayType } from './../../types';
 
@@ -113,22 +113,26 @@ export default {
 			],
 		};
 	},
-	async asyncData(params) {
-		let { route } = params;
-		let { data } = await axios.post(`${baseURL}/denet/nft/project/getNftProjectInfo`, {
-			baseInfo: {
-				appVersionCode: appVersionCode,
-				mid: '00000000-0000-0000-0000-000000000000',
-			},
+	async asyncData(context) {
+		let { route, error } = context;
+		let result = await getDetailSSR({
+			context,
 			params: {
 				nftProjectId: route.params.id || '',
 			},
+			url: `${baseURL}/denet/nft/project/getNftProjectInfo`,
 		});
-		if (data.code == 0 && data.data !== null) {
-			console.log(data.data);
+
+		if (result.code == 0 && result.data !== null) {
+			console.log(result.data);
 			return {
-				detail: data.data,
+				detail: result.data,
 			};
+		} else {
+			return error({
+				message: result.msg,
+				statusCode: 500,
+			});
 		}
 	},
 	created() {

+ 18 - 15
pages/toolbox/index.vue

@@ -37,7 +37,7 @@
 import VLogo from '@/components/logo.vue';
 import InstallChrome from '@/components/InstallChrome.vue';
 import InstallExtension from '@/components/InstallExtension.vue';
-import { getBrowserType, baseURL, appVersionCode, jumpUrl, appType } from '@/utils/help.js';
+import { getBrowserType, baseURL, appVersionCode, jumpUrl, appType, getDetailSSR } from '@/utils/help.js';
 import axios from 'axios';
 import Cookies from 'js-cookie';
 import { Toast } from 'vant';
@@ -104,31 +104,34 @@ export default {
 		InstallChrome,
 		InstallExtension,
 	},
-	async asyncData(params) {
-		let { route } = params;
-		let { data } = await axios.post(`${baseURL}/denet/post/getDetail`, {
-			baseInfo: {
-				appVersionCode: appVersionCode,
-				mid: '00000000-0000-0000-0000-000000000000',
-			},
+	async asyncData(context) {
+		let { route, error } = context;
+		let result = await getDetailSSR({
+			context,
 			params: {
 				postId: route.params.id || '',
 			},
+			url: `${baseURL}/denet/post/getDetail`,
 		});
-		if (data.code == 0) {
-			if (data.data && data.data.postBizData && typeof data.data.postBizData == 'string') {
-				data.data.postBizData = JSON.parse(data.data.postBizData);
+
+		if (result.code == 0) {
+			if (result.data && result.data.postBizData && typeof result.data.postBizData == 'string') {
+				result.data.postBizData = JSON.parse(result.data.postBizData);
 			}
-			if (data.data.postBizData === null) {
-				data.data.postBizData = {
+			if (result.data.postBizData === null) {
+				result.data.postBizData = {
 					postUserInfo: {},
 				};
 			}
-			console.log('detail', data.data);
 
 			return {
-				detail: data.data,
+				detail: result.data,
 			};
+		} else {
+			return error({
+				message: result.msg,
+				statusCode: 500,
+			});
 		}
 	},
 	mounted() {

+ 14 - 10
pages/treasure/index.vue

@@ -42,7 +42,7 @@
 import axios from 'axios';
 import Cookies from 'js-cookie';
 import { Toast } from 'vant';
-import { isBrowser, appVersionCode, appType, denetExtensionId, detectExtension } from '../../utils/help.js';
+import { isBrowser, appVersionCode, appType, denetExtensionId, detectExtension, getDetailSSR } from '@/utils/help.js';
 import Report from '@/log-center/log';
 import MobileGuidePage from '@/components/MobileGuidePage.vue';
 import { PlayType } from '@/types';
@@ -121,23 +121,27 @@ export default {
 			],
 		};
 	},
-	async asyncData(params) {
-		let { route } = params;
-		let { data } = await axios.post(`${baseURL}/denet/post/treasure/detail`, {
-			baseInfo: {
-				appVersionCode: appVersionCode,
-				mid: '00000000-0000-0000-0000-000000000000',
-			},
+	async asyncData(context) {
+		let { route, error } = context;
+		let result = await getDetailSSR({
+			context,
 			params: {
 				postId: route.params.id || '',
 				pageName: 'landPage',
 			},
+			url: `${baseURL}/denet/post/treasure/detail`,
 		});
-		if (data.code == 0) {
+
+		if (result.code == 0) {
 			return {
-				detail: data.data,
+				detail: result.data,
 				pageLink: `${jumpUrl}treasure/${route.params.id}`,
 			};
+		} else {
+			return error({
+				message: result.msg,
+				statusCode: 500,
+			});
 		}
 	},
 	created() {

+ 15 - 10
pages/treasure/invite.vue

@@ -49,7 +49,7 @@
 import axios from 'axios';
 import Cookies from 'js-cookie';
 import { Toast } from 'vant';
-import { isBrowser, appVersionCode, appType, denetExtensionId, detectExtension } from '../../utils/help.js';
+import { isBrowser, appVersionCode, appType, denetExtensionId, detectExtension, getDetailSSR } from '@/utils/help.js';
 import Report from '@/log-center/log';
 import MobileGuidePage from '@/components/MobileGuidePage.vue';
 import { PlayType } from '@/types';
@@ -132,27 +132,32 @@ export default {
 			],
 		};
 	},
-	async asyncData(params) {
-		let { route } = params;
-		let { data } = await axios.post(`${baseURL}/denet/post/treasure/invite/detail`, {
-			baseInfo: {
-				appVersionCode: appVersionCode,
-				mid: '00000000-0000-0000-0000-000000000000',
-			},
+	async asyncData(context) {
+		const { route, error } = context;
+
+		let result = await getDetailSSR({
+			context,
 			params: {
 				inviteCode: route.params.id || '',
 				pageName: 'landPage',
 			},
+			url: `${baseURL}/denet/post/treasure/invite/detail`,
 		});
-		if (data.code == 0) {
+
+		if (result.code == 0) {
 			let pageLink = `${jumpUrl}treasure/invite/${route.params.id}`;
 			if (route.params.channel) {
 				pageLink = `${pageLink}/${route.params.channel}`;
 			}
 			return {
-				detail: data.data,
+				detail: result.data,
 				pageLink,
 			};
+		} else {
+			return error({
+				message: result.msg,
+				statusCode: 500,
+			});
 		}
 	},
 	created() {

+ 51 - 28
utils/help.js

@@ -1,6 +1,6 @@
 import Cookie from 'js-cookie';
 import { build } from 'eth-url-parser';
-
+import axios from 'axios';
 //application/vnd.chromium.remoting-viewer 可能为360特有 通过_mine判断是否是360
 export function isBrowser() {
 	var agent = navigator.userAgent.toLowerCase();
@@ -84,21 +84,21 @@ export const getEnvConfig = () => {
 
 export function getBrowser() {
 	let browser;
-    let UserAgent = navigator.userAgent.toLowerCase();
-    if (UserAgent.indexOf("chrome") > -1 && UserAgent.indexOf("safari") > -1) {
-        browser = `Chrome`;
-    } else if (UserAgent.indexOf("firefox") > -1) {
-        browser = `Firefox`;
-    } else if (UserAgent.indexOf("opera") > -1) {
-        browser = `Opera`;
-    } else if (UserAgent.indexOf("safari") > -1 && UserAgent.indexOf("chrome") == -1) {
-        browser = `Safari`;
-    } else if (UserAgent.indexOf("edge") > -1) {
-        browser = `Edge`;
-    } else {
-        browser = `Other`;
-    }
-    return browser;
+	let UserAgent = navigator.userAgent.toLowerCase();
+	if (UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1) {
+		browser = `Chrome`;
+	} else if (UserAgent.indexOf('firefox') > -1) {
+		browser = `Firefox`;
+	} else if (UserAgent.indexOf('opera') > -1) {
+		browser = `Opera`;
+	} else if (UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1) {
+		browser = `Safari`;
+	} else if (UserAgent.indexOf('edge') > -1) {
+		browser = `Edge`;
+	} else {
+		browser = `Other`;
+	}
+	return browser;
 }
 
 export function formatSecondsAsTime(secs) {
@@ -258,22 +258,45 @@ export function detectExtension(extensionId, callback) {
 export const maskUrl = (params, isMain = true) => {
 	let url = build({
 		function_name: isMain ? null : `transfer`,
-		...params
+		...params,
 	});
 
 	// url
 	return url.replace(`ethereum:`, `https://metamask.app.link/send/`);
-}
+};
 
 export const OSDetect = () => {
-    let u = navigator.userAgent;
-    // 安卓
-    if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
-        return 'android';
-    }
-
-    // iOS
-    if (u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
-        return 'ios';
-    }
+	let u = navigator.userAgent;
+	// 安卓
+	if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
+		return 'android';
+	}
+
+	// iOS
+	if (u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
+		return 'ios';
+	}
 };
+
+export async function getDetailSSR({ context = {}, params = {}, url = '' }) {
+	let { req } = context;
+	const headers = req && req.headers ? Object.assign({}, req.headers) : {};
+
+	let { data } = await axios.post(
+		url,
+		{
+			baseInfo: {
+				appVersionCode: appVersionCode,
+				mid: '00000000-0000-0000-0000-000000000000',
+			},
+			params,
+		},
+		{
+			headers: {
+				referer: headers['referer'] || '',
+				'x-forwarded-for': headers['x-forwarded-for'] || '',
+			},
+		}
+	);
+	return data;
+}