Skip to content

Commit d752678

Browse files
committed
Fixed #451
- Added positionEnum for merklePathItem - Changed to use comma separated string for transaction type filtering - Added generationHash in NodeInfo
1 parent c4878c7 commit d752678

File tree

16 files changed

+148
-74
lines changed

16 files changed

+148
-74
lines changed

e2e/infrastructure/AccountHttp.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { expect } from 'chai';
1818
import { AccountRepository } from '../../src/infrastructure/AccountRepository';
1919
import { MultisigRepository } from '../../src/infrastructure/MultisigRepository';
2020
import { NamespaceRepository } from '../../src/infrastructure/NamespaceRepository';
21-
import { QueryParams } from '../../src/infrastructure/QueryParams';
21+
import { TransactionSearchCriteria } from '../../src/infrastructure/TransactionSearchCriteria';
2222
import { Account } from '../../src/model/account/Account';
2323
import { Address } from '../../src/model/account/Address';
2424
import { PublicAccount } from '../../src/model/account/PublicAccount';
@@ -213,7 +213,7 @@ describe('AccountHttp', () => {
213213

214214
describe('transactions', () => {
215215
it('should not return accounts when account does not exist', () => {
216-
return accountRepository.getAccountInfo(Account.generateNewAccount(networkType).address).toPromise().then((r) => {
216+
return accountRepository.getAccountInfo(Account.generateNewAccount(networkType).address).toPromise().then(() => {
217217
return Promise.reject('should fail!');
218218
}, (err) => {
219219
const error = JSON.parse(err.message);
@@ -227,7 +227,7 @@ describe('AccountHttp', () => {
227227
describe('transactions', () => {
228228
it('should call transactions successfully by type', async () => {
229229
const transactions = await accountRepository.getAccountTransactions(
230-
publicAccount.address, {transactionType: TransactionType.TRANSFER} as QueryParams).toPromise();
230+
publicAccount.address, new TransactionSearchCriteria().setTransactionTypes([TransactionType.TRANSFER])).toPromise();
231231
expect(transactions.length).to.be.greaterThan(0);
232232
transactions.forEach((t) => {
233233
expect(t.type).to.be.eq(TransactionType.TRANSFER);

e2e/infrastructure/BlockHttp.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ describe('BlockHttp', () => {
111111
});
112112

113113
it('should return block transactions data given height with paginated transactionId', async () => {
114-
const transactions = await blockRepository.getBlockTransactions(UInt64.fromUint(1), new QueryParams(10, nextId)).toPromise();
114+
const transactions = await blockRepository.getBlockTransactions(UInt64.fromUint(1),
115+
new QueryParams().setPageSize(10).setId(nextId)).toPromise();
115116
expect(transactions[0].transactionInfo!.id).to.be.equal(firstId);
116117
expect(transactions.length).to.be.greaterThan(0);
117118
});

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"js-sha512": "^0.8.0",
6868
"long": "^4.0.0",
6969
"merkletreejs": "^0.1.7",
70-
"nem2-sdk-openapi-typescript-node-client": "0.8.3",
70+
"nem2-sdk-openapi-typescript-node-client": "0.8.4",
7171
"request": "^2.88.0",
7272
"request-promise-native": "^1.0.5",
7373
"ripemd160": "^2.0.2",

src/infrastructure/AccountHttp.ts

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { AccountRepository } from './AccountRepository';
2929
import { Http } from './Http';
3030
import { QueryParams } from './QueryParams';
3131
import { CreateTransactionFromDTO } from './transaction/CreateTransactionFromDTO';
32+
import { TransactionSearchCriteria } from './TransactionSearchCriteria';
3233

3334
/**
3435
* Account http repository.
@@ -108,6 +109,7 @@ export class AccountHttp extends Http implements AccountRepository {
108109
UInt64.fromNumericString(dto.account.importance),
109110
UInt64.fromNumericString(dto.account.importanceHeight),
110111
);
112+
111113
}
112114

113115
/**
@@ -116,18 +118,18 @@ export class AccountHttp extends Http implements AccountRepository {
116118
* @param queryParams - (Optional) Query params
117119
* @returns Observable<Transaction[]>
118120
*/
119-
public getAccountTransactions(address: Address, queryParams?: QueryParams): Observable<Transaction[]> {
121+
public getAccountTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<Transaction[]> {
120122
return observableFrom(
121123
this.accountRoutesApi.getAccountConfirmedTransactions(address.plain(),
122-
this.queryParams(queryParams).pageSize,
123-
this.queryParams(queryParams).id,
124-
this.queryParams(queryParams).order,
125-
this.queryParams(queryParams).transactionType)).pipe(
126-
map(({body}) => body.map((transactionDTO) => {
127-
return CreateTransactionFromDTO(transactionDTO);
128-
})),
129-
catchError((error) => throwError(this.errorHandling(error))),
130-
);
124+
this.transactionSearchCriteria(queryParams).pageSize,
125+
this.transactionSearchCriteria(queryParams).id,
126+
this.transactionSearchCriteria(queryParams).ordering,
127+
this.transactionSearchCriteria(queryParams).type)).pipe(
128+
map(({body}) => body.map((transactionDTO) => {
129+
return CreateTransactionFromDTO(transactionDTO);
130+
})),
131+
catchError((error) => throwError(this.errorHandling(error))),
132+
);
131133
}
132134

133135
/**
@@ -137,13 +139,13 @@ export class AccountHttp extends Http implements AccountRepository {
137139
* @param queryParams - (Optional) Query params
138140
* @returns Observable<Transaction[]>
139141
*/
140-
public getAccountIncomingTransactions(address: Address, queryParams?: QueryParams): Observable <Transaction[]> {
142+
public getAccountIncomingTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable <Transaction[]> {
141143
return observableFrom(
142144
this.accountRoutesApi.getAccountIncomingTransactions(address.plain(),
143-
this.queryParams(queryParams).pageSize,
144-
this.queryParams(queryParams).id,
145-
this.queryParams(queryParams).order),
146-
this.queryParams(queryParams).transactionType).pipe(
145+
this.transactionSearchCriteria(queryParams).pageSize,
146+
this.transactionSearchCriteria(queryParams).id,
147+
this.transactionSearchCriteria(queryParams).ordering),
148+
this.transactionSearchCriteria(queryParams).type).pipe(
147149
map(({body}) => body.map((transactionDTO) => {
148150
return CreateTransactionFromDTO(transactionDTO);
149151
})),
@@ -158,13 +160,13 @@ export class AccountHttp extends Http implements AccountRepository {
158160
* @param queryParams - (Optional) Query params
159161
* @returns Observable<Transaction[]>
160162
*/
161-
public getAccountOutgoingTransactions(address: Address, queryParams?: QueryParams): Observable <Transaction[]> {
163+
public getAccountOutgoingTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable <Transaction[]> {
162164
return observableFrom(
163165
this.accountRoutesApi.getAccountOutgoingTransactions(address.plain(),
164-
this.queryParams(queryParams).pageSize,
165-
this.queryParams(queryParams).id,
166-
this.queryParams(queryParams).order),
167-
this.queryParams(queryParams).transactionType).pipe(
166+
this.transactionSearchCriteria(queryParams).pageSize,
167+
this.transactionSearchCriteria(queryParams).id,
168+
this.transactionSearchCriteria(queryParams).ordering),
169+
this.transactionSearchCriteria(queryParams).type).pipe(
168170
map(({body}) => body.map((transactionDTO) => {
169171
return CreateTransactionFromDTO(transactionDTO);
170172
})),
@@ -180,13 +182,13 @@ export class AccountHttp extends Http implements AccountRepository {
180182
* @param queryParams - (Optional) Query params
181183
* @returns Observable<Transaction[]>
182184
*/
183-
public getAccountUnconfirmedTransactions(address: Address, queryParams?: QueryParams): Observable <Transaction[]> {
185+
public getAccountUnconfirmedTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable <Transaction[]> {
184186
return observableFrom(
185187
this.accountRoutesApi.getAccountUnconfirmedTransactions(address.plain(),
186-
this.queryParams(queryParams).pageSize,
187-
this.queryParams(queryParams).id,
188-
this.queryParams(queryParams).order),
189-
this.queryParams(queryParams).transactionType).pipe(
188+
this.transactionSearchCriteria(queryParams).pageSize,
189+
this.transactionSearchCriteria(queryParams).id,
190+
this.transactionSearchCriteria(queryParams).ordering),
191+
this.transactionSearchCriteria(queryParams).type).pipe(
190192
map(({body}) => body.map((transactionDTO) => {
191193
return CreateTransactionFromDTO(transactionDTO);
192194
})),
@@ -201,13 +203,13 @@ export class AccountHttp extends Http implements AccountRepository {
201203
* @param queryParams - (Optional) Query params
202204
* @returns Observable<AggregateTransaction[]>
203205
*/
204-
public getAccountPartialTransactions(address: Address, queryParams?: QueryParams): Observable <AggregateTransaction[]> {
206+
public getAccountPartialTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable <AggregateTransaction[]> {
205207
return observableFrom(
206208
this.accountRoutesApi.getAccountPartialTransactions(address.plain(),
207-
this.queryParams(queryParams).pageSize,
208-
this.queryParams(queryParams).id,
209-
this.queryParams(queryParams).order),
210-
this.queryParams(queryParams).transactionType).pipe(
209+
this.transactionSearchCriteria(queryParams).pageSize,
210+
this.transactionSearchCriteria(queryParams).id,
211+
this.transactionSearchCriteria(queryParams).ordering),
212+
this.transactionSearchCriteria(queryParams).type).pipe(
211213
map(({body}) => body.map((transactionDTO) => {
212214
return CreateTransactionFromDTO(transactionDTO) as AggregateTransaction;
213215
})),

src/infrastructure/AccountRepository.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {AccountInfo} from '../model/account/AccountInfo';
1919
import {Address} from '../model/account/Address';
2020
import {AggregateTransaction} from '../model/transaction/AggregateTransaction';
2121
import {Transaction} from '../model/transaction/Transaction';
22-
import {QueryParams} from './QueryParams';
22+
import { TransactionSearchCriteria } from './TransactionSearchCriteria';
2323

2424
/**
2525
* Account interface repository.
@@ -48,7 +48,7 @@ export interface AccountRepository {
4848
* @param queryParams - (Optional) Query params
4949
* @returns Observable<Transaction[]>
5050
*/
51-
getAccountTransactions(address: Address, queryParams?: QueryParams): Observable<Transaction[]>;
51+
getAccountTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<Transaction[]>;
5252

5353
/**
5454
* Gets an array of transactions for which an account is the recipient of a transaction.
@@ -57,7 +57,7 @@ export interface AccountRepository {
5757
* @param queryParams - (Optional) Query params
5858
* @returns Observable<Transaction[]>
5959
*/
60-
getAccountIncomingTransactions(address: Address, queryParams?: QueryParams): Observable<Transaction[]>;
60+
getAccountIncomingTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<Transaction[]>;
6161

6262
/**
6363
* Gets an array of transactions for which an account is the sender a transaction.
@@ -66,7 +66,7 @@ export interface AccountRepository {
6666
* @param queryParams - (Optional) Query params
6767
* @returns Observable<Transaction[]>
6868
*/
69-
getAccountOutgoingTransactions(address: Address, queryParams?: QueryParams): Observable<Transaction[]>;
69+
getAccountOutgoingTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<Transaction[]>;
7070

7171
/**
7272
* Gets the array of transactions for which an account is the sender or receiver and which have not yet been included in a block.
@@ -76,7 +76,7 @@ export interface AccountRepository {
7676
* @param queryParams - (Optional) Query params
7777
* @returns Observable<Transaction[]>
7878
*/
79-
getAccountUnconfirmedTransactions(address: Address, queryParams?: QueryParams): Observable<Transaction[]>;
79+
getAccountUnconfirmedTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<Transaction[]>;
8080

8181
/**
8282
* Gets an array of transactions for which an account is the sender or has sign the transaction.
@@ -85,5 +85,5 @@ export interface AccountRepository {
8585
* @param queryParams - (Optional) Query params
8686
* @returns Observable<AggregateTransaction[]>
8787
*/
88-
getAccountPartialTransactions(address: Address, queryParams?: QueryParams): Observable<AggregateTransaction[]>;
88+
getAccountPartialTransactions(address: Address, queryParams?: TransactionSearchCriteria): Observable<AggregateTransaction[]>;
8989
}

src/infrastructure/BlockHttp.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ export class BlockHttp extends Http implements BlockRepository {
7373
this.blockRoutesApi.getBlockTransactions(height.toString(),
7474
this.queryParams(queryParams).pageSize,
7575
this.queryParams(queryParams).id,
76-
this.queryParams(queryParams).order))
76+
this.queryParams(queryParams).ordering))
7777
.pipe(map(({body}) => body.map((transactionDTO) => {
7878
return CreateTransactionFromDTO(transactionDTO);
7979
})),

src/infrastructure/Http.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { from as observableFrom, Observable, of as observableOf, throwError } fr
2020
import { catchError, map, shareReplay } from 'rxjs/operators';
2121
import { NetworkType } from '../model/blockchain/NetworkType';
2222
import { QueryParams } from './QueryParams';
23+
import { TransactionSearchCriteria } from './TransactionSearchCriteria';
2324

2425
/**
2526
* Http extended by all http services
@@ -52,8 +53,16 @@ export abstract class Http {
5253
return {
5354
pageSize: queryParams ? queryParams.pageSize : undefined,
5455
id: queryParams ? queryParams.id : undefined,
55-
order: queryParams ? queryParams.order : undefined,
56-
transactionType: queryParams ? queryParams.transactionType : undefined,
56+
ordering: queryParams ? queryParams.order : undefined,
57+
};
58+
}
59+
60+
transactionSearchCriteria(queryParams?: TransactionSearchCriteria): any {
61+
return {
62+
pageSize: queryParams ? queryParams.pageSize : undefined,
63+
id: queryParams ? queryParams.id : undefined,
64+
ordering: queryParams ? queryParams.order : undefined,
65+
type: queryParams ? queryParams.type : undefined,
5766
};
5867
}
5968

src/infrastructure/MetadataHttp.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export class MetadataHttp extends Http implements MetadataRepository {
6262
this.metadataRoutesApi.getAccountMetadata(address.plain(),
6363
this.queryParams(queryParams).pageSize,
6464
this.queryParams(queryParams).id,
65-
this.queryParams(queryParams).order)).pipe(
65+
this.queryParams(queryParams).ordering)).pipe(
6666
map(({body}) => body.metadataEntries.map((metadataEntry) => {
6767
return this.buildMetadata(metadataEntry);
6868
})),
@@ -112,7 +112,7 @@ export class MetadataHttp extends Http implements MetadataRepository {
112112
this.metadataRoutesApi.getMosaicMetadata(mosaicId.toHex(),
113113
this.queryParams(queryParams).pageSize,
114114
this.queryParams(queryParams).id,
115-
this.queryParams(queryParams).order)).pipe(
115+
this.queryParams(queryParams).ordering)).pipe(
116116
map(({body}) => body.metadataEntries.map((metadataEntry) => {
117117
return this.buildMetadata(metadataEntry);
118118
})),
@@ -162,7 +162,7 @@ export class MetadataHttp extends Http implements MetadataRepository {
162162
this.metadataRoutesApi.getNamespaceMetadata(namespaceId.toHex(),
163163
this.queryParams(queryParams).pageSize,
164164
this.queryParams(queryParams).id,
165-
this.queryParams(queryParams).order)).pipe(
165+
this.queryParams(queryParams).ordering)).pipe(
166166
map(({body}) => body.metadataEntries.map((metadataEntry) => {
167167
return this.buildMetadata(metadataEntry);
168168
})),

src/infrastructure/NamespaceHttp.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ export class NamespaceHttp extends Http implements NamespaceRepository {
152152
this.namespaceRoutesApi.getNamespacesFromAccount(address.plain(),
153153
this.queryParams(queryParams).pageSize,
154154
this.queryParams(queryParams).id,
155-
this.queryParams(queryParams).order)).pipe(
155+
this.queryParams(queryParams).ordering)).pipe(
156156
map(({body}) => body.namespaces.map((namespaceInfoDTO) => {
157157
return new NamespaceInfo(
158158
namespaceInfoDTO.meta.active,

0 commit comments

Comments
 (0)