Skip to content

Commit

Permalink
Merge pull request #39 from multiversx/get-guardian-data
Browse files Browse the repository at this point in the history
Implement getGuardianData()
  • Loading branch information
andreibancioiu authored Apr 18, 2023
2 parents 16a90dc + 81367b5 commit 7bb49e6
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 8 deletions.
2 changes: 0 additions & 2 deletions .github/workflows/package-lock-checks.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
name: Check package-lock.json

on:
pull_request:
branches: [ main ]
workflow_dispatch:

jobs:
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@multiversx/sdk-network-providers",
"version": "1.3.0",
"version": "1.4.0",
"lockfileVersion": 2,
"requires": true,
"author": "MultiversX",
Expand Down
51 changes: 50 additions & 1 deletion src/accounts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { Address } from "./primitives";
/**
* A plain view of an account, as queried from the Network.
*/
export class AccountOnNetwork {
export class AccountOnNetwork {
address: IAddress = new Address("");
nonce: number = 0;
balance: BigNumber = new BigNumber(0);
Expand All @@ -29,3 +29,52 @@ import { Address } from "./primitives";
}
}

export class GuardianData {
guarded: boolean = false;
activeGuardian?: Guardian;
pendingGuardian?: Guardian;

constructor(init?: Partial<GuardianData>) {
Object.assign(this, init);
}

static fromHttpResponse(response: any): GuardianData {
const result = new GuardianData();

result.guarded = response["guarded"] || false;

if (response["activeGuardian"]) {
result.activeGuardian = Guardian.fromHttpResponse(response["activeGuardian"]);
}

if (response["pendingGuardian"]) {
result.pendingGuardian = Guardian.fromHttpResponse(response["pendingGuardian"]);
}

return result;
}

getCurrentGuardianAddress(): IAddress | undefined {
if (!this.guarded) {
return undefined;
}

return this.activeGuardian?.address;
}
}

class Guardian {
activationEpoch: number = 0;
address: IAddress = new Address("");
serviceUID: string = "";

static fromHttpResponse(responsePart: any): Guardian {
const result = new Guardian();

result.activationEpoch = Number(responsePart["activationEpoch"] || 0);
result.address = new Address(responsePart["address"] || "");
result.serviceUID = responsePart["serviceUID"] || "";

return result;
}
}
6 changes: 5 additions & 1 deletion src/apiNetworkProvider.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import axios, { AxiosRequestConfig } from "axios";
import { AccountOnNetwork } from "./accounts";
import { AccountOnNetwork, GuardianData } from "./accounts";
import { defaultAxiosConfig, defaultPagination } from "./config";
import { ContractQueryRequest } from "./contractQueryRequest";
import { ContractQueryResponse } from "./contractQueryResponse";
Expand Down Expand Up @@ -55,6 +55,10 @@ export class ApiNetworkProvider implements INetworkProvider {
return account;
}

async getGuardianData(address: IAddress): Promise<GuardianData> {
return await this.backingProxyNetworkProvider.getGuardianData(address);
}

async getFungibleTokensOfAccount(address: IAddress, pagination?: IPagination): Promise<FungibleTokenOfAccountOnNetwork[]> {
pagination = pagination || defaultPagination;

Expand Down
8 changes: 7 additions & 1 deletion src/proxyNetworkProvider.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import axios, { AxiosRequestConfig } from "axios";
import { AccountOnNetwork } from "./accounts";
import { AccountOnNetwork, GuardianData } from "./accounts";
import { defaultAxiosConfig } from "./config";
import { EsdtContractAddress } from "./constants";
import { ContractQueryRequest } from "./contractQueryRequest";
Expand Down Expand Up @@ -55,6 +55,12 @@ export class ProxyNetworkProvider implements INetworkProvider {
return account;
}

async getGuardianData(address: IAddress): Promise<GuardianData> {
const response = await this.doGetGeneric(`address/${address.bech32()}/guardian-data`);
const accountGuardian = GuardianData.fromHttpResponse(response.guardianData);
return accountGuardian;
}

async getFungibleTokensOfAccount(address: IAddress, _pagination?: IPagination): Promise<FungibleTokenOfAccountOnNetwork[]> {
let url = `address/${address.bech32()}/esdt`;
let response = await this.doGetGeneric(url);
Expand Down

0 comments on commit 7bb49e6

Please sign in to comment.