-
Berend Sliedrecht authored
Signed-off-by:
Berend Sliedrecht <berend@animo.id>
Berend Sliedrecht authoredSigned-off-by:
Berend Sliedrecht <berend@animo.id>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
register.ts 1.45 KiB
import type { LedgerIds } from '../../config/ledger.js';
import { logger, logAxiosError } from '@ocm/shared';
import axios from 'axios';
import { LEDGERS } from '../../config/ledger.js';
type RegisterPublicDidOptions = {
ledgerIds: Array<LedgerIds>;
seed: string;
};
type LedgerRegistrationBody = {
role?: 'ENDORSER';
seed: string;
};
type RegisterPublicDidResponse = {
seed: string;
did: string;
verkey: string;
};
export const registerPublicDids = async ({
ledgerIds,
seed,
}: RegisterPublicDidOptions): Promise<Array<RegisterPublicDidResponse>> => {
const responses: Array<RegisterPublicDidResponse> = [];
for (const ledgerId of ledgerIds) {
try {
const ledgerRegisterUrl = LEDGERS[ledgerId].registerNymUrl;
const ledgerNamespace = LEDGERS[ledgerId].namespace;
const body: LedgerRegistrationBody = {
role: 'ENDORSER',
seed,
};
const res = await axios({
method: 'post',
url: ledgerRegisterUrl,
data: body,
});
if (res.data) {
logger.info('Agent DID registered.');
res.data.did = `did:indy:${ledgerNamespace}:${res.data.did}`;
responses.push(res.data);
} else {
throw new Error('No data was returned from the ledger request');
}
} catch (err) {
// if did is already registered on IdUnion it will catch 500, but it's ok
if (err instanceof axios.AxiosError) logAxiosError(err);
}
}
return responses;
};