Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
edcb27d7
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
edcb27d7
编写于
6月 19, 2017
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
parse category: and tag: in marketplace queries
fixes #27605
上级
54b8d4d9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
48 addition
and
28 deletion
+48
-28
src/vs/platform/extensionManagement/node/extensionGalleryService.ts
...tform/extensionManagement/node/extensionGalleryService.ts
+48
-28
未找到文件。
src/vs/platform/extensionManagement/node/extensionGalleryService.ts
浏览文件 @
edcb27d7
...
...
@@ -297,7 +297,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
}
const
type
=
options
.
names
?
'
ids
'
:
(
options
.
text
?
'
text
'
:
'
all
'
);
cons
t
text
=
options
.
text
||
''
;
le
t
text
=
options
.
text
||
''
;
const
pageSize
=
getOrDefault
(
options
,
o
=>
o
.
pageSize
,
50
);
this
.
telemetryService
.
publicLog
(
'
galleryService:query
'
,
{
type
,
text
});
...
...
@@ -310,7 +310,25 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
.
withAssetTypes
(
AssetType
.
Icon
,
AssetType
.
License
,
AssetType
.
Details
,
AssetType
.
Manifest
,
AssetType
.
VSIX
,
AssetType
.
Changelog
);
if
(
text
)
{
query
=
query
.
withFilter
(
FilterType
.
SearchText
,
text
).
withSortBy
(
SortBy
.
NoneOrRelevance
);
// Use category filter instead of "category:themes"
text
=
text
.
replace
(
/
\b
category:
(
"
([^
"
]
*
)
"|
([^
"
]\S
*
))(\s
+|
\b
|$
)
/g
,
(
_
,
quotedCategory
,
category
)
=>
{
query
=
query
.
withFilter
(
FilterType
.
Category
,
category
||
quotedCategory
);
return
''
;
});
// Use tag filter instead of "tag:debuggers"
text
=
text
.
replace
(
/
\b
tag:
(
"
([^
"
]
*
)
"|
([^
"
]\S
*
))(\s
+|
\b
|$
)
/g
,
(
_
,
quotedTag
,
tag
)
=>
{
query
=
query
.
withFilter
(
FilterType
.
Tag
,
tag
||
quotedTag
);
return
''
;
});
text
=
text
.
trim
();
if
(
text
)
{
query
=
query
.
withFilter
(
FilterType
.
SearchText
,
text
);
}
query
=
query
.
withSortBy
(
SortBy
.
NoneOrRelevance
);
}
else
if
(
options
.
ids
)
{
query
=
query
.
withFilter
(
FilterType
.
ExtensionId
,
...
options
.
ids
);
}
else
if
(
options
.
names
)
{
...
...
@@ -327,6 +345,8 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
query
=
query
.
withSortOrder
(
options
.
sortOrder
);
}
console
.
log
(
query
.
raw
);
return
this
.
queryGallery
(
query
).
then
(({
galleryExtensions
,
total
})
=>
{
const
extensions
=
galleryExtensions
.
map
(
e
=>
toExtension
(
e
,
this
.
extensionsGalleryUrl
));
const
pageSize
=
query
.
pageSize
;
...
...
@@ -337,34 +357,34 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
});
}
private
queryGallery
(
query
:
Query
):
TPromise
<
{
galleryExtensions
:
IRawGalleryExtension
[],
total
:
number
;
}
>
{
return
this
.
commonHTTPHeaders
.
then
(
headers
=>
{
const
data
=
JSON
.
stringify
(
query
.
raw
);
private
async
queryGallery
(
query
:
Query
):
TPromise
<
{
galleryExtensions
:
IRawGalleryExtension
[],
total
:
number
;
}
>
{
const
commonHeaders
=
await
this
.
commonHTTPHeaders
;
const
data
=
JSON
.
stringify
(
query
.
raw
);
const
headers
=
assign
({},
commonHeaders
,
{
'
Content-Type
'
:
'
application/json
'
,
'
Accept
'
:
'
application/json;api-version=3.0-preview.1
'
,
'
Accept-Encoding
'
:
'
gzip
'
,
'
Content-Length
'
:
data
.
length
});
headers
=
assign
({},
headers
,
{
'
Content-Type
'
:
'
application/json
'
,
'
Accept
'
:
'
application/json;api-version=3.0-preview.1
'
,
'
Accept-Encoding
'
:
'
gzip
'
,
'
Content-Length
'
:
data
.
length
});
const
context
=
await
this
.
requestService
.
request
(
{
type
:
'
POST
'
,
url
:
this
.
api
(
'
/extensionquery
'
)
,
data
,
headers
});
return
this
.
requestService
.
request
({
type
:
'
POST
'
,
url
:
this
.
api
(
'
/extensionquery
'
),
data
,
headers
});
})
.
then
(
context
=>
asJson
<
IRawGalleryQueryResult
>
(
context
))
.
then
(
result
=>
{
const
r
=
result
.
results
[
0
];
const
galleryExtensions
=
r
.
extensions
;
const
resultCount
=
r
.
resultMetadata
&&
r
.
resultMetadata
.
filter
(
m
=>
m
.
metadataType
===
'
ResultCount
'
)[
0
];
const
total
=
resultCount
&&
resultCount
.
metadataItems
.
filter
(
i
=>
i
.
name
===
'
TotalCount
'
)[
0
].
count
||
0
;
return
{
galleryExtensions
,
total
};
});
if
(
context
.
res
.
statusCode
>=
400
&&
context
.
res
.
statusCode
<
500
)
{
return
{
galleryExtensions
:
[],
total
:
0
};
}
const
result
=
await
asJson
<
IRawGalleryQueryResult
>
(
context
);
const
r
=
result
.
results
[
0
];
const
galleryExtensions
=
r
.
extensions
;
const
resultCount
=
r
.
resultMetadata
&&
r
.
resultMetadata
.
filter
(
m
=>
m
.
metadataType
===
'
ResultCount
'
)[
0
];
const
total
=
resultCount
&&
resultCount
.
metadataItems
.
filter
(
i
=>
i
.
name
===
'
TotalCount
'
)[
0
].
count
||
0
;
return
{
galleryExtensions
,
total
};
}
download
(
extension
:
IGalleryExtension
):
TPromise
<
string
>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录