Skip to content

Commit df4e16e

Browse files
authored
Merge pull request #362 from NEMStudios/task/g361_network_in_http
Task/g361 network in http
2 parents daa8cf6 + 24a5690 commit df4e16e

16 files changed

+67
-68
lines changed

e2e/infrastructure/NamespaceHttp.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ describe('NamespaceHttp', () => {
4545
const json = JSON.parse(data);
4646
config = json;
4747
account = Account.createFromPrivateKey(json.testAccount.privateKey, NetworkType.MIJIN_TEST);
48-
namespaceHttp = new NamespaceHttp(json.apiUrl);
48+
namespaceHttp = new NamespaceHttp(json.apiUrl, NetworkType.MIJIN_TEST);
4949
transactionHttp = new TransactionHttp(json.apiUrl);
5050
generationHash = json.generationHash;
5151
done();

src/infrastructure/AccountHttp.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {catchError, map} from 'rxjs/operators';
1919
import {AccountInfo} from '../model/account/AccountInfo';
2020
import { ActivityBucket } from '../model/account/ActivityBucket';
2121
import {Address} from '../model/account/Address';
22+
import { NetworkType } from '../model/blockchain/NetworkType';
2223
import {Mosaic} from '../model/mosaic/Mosaic';
2324
import {MosaicId} from '../model/mosaic/MosaicId';
2425
import {AggregateTransaction} from '../model/transaction/AggregateTransaction';
@@ -28,7 +29,6 @@ import {AccountRepository} from './AccountRepository';
2829
import { AccountInfoDTO,
2930
AccountRoutesApi } from './api';
3031
import {Http} from './Http';
31-
import {NetworkHttp} from './NetworkHttp';
3232
import {QueryParams} from './QueryParams';
3333
import {CreateTransactionFromDTO} from './transaction/CreateTransactionFromDTO';
3434

@@ -47,11 +47,10 @@ export class AccountHttp extends Http implements AccountRepository {
4747
/**
4848
* Constructor
4949
* @param url
50-
* @param networkHttp
50+
* @param networkType
5151
*/
52-
constructor(url: string, networkHttp?: NetworkHttp) {
53-
networkHttp = networkHttp == null ? new NetworkHttp(url) : networkHttp;
54-
super(networkHttp);
52+
constructor(url: string, networkType?: NetworkType) {
53+
super(url, networkType);
5554
this.accountRoutesApi = new AccountRoutesApi(url);
5655
}
5756

src/infrastructure/BlockHttp.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ import {PublicAccount} from '../model/account/PublicAccount';
2020
import {BlockInfo} from '../model/blockchain/BlockInfo';
2121
import { MerklePathItem } from '../model/blockchain/MerklePathItem';
2222
import { MerkleProofInfo } from '../model/blockchain/MerkleProofInfo';
23+
import { NetworkType } from '../model/blockchain/NetworkType';
2324
import {Transaction} from '../model/transaction/Transaction';
2425
import {UInt64} from '../model/UInt64';
2526
import { BlockRoutesApi } from './api';
2627
import {BlockRepository} from './BlockRepository';
2728
import {Http} from './Http';
28-
import { NetworkHttp } from './NetworkHttp';
2929
import {QueryParams} from './QueryParams';
3030
import {CreateTransactionFromDTO, extractBeneficiary} from './transaction/CreateTransactionFromDTO';
3131

@@ -58,11 +58,10 @@ export class BlockHttp extends Http implements BlockRepository {
5858
/**
5959
* Constructor
6060
* @param url
61-
* @param networkHttp
61+
* @param networkType
6262
*/
63-
constructor(url: string, networkHttp?: NetworkHttp) {
64-
networkHttp = networkHttp == null ? new NetworkHttp(url) : networkHttp;
65-
super(networkHttp);
63+
constructor(url: string, networkType?: NetworkType) {
64+
super(url, networkType);
6665
this.blockRoutesApi = new BlockRoutesApi(url);
6766
}
6867

src/infrastructure/ChainHttp.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export class ChainHttp extends Http implements ChainRepository {
3939
* @param url
4040
*/
4141
constructor(url: string) {
42-
super();
42+
super(url);
4343
this.chainRoutesApi = new ChainRoutesApi(url);
4444
}
4545

src/infrastructure/DiagnosticHttp.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export class DiagnosticHttp extends Http implements DiagnosticRepository {
3939
* @param url
4040
*/
4141
constructor(url: string) {
42-
super();
42+
super(url);
4343
this.diagnosticRoutesApi = new DiagnosticRoutesApi(url);
4444
}
4545

src/infrastructure/Http.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,41 @@
1414
* limitations under the License.
1515
*/
1616

17-
import {Observable, of as observableOf} from 'rxjs';
18-
import {map} from 'rxjs/operators';
17+
// tslint:disable-next-line: ordered-imports
18+
import {from as observableFrom, Observable, of as observableOf, throwError} from 'rxjs';
19+
import {catchError, map} from 'rxjs/operators';
1920
import {NetworkType} from '../model/blockchain/NetworkType';
20-
import {NetworkHttp} from './NetworkHttp';
21+
import { NodeRoutesApi } from './api/apis';
2122
import { QueryParams } from './QueryParams';
2223
/**
2324
* Http extended by all http services
2425
*/
2526
export abstract class Http {
26-
private networkHttp: NetworkHttp;
27-
private networkType: NetworkType;
27+
protected readonly url: string;
28+
protected networkType: NetworkType;
2829

2930
/**
3031
* Constructor
31-
* @param url
32-
* @param networkHttp
32+
* @param url Base catapult-rest url
33+
* @param networkType
3334
*/
34-
constructor(networkHttp?: NetworkHttp) {
35-
if (networkHttp) {
36-
this.networkHttp = networkHttp;
35+
constructor(url: string, networkType?: NetworkType) {
36+
if (networkType) {
37+
this.networkType = networkType;
3738
}
39+
this.url = url;
3840
}
3941

4042
getNetworkTypeObservable(): Observable<NetworkType> {
4143
let networkTypeResolve;
42-
if (this.networkType == null) {
43-
networkTypeResolve = this.networkHttp.getNetworkType().pipe(map((networkType) => {
44-
this.networkType = networkType;
45-
return networkType;
46-
}));
44+
if (!this.networkType) {
45+
networkTypeResolve = observableFrom(new NodeRoutesApi(this.url).getNodeInfo()).pipe(
46+
map(({body}) => {
47+
this.networkType = body.networkIdentifier;
48+
return body.networkIdentifier;
49+
}),
50+
catchError((error) => throwError(this.errorHandling(error))),
51+
);
4752
} else {
4853
networkTypeResolve = observableOf(this.networkType);
4954
}

src/infrastructure/MetadataHttp.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {from as observableFrom, Observable, throwError} from 'rxjs';
1818
import {catchError, map} from 'rxjs/operators';
1919
import { Convert } from '../core/format/Convert';
2020
import { Address } from '../model/account/Address';
21+
import { NetworkType } from '../model/blockchain/NetworkType';
2122
import { Metadata } from '../model/metadata/Metadata';
2223
import { MetadataEntry } from '../model/metadata/MetadataEntry';
2324
import { MetadataType } from '../model/metadata/MetadataType';
@@ -27,7 +28,6 @@ import {UInt64} from '../model/UInt64';
2728
import { MetadataDTO, MetadataRoutesApi } from './api';
2829
import {Http} from './Http';
2930
import { MetadataRepository } from './MetadataRepository';
30-
import {NetworkHttp} from './NetworkHttp';
3131
import { QueryParams } from './QueryParams';
3232

3333
/**
@@ -45,11 +45,10 @@ export class MetadataHttp extends Http implements MetadataRepository {
4545
/**
4646
* Constructor
4747
* @param url
48-
* @param networkHttp
48+
* @param networkType
4949
*/
50-
constructor(url: string, networkHttp?: NetworkHttp) {
51-
networkHttp = networkHttp == null ? new NetworkHttp(url) : networkHttp;
52-
super(networkHttp);
50+
constructor(url: string, networkType?: NetworkType) {
51+
super(url, networkType);
5352
this.metadataRoutesApi = new MetadataRoutesApi(url);
5453
}
5554

src/infrastructure/MosaicHttp.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ import {from as observableFrom, Observable, throwError} from 'rxjs';
1818
import {catchError, map, mergeMap} from 'rxjs/operators';
1919
import { Address } from '../model/account/Address';
2020
import {PublicAccount} from '../model/account/PublicAccount';
21+
import { NetworkType } from '../model/blockchain/NetworkType';
2122
import {MosaicFlags} from '../model/mosaic/MosaicFlags';
2223
import {MosaicId} from '../model/mosaic/MosaicId';
2324
import {MosaicInfo} from '../model/mosaic/MosaicInfo';
2425
import {UInt64} from '../model/UInt64';
2526
import { MosaicRoutesApi } from './api';
2627
import {Http} from './Http';
2728
import {MosaicRepository} from './MosaicRepository';
28-
import {NetworkHttp} from './NetworkHttp';
2929

3030
/**
3131
* Mosaic http repository.
@@ -42,11 +42,10 @@ export class MosaicHttp extends Http implements MosaicRepository {
4242
/**
4343
* Constructor
4444
* @param url
45-
* @param networkHttp
45+
* @param networkType
4646
*/
47-
constructor(url: string, networkHttp?: NetworkHttp) {
48-
networkHttp = networkHttp == null ? new NetworkHttp(url) : networkHttp;
49-
super(networkHttp);
47+
constructor(url: string, networkType?: NetworkType) {
48+
super(url, networkType);
5049
this.mosaicRoutesApi = new MosaicRoutesApi(url);
5150
}
5251

src/infrastructure/MultisigHttp.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ import {Address} from '../model/account/Address';
2020
import {MultisigAccountGraphInfo} from '../model/account/MultisigAccountGraphInfo';
2121
import {MultisigAccountInfo} from '../model/account/MultisigAccountInfo';
2222
import {PublicAccount} from '../model/account/PublicAccount';
23+
import { NetworkType } from '../model/blockchain/NetworkType';
2324
import { MultisigRoutesApi } from './api/multisigRoutesApi';
2425
import {Http} from './Http';
2526
import { MultisigRepository } from './MultisigRepository';
26-
import {NetworkHttp} from './NetworkHttp';
2727

2828
/**
2929
* Multisig http repository.
@@ -40,11 +40,10 @@ export class MultisigHttp extends Http implements MultisigRepository {
4040
/**
4141
* Constructor
4242
* @param url
43-
* @param networkHttp
43+
* @param networkType
4444
*/
45-
constructor(url: string, networkHttp?: NetworkHttp) {
46-
networkHttp = networkHttp == null ? new NetworkHttp(url) : networkHttp;
47-
super(networkHttp);
45+
constructor(url: string, networkType?: NetworkType) {
46+
super(url, networkType);
4847
this.multisigRoutesApi = new MultisigRoutesApi(url);
4948
}
5049

src/infrastructure/NamespaceHttp.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {Convert as convert, RawAddress as AddressLibrary} from '../core/format';
1919
import { AccountNames } from '../model/account/AccountNames';
2020
import {Address} from '../model/account/Address';
2121
import {PublicAccount} from '../model/account/PublicAccount';
22+
import { NetworkType } from '../model/blockchain/NetworkType';
2223
import {MosaicId} from '../model/mosaic/MosaicId';
2324
import { MosaicNames } from '../model/mosaic/MosaicNames';
2425
import {AddressAlias} from '../model/namespace/AddressAlias';
@@ -33,7 +34,6 @@ import {UInt64} from '../model/UInt64';
3334
import { NamespaceRoutesApi } from './api';
3435
import {Http} from './Http';
3536
import {NamespaceRepository} from './NamespaceRepository';
36-
import {NetworkHttp} from './NetworkHttp';
3737
import {QueryParams} from './QueryParams';
3838

3939
/**
@@ -51,11 +51,10 @@ export class NamespaceHttp extends Http implements NamespaceRepository {
5151
/**
5252
* Constructor
5353
* @param url
54-
* @param networkHttp
54+
* @param networkType
5555
*/
56-
constructor(url: string, networkHttp?: NetworkHttp) {
57-
networkHttp = networkHttp == null ? new NetworkHttp(url) : networkHttp;
58-
super(networkHttp);
56+
constructor(url: string, networkType?: NetworkType) {
57+
super(url, networkType);
5958
this.namespaceRoutesApi = new NamespaceRoutesApi(url);
6059
}
6160

0 commit comments

Comments
 (0)