@@ -33,7 +33,9 @@ import { NetworkType } from '../model/network/NetworkType';
3333import { UInt64 } from '../model/UInt64' ;
3434import { Http } from './Http' ;
3535import { NamespaceRepository } from './NamespaceRepository' ;
36- import { QueryParams } from './QueryParams' ;
36+ import { NamespaceSearchCriteria } from './searchCriteria/NamespaceSearchCriteria' ;
37+ import { Page } from './Page' ;
38+ import { DtoMapping } from '../core/utils/DtoMapping' ;
3739
3840/**
3941 * Namespace http repository.
@@ -119,44 +121,12 @@ export class NamespaceHttp extends Http implements NamespaceRepository {
119121 return this . call ( this . namespaceRoutesApi . getNamespace ( namespaceId . toHex ( ) ) , ( body ) => this . toNamespaceInfo ( body ) ) ;
120122 }
121123
122- /**
123- * Gets array of NamespaceInfo for an account
124- * @param address - Address
125- * @param queryParams - (Optional) Query params
126- * @returns Observable<NamespaceInfo[]>
127- */
128- public getNamespacesFromAccount ( address : Address , queryParams ?: QueryParams ) : Observable < NamespaceInfo [ ] > {
129- return this . call (
130- this . namespaceRoutesApi . getNamespacesFromAccount (
131- address . plain ( ) ,
132- this . queryParams ( queryParams ) . pageSize ,
133- this . queryParams ( queryParams ) . id ,
134- ) ,
135- ( body ) => body . namespaces . map ( ( namespaceInfoDTO ) => this . toNamespaceInfo ( namespaceInfoDTO ) ) ,
136- ) ;
137- }
138-
139- /**
140- * Gets array of NamespaceInfo for different account
141- * @param addresses - Array of Address
142- * @param queryParams - (Optional) Query params
143- * @returns Observable<NamespaceInfo[]>
144- */
145- public getNamespacesFromAccounts ( addresses : Address [ ] ) : Observable < NamespaceInfo [ ] > {
146- const publicKeysBody = {
147- addresses : addresses . map ( ( address ) => address . plain ( ) ) ,
148- } ;
149- return this . call ( this . namespaceRoutesApi . getNamespacesFromAccounts ( publicKeysBody ) , ( body ) =>
150- body . namespaces . map ( ( namespaceInfoDTO ) => this . toNamespaceInfo ( namespaceInfoDTO ) ) ,
151- ) ;
152- }
153-
154124 /**
155125 * Gets array of NamespaceName for different namespaceIds
156126 * @param namespaceIds - Array of namespace ids
157127 * @returns Observable<NamespaceName[]>
158128 */
159- public getNamespacesName ( namespaceIds : NamespaceId [ ] ) : Observable < NamespaceName [ ] > {
129+ public getNamespacesNames ( namespaceIds : NamespaceId [ ] ) : Observable < NamespaceName [ ] > {
160130 const namespaceIdsBody = {
161131 namespaceIds : namespaceIds . map ( ( id ) => id . toHex ( ) ) ,
162132 } ;
@@ -171,6 +141,27 @@ export class NamespaceHttp extends Http implements NamespaceRepository {
171141 ) ;
172142 }
173143
144+ /**
145+ * Gets an array of namespaces.
146+ * @param criteria - Namespace search criteria
147+ * @returns Observable<NamespaceInfo[]>
148+ */
149+ public search ( criteria : NamespaceSearchCriteria ) : Observable < Page < NamespaceInfo > > {
150+ return this . call (
151+ this . namespaceRoutesApi . searchNamespaces (
152+ criteria . ownerAddress ?. plain ( ) ,
153+ criteria . registrationType ?. valueOf ( ) ,
154+ criteria . level0 ?. toHex ( ) ,
155+ criteria . aliasType ?. valueOf ( ) ,
156+ criteria . pageSize ,
157+ criteria . pageNumber ,
158+ criteria . offset ,
159+ DtoMapping . mapEnum ( criteria . order ) ,
160+ ) ,
161+ ( body ) => super . toPage ( body . pagination , body . data , this . toNamespaceInfo ) ,
162+ ) ;
163+ }
164+
174165 /**
175166 * Gets the MosaicId from a MosaicAlias
176167 * @param namespaceId - the namespaceId of the namespace
@@ -239,16 +230,22 @@ export class NamespaceHttp extends Http implements NamespaceRepository {
239230 dto . meta . id ,
240231 dto . namespace . registrationType as number ,
241232 dto . namespace . depth ,
242- this . extractLevels ( dto . namespace ) ,
233+ NamespaceHttp . extractLevels ( dto . namespace ) ,
243234 NamespaceId . createFromEncoded ( dto . namespace . parentId ) ,
244235 Address . createFromEncoded ( dto . namespace . ownerAddress ) ,
245236 UInt64 . fromNumericString ( dto . namespace . startHeight ) ,
246237 UInt64 . fromNumericString ( dto . namespace . endHeight ) ,
247- this . extractAlias ( dto . namespace ) ,
238+ NamespaceHttp . extractAlias ( dto . namespace ) ,
248239 ) ;
249240 }
250241
251- private extractLevels ( namespace : NamespaceDTO ) : NamespaceId [ ] {
242+ /**
243+ * Extract the namespace levels
244+ *
245+ * @internal
246+ * @param namespace
247+ */
248+ private static extractLevels ( namespace : NamespaceDTO ) : NamespaceId [ ] {
252249 const result : NamespaceId [ ] = [ ] ;
253250 if ( namespace . level0 ) {
254251 result . push ( NamespaceId . createFromEncoded ( namespace . level0 ) ) ;
@@ -266,10 +263,9 @@ export class NamespaceHttp extends Http implements NamespaceRepository {
266263 * Extract the alias from a namespace
267264 *
268265 * @internal
269- * @access private
270266 * @param namespace
271267 */
272- private extractAlias ( namespace : NamespaceDTO ) : Alias {
268+ private static extractAlias ( namespace : NamespaceDTO ) : Alias {
273269 if ( namespace . alias && namespace . alias . type . valueOf ( ) === AliasType . Mosaic ) {
274270 return new MosaicAlias ( new MosaicId ( namespace . alias . mosaicId ! ) ) ;
275271 } else if ( namespace . alias && namespace . alias . type . valueOf ( ) === AliasType . Address ) {
0 commit comments