All files / src/parsers index.ts

100% Statements 7/7
100% Branches 1/1
100% Functions 0/0
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57                    84x                                                                   141x 141x 129x 129x   12x 12x            
import parseV1 from './parseV1';
import parseV2 from './parseV2';
import parseV3 from './parseV3';
import type { Issuer } from '../models/Issuer';
import type { Blockcerts } from '../models/Blockcerts';
import type { SignatureImage } from '../models';
import type { BlockcertsVersion } from './helpers/retrieveBlockcertsVersion';
import { retrieveBlockcertsVersion } from './helpers/retrieveBlockcertsVersion';
import type { BlockcertsV3Display } from '../models/BlockcertsV3';
 
export const versionParserMap = {
  1: parseV1,
  2: parseV2,
  3: parseV3
};
 
export interface ParsedCertificate {
  certificateImage?: string;
  description?: string;
  display?: BlockcertsV3Display;
  expires?: string;
  id: string;
  isFormatValid?: boolean;
  error?: string;
  issuedOn?: string;
  validFrom?: string;
  issuer: Issuer;
  metadataJson?: string;
  name?: string;
  recipientFullName?: string;
  recordLink?: string;
  revocationKey?: string;
  sealImage?: string;
  signature?: string;
  signatureImage?: SignatureImage[];
  subtitle?: string;
}
 
export {
  retrieveBlockcertsVersion
};
 
export default async function parseJSON (certificateJson: Blockcerts, locale: string = ''): Promise<ParsedCertificate> {
  try {
    const blockcertsVersion: BlockcertsVersion = retrieveBlockcertsVersion(certificateJson['@context']);
    const parsedCertificate = await versionParserMap[blockcertsVersion.versionNumber](certificateJson, locale);
    parsedCertificate.isFormatValid = true;
    return parsedCertificate;
  } catch (error) {
    console.error(error);
    return {
      isFormatValid: false,
      error: error.message
    } as ParsedCertificate;
  }
}