@@ -17,17 +17,16 @@ export interface ExtensionQuery {
17
17
}
18
18
19
19
export class PublicGalleryAPI {
20
- client : HttpClient ;
21
20
22
- constructor ( public baseUrl : string , public apiVersion = '3.0-preview.1' ) {
23
- this . client = new HttpClient ( 'vsce' ) ;
24
- }
21
+ private client = new HttpClient ( 'vsce' ) ;
22
+
23
+ constructor ( private baseUrl : string , private apiVersion = '3.0-preview.1' ) { }
25
24
26
25
private post ( url : string , data : string , additionalHeaders ?: IHeaders ) : Promise < HttpClientResponse > {
27
26
return this . client . post ( `${ this . baseUrl } /_apis/public${ url } ` , data , additionalHeaders ) ;
28
27
}
29
28
30
- extensionQuery ( {
29
+ async extensionQuery ( {
31
30
pageNumber = 1 ,
32
31
pageSize = 1 ,
33
32
sortBy = SortByType . Relevance ,
@@ -36,30 +35,21 @@ export class PublicGalleryAPI {
36
35
criteria = [ ] ,
37
36
assetTypes = [ ] ,
38
37
} : ExtensionQuery ) : Promise < PublishedExtension [ ] > {
39
- return this . post ( '/gallery/extensionquery' , JSON . stringify ( {
38
+ const data = JSON . stringify ( {
40
39
filters : [ { pageNumber, pageSize, criteria } ] ,
41
40
assetTypes,
42
41
flags : flags . reduce ( ( memo , flag ) => memo | flag , 0 )
43
- } ) , {
44
- Accept : `application/json;api-version=${ this . apiVersion } ` ,
45
- 'Content-Type' : 'application/json' ,
46
- } )
47
- . then ( res => res . readBody ( ) )
48
- . then ( data => JSON . parse ( data ) )
49
- . then ( ( { results : [ result = { } ] = [ ] } ) => result )
50
- . then ( ( { extensions = [ ] } ) =>
51
- ContractSerializer . deserialize ( extensions , TypeInfo . PublishedExtension , false , false )
52
- ) ;
42
+ } ) ;
43
+
44
+ const res = await this . post ( '/gallery/extensionquery' , data , { Accept : `application/json;api-version=${ this . apiVersion } ` , 'Content-Type' : 'application/json' , } ) ;
45
+ const raw = JSON . parse ( await res . readBody ( ) ) ;
46
+
47
+ return ContractSerializer . deserialize ( raw . results [ 0 ] . extensions , TypeInfo . PublishedExtension , false , false ) ;
53
48
}
54
49
55
- getExtension ( extensionId : string , flags : ExtensionQueryFlags [ ] = [ ] ) : Promise < PublishedExtension > {
56
- return this . extensionQuery ( {
57
- criteria : [ { filterType : ExtensionQueryFilterType . Name , value : extensionId } ] ,
58
- flags,
59
- } )
60
- . then ( result => result . filter ( ( { publisher : { publisherName } , extensionName } ) =>
61
- extensionId . toLowerCase ( ) === `${ publisherName } .${ extensionName } ` . toLowerCase ( ) )
62
- )
63
- . then ( ( [ extension ] ) => extension ) ;
50
+ async getExtension ( extensionId : string , flags : ExtensionQueryFlags [ ] = [ ] ) : Promise < PublishedExtension > {
51
+ const query = { criteria : [ { filterType : ExtensionQueryFilterType . Name , value : extensionId } ] , flags, } ;
52
+ const extensions = await this . extensionQuery ( query ) ;
53
+ return extensions . filter ( ( { publisher : { publisherName : publisher } , extensionName : name } ) => extensionId . toLowerCase ( ) === `${ publisher } .${ name } ` . toLowerCase ( ) ) [ 0 ] ;
64
54
}
65
55
}
0 commit comments