aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/managers/cargo/client.lua
blob: 82dc85aa3d98dd151ba17eb2647924db0d01c142 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
local fetch = require "mason-core.fetch"

local M = {}

---@alias CrateResponse {crate: {id: string, max_stable_version: string, max_version: string, newest_version: string}}

---@async
---@param crate string
---@return Result # Result<CrateResponse>
function M.fetch_crate(crate)
    return fetch(("https://crates.io/api/v1/crates/%s"):format(crate), {
        headers = {
            Accept = "application/json",
        },
    }):map_catching(vim.json.decode)
end

return M