如何在不下载 Nuget 包的情况下获取它的 sha256?
How do I get the sha256 of a Nuget package without downloading it?
我想使用 Curl 获取给定 Nuget 包和版本的 sha256。我认为这几天是 Nuget API 的一部分,但是 URL 我需要点击什么才能获得哈希值?
感谢您提供链接,Mauricio Scheffer。
这是相关的片段from Paket:
open System.Net
open System.Xml.Linq
let getDetailsFromNuget name version =
async {
use wc = new WebClient()
let! data =
sprintf "https://www.nuget.org/api/v2/Packages(Id='%s',Version='%s')" name version
|> wc.DownloadStringTaskAsync
|> Async.AwaitTask
let data = XDocument.Parse data
let getAttribute attribute =
let rootNs = XName.Get("entry", "http://www.w3.org/2005/Atom")
let propertiesNs =
XName.Get("properties", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata")
let attributesNs attribute =
XName.Get(attribute, "http://schemas.microsoft.com/ado/2007/08/dataservices")
let properties =
rootNs
|> data.Element
|> fun entry -> entry.Element(propertiesNs)
properties.Element(attributesNs attribute).Value
let packageHash = getAttribute "PackageHash"
let packageHashAlgorithm = getAttribute "PackageHashAlgorithm"
return packageHash, packageHashAlgorithm
}
getDetailsFromNuget "FSharp.Core" "4.3.2"
|> Async.RunSynchronously
|> printfn "%A"
输出:
("CR5/gOr3EXghLOih4N+l8rlM4n5V3Vniv8L8tAeft5+P2QPSpU4CHF0YoTCXUpqfKXRQpvPej70MjHpBfgXJDA==",
"SHA512")
PackageHashAlgorithm
应该是"SHA256"
或"SHA512"
。
我想使用 Curl 获取给定 Nuget 包和版本的 sha256。我认为这几天是 Nuget API 的一部分,但是 URL 我需要点击什么才能获得哈希值?
感谢您提供链接,Mauricio Scheffer。
这是相关的片段from Paket:
open System.Net
open System.Xml.Linq
let getDetailsFromNuget name version =
async {
use wc = new WebClient()
let! data =
sprintf "https://www.nuget.org/api/v2/Packages(Id='%s',Version='%s')" name version
|> wc.DownloadStringTaskAsync
|> Async.AwaitTask
let data = XDocument.Parse data
let getAttribute attribute =
let rootNs = XName.Get("entry", "http://www.w3.org/2005/Atom")
let propertiesNs =
XName.Get("properties", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata")
let attributesNs attribute =
XName.Get(attribute, "http://schemas.microsoft.com/ado/2007/08/dataservices")
let properties =
rootNs
|> data.Element
|> fun entry -> entry.Element(propertiesNs)
properties.Element(attributesNs attribute).Value
let packageHash = getAttribute "PackageHash"
let packageHashAlgorithm = getAttribute "PackageHashAlgorithm"
return packageHash, packageHashAlgorithm
}
getDetailsFromNuget "FSharp.Core" "4.3.2"
|> Async.RunSynchronously
|> printfn "%A"
输出:
("CR5/gOr3EXghLOih4N+l8rlM4n5V3Vniv8L8tAeft5+P2QPSpU4CHF0YoTCXUpqfKXRQpvPej70MjHpBfgXJDA==", "SHA512")
PackageHashAlgorithm
应该是"SHA256"
或"SHA512"
。