import axios from 'axios' import config from 'config' import debug from 'debug' var log = debug('hms') const { client_id, client_secret, project_id } = config.has('service.hms') ? config.get('service.hms') : {} const refreshToken = async () => { if (client_id) { const params = new URLSearchParams() params.append('grant_type', 'client_credentials') params.append('client_id', client_id) params.append('client_secret', client_secret) const res = await axios.post('https://oauth-login.cloud.huawei.com/oauth2/v3/token', params).catch(console.log) try { const access = res.data return access.access_token } catch (error) { log(error) return '' } } return '' } export const send = async (msg, tokenList = []) => { const adminToken = await refreshToken() if (adminToken && tokenList.length > 0) { const payload = { 'message': msg } const response = await axios.post(`https://push-api.cloud.huawei.com/v2/${project_id}/messages:send`, { 'validate_only': false, 'message': { 'android': { 'fast_app_target': 2 }, 'data': JSON.stringify(payload), 'priority': 'high', 'delayWhileIdle': false, 'token': tokenList } }, { headers: { 'Authorization': `Bearer ${adminToken}`, 'Content-Type': 'application/json' } }).catch(log) log(`hcm: ${response.status} ${JSON.stringify(response.data)}`) } }