50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
import api from '@/api/api.js'
|
|
import sortObj from '@/utils/sort'
|
|
import version from '@/utils/version.js'
|
|
import client_type from '@/utils/client_type.js'
|
|
import { Base64 } from 'js-base64'
|
|
import { md5 } from 'js-md5'
|
|
|
|
function formatString(obj) {
|
|
let concatenated = ''
|
|
for (const key in obj) {
|
|
if (concatenated) {
|
|
concatenated += key + obj[key]
|
|
} else {
|
|
concatenated = key + obj[key]
|
|
}
|
|
}
|
|
return concatenated
|
|
}
|
|
|
|
function toBase64Url(str) {
|
|
return str.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '')
|
|
}
|
|
|
|
export async function createSignedPostData(extraData = {}) {
|
|
try {
|
|
const res = await api.getTimeStamp()
|
|
const timestamp = res.data.timestamp.toString()
|
|
const basePayload = {
|
|
version: version,
|
|
user_uuid: '',
|
|
client_type: client_type,
|
|
timestamp: timestamp
|
|
}
|
|
const postData = { ...basePayload, ...extraData }
|
|
const sorted = sortObj(postData)
|
|
const str1 = formatString(sorted).replace(' ', '')
|
|
const str2 = str1 + md5(timestamp)
|
|
const str3 = md5(str2)
|
|
const sign = toBase64Url(Base64.encode(str3))
|
|
return { postData, sign }
|
|
} catch (err) {
|
|
console.log(err)
|
|
return { postData: {}, sign: '' }
|
|
}
|
|
}
|
|
|
|
export default { createSignedPostData }
|
|
|
|
|