Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Extension(を検索するAPI)を使う

361 views

Published on

VS Code Meetup #3 - Extensionを使う編 LT

Published in: Technology
  • Be the first to comment

Extension(を検索するAPI)を使う

  1. 1. Extension(を検索するAPI)を使 う VS Code Meetup #3 - Extensionを使う編
  2. 2. ⾃⼰紹介 佐藤 翔 (Sato Sho) cssho (@csshooo) / cssho (Sho Sato) 所属: 株式会社ヒューマンテクノロジーズ 趣味: 猫とお酒
  3. 3. VSCode関連でやっていること VSMarketplaceBadge Visual Studio Marketplaceのアイテム対象のバッジ表⽰サービ ス。 Visual Studio MarketplaceVisual Studio Marketplace v2.0.0v2.0.0 installsinstalls 400146400146 ratingrating average: 3.75/5 (24 ratings)average: 3.75/5 (24 ratings)
  4. 4. SVG Viewer SVGのプレビューやエクスポートができる VSCodeの機能拡張 メンテナ募集中! というかまるっと管理してくれる⼈⼤募集!
  5. 5. Extensionを検索するAPI とは Visual Studio Marketplace内のアイテムを検索できるAPI
  6. 6. VSCodeでも vscode/extensionGalleryService.ts L501-L506 return this.requestService.request({ type: 'POST', url: this.api('/extensionquery'), data, headers }, token).then(context => {
  7. 7. Marketplaceでも
  8. 8. 仕様 多分ドキュメントにはまとめられていない VSCodeのソースコード等を参考に読み解いていく vscode/extensionGalleryService.ts
  9. 9. Endpoint https://marketplace.visualstudio.com/_apis/public/galle ry/extensionquery HTTP Method POST
  10. 10. HTTP Header Content-Type: application/json Accept: application/json;api-version=3.0- preview.1
  11. 11. Flags レスポンスに関する諸条件 enum Flags { None = 0x0, IncludeVersions = 0x1, IncludeFiles = 0x2, IncludeCategoryAndTags = 0x4, IncludeSharedAccounts = 0x8, IncludeVersionProperties = 0x10, ExcludeNonValidated = 0x20, IncludeInstallationTargets = 0x40, IncludeAssetUri = 0x80, IncludeStatistics = 0x100, IncludeLatestVersionOnly = 0x200, Unpublished = 0x1000 }
  12. 12. FilterType 検索条件 enum FilterType { Tag = 1, ExtensionId = 4, Category = 5, ExtensionName = 7, Target = 8, Featured = 9, SearchText = 10, ExcludeWithFlags = 12 }
  13. 13. SortBy ソート順(ここだけVSCodeのソースでカバーしきれておらずAzure DevOpsの機能拡張向けAPIのソースを参照) export enum SortByType { Relevance = 0, LastUpdatedDate = 1, Title = 2, Publisher = 3, InstallCount = 4, PublishedDate = 5, AverageRating = 6, TrendingDaily = 7, TrendingWeekly = 8, TrendingMonthly = 9, ReleaseDate = 10, Author = 11, WeightedRating = 12 }
  14. 14. Example ExtensionNameが cssho.vscode-svgviewer のアイテムの情 報を統計情報を含めて取得するクエリ { "filters": [{ "criteria": [{ "filterType": 7, // ExtensionNameが "value": "cssho.vscode-svgviewer" }] }], "flags": 256 }
  15. 15. 実際に実⾏してみると…
  16. 16. VSCodeの機能拡張で今⽇のトレ ンドTOP5 { "filters": [{ "criteria": [{ "filterType": 8, // ターゲット "value": "Microsoft.VisualStudio.Code" }], "pageSize": 5, // 5件 "sortBy": 7 // 今⽇のトレンド }] }
  17. 17. という感じでランキング的 なのも取れるので 定期的にランキング垂れ流したり お気に⼊りのExtensionの更新をウォッチしたり ⾃分の作ったExtensionの統計データを集計してみたり
  18. 18. ということでちゃちゃっとBot 作ってみました Google Apps Script + Slack App
  19. 19. ⼈より⼀⾜先に便利なExtensionを使 いたいそこのあなた! 是⾮このAPI触ってみてください!
  20. 20. 最後に⼤事なことなのでもう⼀度 ⾔います
  21. 21. SVG Viewer のオーナー募集中!

×