Skip to content
This repository has been archived by the owner on Jan 13, 2025. It is now read-only.

Commit

Permalink
resolve comments
Browse files Browse the repository at this point in the history
Signed-off-by: georgi-l95 <glazarov95@gmail.com>
  • Loading branch information
georgi-l95 committed Aug 15, 2022
1 parent ba411b1 commit 8cd6895
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 31 deletions.
9 changes: 3 additions & 6 deletions packages/providers/lib/base-provider.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,11 @@ export interface ProviderOptions {
headers: Record<string, string>;
retry: RetryOptions;
}
export interface RetryOptions {
interface RetryOptions {
maxAttempts: number;
waitTime: number;
errorCodes: Array<number>;
}
export declare const DEFAULT_RETRY_OPTIONS: {
maxAttempts: number;
waitTime: number;
errorCodes: number[];
};
export declare class BaseProvider extends Provider {
_networkPromise: Promise<Network>;
_network: Network;
Expand All @@ -67,6 +62,7 @@ export declare class BaseProvider extends Provider {
private readonly hederaClient;
private readonly _mirrorNodeUrl;
constructor(network: Networkish | Promise<Network> | HederaNetworkConfigLike, options?: ProviderOptions);
private _getOptions;
private _configureAxiosInterceptor;
private _retryRequest;
private _makeRequest;
Expand Down Expand Up @@ -139,4 +135,5 @@ export declare class BaseProvider extends Provider {
poll(): Promise<void>;
purgeOldEvents(): void;
}
export {};
//# sourceMappingURL=base-provider.d.ts.map
2 changes: 1 addition & 1 deletion packages/providers/lib/base-provider.d.ts.map

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

22 changes: 13 additions & 9 deletions packages/providers/lib/base-provider.js

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

2 changes: 1 addition & 1 deletion packages/providers/lib/base-provider.js.map

Large diffs are not rendered by default.

24 changes: 16 additions & 8 deletions packages/providers/src.ts/base-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,13 +199,13 @@ export interface ProviderOptions {
retry: RetryOptions
}

export interface RetryOptions {
interface RetryOptions {
maxAttempts: number,
waitTime: number,
errorCodes: Array<number>
}

export const DEFAULT_RETRY_OPTIONS = {
const DEFAULT_RETRY_OPTIONS = {
maxAttempts: 3,
waitTime: 2,
errorCodes: [400, 408, 429, 500, 502, 503, 504, 511]
Expand Down Expand Up @@ -249,16 +249,12 @@ export class BaseProvider extends Provider {
super();
this._events = [];
this._emittedEvents = {};
this._options = this._getOptions(options);
this._previousPollingTimestamps = {};
this.formatter = new.target.getFormatter();
// If network is any, this Provider allows the underlying
// network to change dynamically, and we auto-detect the
// current network
if(options !== undefined && options !== null){
this._options = Object.keys(options).length !== 0 ? options : { headers : {}, retry: DEFAULT_RETRY_OPTIONS };
}else{
this._options = { headers : {}, retry: DEFAULT_RETRY_OPTIONS }
}
defineReadOnly(this, "anyNetwork", (network === "any"));
if (this.anyNetwork) {
network = this.detectNetwork();
Expand Down Expand Up @@ -304,6 +300,18 @@ export class BaseProvider extends Provider {
this._configureAxiosInterceptor(this._options);
}

private _getOptions(options: ProviderOptions){
let tmpOptions = (typeof options === 'object' && Object.keys(options).length)
? options
: { headers : {}, retry: DEFAULT_RETRY_OPTIONS };

tmpOptions.retry = (typeof options === 'object' && Object.keys(options).length === 3)
? tmpOptions.retry
: DEFAULT_RETRY_OPTIONS;

return tmpOptions;
}

private _configureAxiosInterceptor(options: ProviderOptions){
axios.interceptors.request.use(function (config) {
if(!config._retriedRequest){
Expand All @@ -326,7 +334,7 @@ export class BaseProvider extends Provider {
originalRequest._retriedRequest = true;
originalRequest._attempts += 1;
originalRequest._waitTime = originalRequest._waitTime * originalRequest._attempts;
if(originalRequest._attempts === this._options.retry.maxAttempts){
if(originalRequest._attempts >= this._options.retry.maxAttempts){
originalRequest._retry = false;
}
return this._retryRequest(originalRequest._waitTime, originalRequest);
Expand Down
7 changes: 1 addition & 6 deletions packages/tests/src.ts/test-providers.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1016,12 +1016,7 @@ describe('Providers.spec', () => {

describe("Test Hedera Provider Options", function () {
const options = {
headers: { testHeader: '123' },
retry: {
maxAttempts: 1,
waitTime: 5,
errorCodes: [304]}
};
headers: { testHeader: '123' }};

it("DefaultHederaProvider", () => {
const provider = new DefaultHederaProvider(HederaNetworks.LOCAL, options);
Expand Down

0 comments on commit 8cd6895

Please sign in to comment.