// grace reuqest 请求库相关配置

export default {

	// api 基础 url
	apiBaseUrl: 'http://47.107.70.17/prod-api',

	// 调试模式 [ false 关闭调试输出，项目发包时请设置此项为 false ]
	debug: true,

	// 本地 Token 数据键名称
	localTokenKeyName: 'reqToken',

	// 用户登录 Token 数据键名称
	userTokenKeyName: 'uToken',

	// token 有效期, 单位 秒 ，要与后端保持一致
	expiredTime: 3600,

	// post 方式 header[content-type] 默认值
	postHeaderDefault: 'application/x-www-form-urlencoded',

	// 接口请求秘钥 与后端开发人员协商格式及获取
	apiKey: '******',

	// 基础 token 获取 api 接口地址
	baseTokenUrl: 'https://www.******.com/api/srequest/makeToken',

	// 从服务器获取 token 函数
	// 因后端语言不同、思路不同，请跟据自己的 api 情况完成 token 获取函数
	// 一个示例，实际开发请跟据自己情况复写此函数	
	getToken: function() {
		var apiKey = this.apiKey;
		var baseTokenUrl = this.baseTokenUrl;
		return new Promise((resolve, reject) => {
			// 发起请求
			uni.request({
				// token 授权 api 服务器地址
				url: baseTokenUrl,
				// 请求秘钥
				data: {
					'appKey': apiKey
				},
				// 请求方式 POST
				method: "POST",
				// headers
				header: {
					'content-type': 'application/x-www-form-urlencoded'
				},
				// 返回值类型
				dataType: "json"
			}).then((res) => {
				var data = res.data;
				if (data.status == 'ok') {
					// 将 token 保存在本地并记录获取时间
					uni.setStorageSync(this.localTokenKeyName, data.data);
					// 记录时间
					var dateObj = new Date();
					var cTime = dateObj.getTime();
					cTime += '';
					uni.setStorageSync('GraceRequestTokenTime', cTime);
					resolve(data.data);
				} else {
					reject('token error');
				}
			}).catch((e) => {
				reject('token error');
			});
		});
	},

	// 记录 用户 token 到本地方法
	// 格式 loginToken-uid
	// 您可以根据项目需要继续改进
	writeLoginToken: function(token, uid) {
		var loginToken = token + '-' + uid;
		uni.setStorageSync(this.userTokenKeyName, loginToken);
		return;
	},

	// 获取基础 token 失败提示函数
	tokenErrorMessage: function() {
		uni.showToast({
			title: "请求失败, 请重试",
			icon: "none"
		})
	}
}
