1414 * limitations under the License.
1515 */
1616
17- import { from as observableFrom , Observable , throwError } from 'rxjs' ;
18- import { catchError , map , mergeMap } from 'rxjs/operators' ;
19- import { MosaicRoutesApi } from 'symbol-openapi-typescript-node-client' ;
17+ import { Observable , throwError } from 'rxjs' ;
18+ import { catchError , mergeMap } from 'rxjs/operators' ;
19+ import { MosaicRoutesApi , MosaicIds , AccountIds , MosaicInfoDTO , MosaicDTO } from 'symbol-openapi-typescript-node-client' ;
2020import { Address } from '../model/account/Address' ;
2121import { PublicAccount } from '../model/account/PublicAccount' ;
2222import { MosaicFlags } from '../model/mosaic/MosaicFlags' ;
@@ -63,21 +63,9 @@ export class MosaicHttp extends Http implements MosaicRepository {
6363 */
6464 public getMosaic ( mosaicId : MosaicId ) : Observable < MosaicInfo > {
6565 return this . networkTypeObservable . pipe (
66- mergeMap ( ( networkType ) => observableFrom (
67- this . mosaicRoutesApi . getMosaic ( mosaicId . toHex ( ) ) ) . pipe (
68- map ( ( { body} ) => new MosaicInfo (
69- new MosaicId ( body . mosaic . id ) ,
70- UInt64 . fromNumericString ( body . mosaic . supply ) ,
71- UInt64 . fromNumericString ( body . mosaic . startHeight ) ,
72- PublicAccount . createFromPublicKey ( body . mosaic . ownerPublicKey , networkType ) ,
73- body . mosaic . revision ,
74- new MosaicFlags ( body . mosaic . flags ) ,
75- body . mosaic . divisibility ,
76- UInt64 . fromNumericString ( body . mosaic . duration ) ,
77- ) ) ,
78- catchError ( ( error ) => throwError ( this . errorHandling ( error ) ) ) ,
79- ) ) ,
80- ) ;
66+ mergeMap ( ( networkType ) =>
67+ this . call ( this . mosaicRoutesApi . getMosaic ( mosaicId . toHex ( ) ) , ( body ) => this . toMosaicInfo ( body , networkType ) ) ) ,
68+ ) ;
8169 }
8270
8371 /**
@@ -86,27 +74,11 @@ export class MosaicHttp extends Http implements MosaicRepository {
8674 * @returns Observable<MosaicInfo[]>
8775 */
8876 public getMosaics ( mosaicIds : MosaicId [ ] ) : Observable < MosaicInfo [ ] > {
89- const mosaicIdsBody = {
90- mosaicIds : mosaicIds . map ( ( id ) => id . toHex ( ) ) ,
91- } ;
77+ const ids = new MosaicIds ( ) ;
78+ ids . mosaicIds = mosaicIds . map ( ( id ) => id . toHex ( ) ) ;
9279 return this . networkTypeObservable . pipe (
93- mergeMap ( ( networkType ) => observableFrom (
94- this . mosaicRoutesApi . getMosaics ( mosaicIdsBody ) ) . pipe (
95- map ( ( { body} ) => body . map ( ( mosaicInfoDTO ) => {
96- return new MosaicInfo (
97- new MosaicId ( mosaicInfoDTO . mosaic . id ) ,
98- UInt64 . fromNumericString ( mosaicInfoDTO . mosaic . supply ) ,
99- UInt64 . fromNumericString ( mosaicInfoDTO . mosaic . startHeight ) ,
100- PublicAccount . createFromPublicKey ( mosaicInfoDTO . mosaic . ownerPublicKey , networkType ) ,
101- mosaicInfoDTO . mosaic . revision ,
102- new MosaicFlags ( mosaicInfoDTO . mosaic . flags ) ,
103- mosaicInfoDTO . mosaic . divisibility ,
104- UInt64 . fromNumericString ( mosaicInfoDTO . mosaic . duration ) ,
105- ) ;
106- } ) ) ,
107- catchError ( ( error ) => throwError ( this . errorHandling ( error ) ) ) ,
108- ) ,
109- ) ,
80+ mergeMap ( ( networkType ) =>
81+ this . call ( this . mosaicRoutesApi . getMosaics ( ids ) , ( body ) => body . map ( ( b ) => this . toMosaicInfo ( b , networkType ) ) ) ) ,
11082 ) ;
11183 }
11284
@@ -117,20 +89,9 @@ export class MosaicHttp extends Http implements MosaicRepository {
11789 */
11890 public getMosaicsFromAccount ( address : Address ) : Observable < MosaicInfo [ ] > {
11991 return this . networkTypeObservable . pipe (
120- mergeMap ( ( networkType ) => observableFrom (
121- this . mosaicRoutesApi . getMosaicsFromAccount ( address . plain ( ) ) ) . pipe (
122- map ( ( { body} ) => body . mosaics . map ( ( mosaicInfo ) =>
123- new MosaicInfo (
124- new MosaicId ( mosaicInfo . id ) ,
125- UInt64 . fromNumericString ( mosaicInfo . supply ) ,
126- UInt64 . fromNumericString ( mosaicInfo . startHeight ) ,
127- PublicAccount . createFromPublicKey ( mosaicInfo . ownerPublicKey , networkType ) ,
128- mosaicInfo . revision ,
129- new MosaicFlags ( mosaicInfo . flags ) ,
130- mosaicInfo . divisibility ,
131- UInt64 . fromNumericString ( mosaicInfo . duration ) ) ) ) ,
132- catchError ( ( error ) => throwError ( this . errorHandling ( error ) ) ) ,
133- ) ) ,
92+ mergeMap ( ( networkType ) =>
93+ this . call ( this . mosaicRoutesApi . getMosaicsFromAccount ( address . plain ( ) ) ,
94+ ( body ) => body . mosaics . map ( ( b ) => this . toMosaicInfoFromMosaicDto ( b , networkType ) ) ) ) ,
13495 ) ;
13596 }
13697
@@ -140,27 +101,50 @@ export class MosaicHttp extends Http implements MosaicRepository {
140101 * @param addresses Array of addresses
141102 */
142103 public getMosaicsFromAccounts ( addresses : Address [ ] ) : Observable < MosaicInfo [ ] > {
143- const accountIdsBody = {
144- addresses : addresses . map ( ( address ) => address . plain ( ) ) ,
145- } ;
104+ const accountIds = new AccountIds ( ) ;
105+ accountIds . addresses = addresses . map ( ( address ) => address . plain ( ) ) ;
146106 return this . networkTypeObservable . pipe (
147- mergeMap ( ( networkType ) => observableFrom (
148- this . mosaicRoutesApi . getMosaicsFromAccounts ( accountIdsBody ) ) . pipe (
149- map ( ( { body} ) => body . mosaics . map ( ( mosaicInfoDTO ) => {
150- return new MosaicInfo (
151- new MosaicId ( mosaicInfoDTO . id ) ,
152- UInt64 . fromNumericString ( mosaicInfoDTO . supply ) ,
153- UInt64 . fromNumericString ( mosaicInfoDTO . startHeight ) ,
154- PublicAccount . createFromPublicKey ( mosaicInfoDTO . ownerPublicKey , networkType ) ,
155- mosaicInfoDTO . revision ,
156- new MosaicFlags ( mosaicInfoDTO . flags ) ,
157- mosaicInfoDTO . divisibility ,
158- UInt64 . fromNumericString ( mosaicInfoDTO . duration ) ,
159- ) ;
160- } ) ) ,
161- catchError ( ( error ) => throwError ( this . errorHandling ( error ) ) ) ,
162- ) ,
163- ) ,
107+ mergeMap ( ( networkType ) =>
108+ this . call ( this . mosaicRoutesApi . getMosaicsFromAccounts ( accountIds ) ,
109+ ( body ) => body . mosaics . map ( ( b ) => this . toMosaicInfoFromMosaicDto ( b , networkType ) ) ) ) ,
110+ ) ;
111+ }
112+
113+ /**
114+ * Maps MosaicInfoDTO to MosaicInfo
115+ *
116+ * @param mosaicInfo the dto object.
117+ * @returns the model object
118+ */
119+ private toMosaicInfo ( mosaicInfo : MosaicInfoDTO , networkType : NetworkType ) : MosaicInfo {
120+ return new MosaicInfo (
121+ new MosaicId ( mosaicInfo . mosaic . id ) ,
122+ UInt64 . fromNumericString ( mosaicInfo . mosaic . supply ) ,
123+ UInt64 . fromNumericString ( mosaicInfo . mosaic . startHeight ) ,
124+ PublicAccount . createFromPublicKey ( mosaicInfo . mosaic . ownerPublicKey , networkType ) ,
125+ mosaicInfo . mosaic . revision ,
126+ new MosaicFlags ( mosaicInfo . mosaic . flags ) ,
127+ mosaicInfo . mosaic . divisibility ,
128+ UInt64 . fromNumericString ( mosaicInfo . mosaic . duration ) ,
129+ ) ;
130+ }
131+
132+ /**
133+ * Maps MosaicDTO to MosaicInfo
134+ *
135+ * @param mosaicInfo the dto object.
136+ * @returns the model object
137+ */
138+ private toMosaicInfoFromMosaicDto ( mosaicInfo : MosaicDTO , networkType : NetworkType ) : MosaicInfo {
139+ return new MosaicInfo (
140+ new MosaicId ( mosaicInfo . id ) ,
141+ UInt64 . fromNumericString ( mosaicInfo . supply ) ,
142+ UInt64 . fromNumericString ( mosaicInfo . startHeight ) ,
143+ PublicAccount . createFromPublicKey ( mosaicInfo . ownerPublicKey , networkType ) ,
144+ mosaicInfo . revision ,
145+ new MosaicFlags ( mosaicInfo . flags ) ,
146+ mosaicInfo . divisibility ,
147+ UInt64 . fromNumericString ( mosaicInfo . duration ) ,
164148 ) ;
165149 }
166150}
0 commit comments