public async Task <ActionResult> Get(string key, CancellationToken cancellationToken) { var h = KNodeId <KNodeId256> .Read(new SHA256Managed().ComputeHash(Encoding.UTF8.GetBytes(key))); var v = await values.GetAsync(h, cancellationToken); return(v.HasValue ? (ActionResult)File(v.Value.Data, "application/octet-stream") : NotFound()); }
public async Task Set(string key, CancellationToken cancellationToken) { var h = KNodeId <KNodeId256> .Read(new SHA256Managed().ComputeHash(Encoding.UTF8.GetBytes(key))); var v = await values.GetAsync(h, cancellationToken); await values.SetAsync(h, new KValueInfo(await Request.Body.ReadAllBytesAsync(), v.HasValue ? (v.Value.Version + 1) : 1, DateTime.UtcNow.AddMinutes(60)), cancellationToken); }
/// <summary> /// Generates a node ID for the given string. /// </summary> /// <param name="key"></param> /// <returns></returns> KNodeId64 IKsKademliaHasher <string, KNodeId64> .Hash(string key) => KNodeId <KNodeId64> .Read(sha1.ComputeHash(Encoding.UTF8.GetBytes(key)));
/// <summary> /// Generates a node ID for the given string. /// </summary> /// <param name="key"></param> /// <returns></returns> public KNodeId256 Hash(string key) => KNodeId <KNodeId256> .Read(sha256.ComputeHash(Encoding.UTF8.GetBytes(key)));