30 lines
959 B
JavaScript
30 lines
959 B
JavaScript
'use strict';
|
|
|
|
export const payloadFromSubscription = function(subscription) {
|
|
var key = subscription.getKey ? subscription.getKey('p256dh') : '';
|
|
var auth = subscription.getKey ? subscription.getKey('auth') : '';
|
|
// NOTE: p256dg and auth are encoded into std base64, NOT urlsafe base64
|
|
return {
|
|
endpoint: subscription.endpoint,
|
|
keys: {
|
|
p256dh: key ? btoa(String.fromCharCode.apply(null, new Uint8Array(key))) : '',
|
|
auth: auth ? btoa(String.fromCharCode.apply(null, new Uint8Array(auth))) : ''
|
|
},
|
|
}
|
|
}
|
|
|
|
export const urlB64ToUint8Array= function(base64String) {
|
|
const padding = '='.repeat((4 - base64String.length % 4) % 4)
|
|
const base64 = (base64String + padding)
|
|
.replace(/\-/g, '+')
|
|
.replace(/_/g, '/')
|
|
|
|
const rawData = window.atob(base64)
|
|
const outputArray = new Uint8Array(rawData.length)
|
|
|
|
for (let i = 0; i < rawData.length; ++i) {
|
|
outputArray[i] = rawData.charCodeAt(i)
|
|
}
|
|
return outputArray
|
|
}
|