summaryrefslogtreecommitdiff
path: root/web/src/util.tsx
blob: 1b1ccc06cf4428d08ca8e7f9f7c33497b7fff544 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
export function escapeHtml( html: string ) {
  const entityMap = {
    '&': '&',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#39;',
    '/': '&#x2F;',
    '`': '&#x60;',
    '=': '&#x3D;'
  };

  return String( html ).replace( /[&<>"'`=\/]/g, ( s ) => {
    return entityMap[s];
  } );
}

export function parseJWT( token: string ) : any {
  const parts = token.split( '.' );
  let encoded = parts[1];
  encoded = encoded.replace(/-/g, '+').replace(/_/g, '/');
  const pad = encoded.length % 4;
  if( pad === 1 )
    throw new Error( 'what the fuck' );
  if( pad > 1 )
    encoded += new Array( 5 - pad ).join( '=' );

  const payload = JSON.parse( atob( encoded ) );
  return payload;
}

export function sizeHumanReadable( size: number ) {
  if( size < 1024 )
    return size + ' B';
  else if( size < 1024 * 1024 )
    return ( size / 1024 ).toFixed( 2 ) + ' KB';
  else if( size < 1024 * 1024 * 1024 )
    return ( size / 1024 / 1024 ).toFixed( 2 ) + ' MB';
  else
    return ( size / 1024 / 1024 / 1024 ).toFixed( 2 ) + ' GB';
}