Files
app/nextjs/components/atoms/Utility.js
T
2019-08-13 17:27:50 +02:00

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
}