From 3e5c8e1777e3ec4062306fcb1bb131e1bca2adfe Mon Sep 17 00:00:00 2001 From: William Boman Date: Sun, 19 Feb 2023 22:54:29 +0100 Subject: feat(providers): add more endpoints (#1013) --- lua/mason-registry/api.lua | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'lua/mason-registry/api.lua') diff --git a/lua/mason-registry/api.lua b/lua/mason-registry/api.lua index 7d98c7ef..853690b9 100644 --- a/lua/mason-registry/api.lua +++ b/lua/mason-registry/api.lua @@ -26,10 +26,18 @@ function api.get(path, opts) }):map_catching(vim.json.decode) end ----@alias ApiSignature fun(path_params: T, opts?: ApiFetchOpts): Result +---@alias ApiSignature async fun(path_params: T, opts?: ApiFetchOpts): Result + +---@param char string +local function percent_encode(char) + return ("%%%x"):format(string.byte(char, 1, 1)) +end + +api.encode_uri_component = _.gsub("[!#%$&'%(%)%*%+,/:;=%?@%[%]]", percent_encode) ---@param path_template string local function get(path_template) + ---@async ---@param path_params table ---@param opts ApiFetchOpts? return function(path_params, opts) @@ -83,7 +91,32 @@ api.rubygems = { ---@type ApiSignature<{ gem: string }> latest = get "/api/rubygems/{gem}/versions/latest", ---@type ApiSignature<{ gem: string }> - all = get "/api/rubygemspypi/{gem}/versions/all", + all = get "/api/rubygems/{gem}/versions/all", + }, +} + +api.packagist = { + versions = { + ---@type ApiSignature<{ pkg: string }> + latest = get "/api/packagist/{pkg}/versions/latest", + ---@type ApiSignature<{ pkg: string }> + all = get "/api/packagist/{pkg}/versions/all", + }, +} + +api.crate = { + versions = { + ---@type ApiSignature<{ crate: string }> + latest = get "/api/crate/{crate}/versions/latest", + ---@type ApiSignature<{ crate: string }> + all = get "/api/crate/{crate}/versions/all", + }, +} + +api.golang = { + versions = { + ---@type ApiSignature<{ pkg: string }> + all = get "/api/golang/{pkg}/versions/all", }, } -- cgit v1.2.3-70-g09d2