From 9d40be02f2793c6e99a1d6ca16850629790f06c1 Mon Sep 17 00:00:00 2001 From: ian Date: Fri, 31 Jan 2025 09:56:05 +0000 Subject: [PATCH] Simplify getting data from ipns mapping --- src/main/java/org/peergos/net/APIHandler.java | 6 ++--- .../peergos/protocol/ipns/IpnsMapping.java | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/peergos/net/APIHandler.java b/src/main/java/org/peergos/net/APIHandler.java index 4a4ec1eb..8bcb9371 100755 --- a/src/main/java/org/peergos/net/APIHandler.java +++ b/src/main/java/org/peergos/net/APIHandler.java @@ -295,10 +295,10 @@ public void handleCallToAPI(HttpExchange httpExchange) { if (records.isEmpty()) throw new IllegalStateException("Couldn't resolve " + signer); IpnsRecord latest = records.get(records.size() - 1); - Ipns.IpnsEntry entry = Ipns.IpnsEntry.parseFrom(ByteBuffer.wrap(latest.raw)); + IpnsMapping mapping = new IpnsMapping(signer, latest); Map res = new HashMap<>(); - res.put("sig", ArrayOps.bytesToHex(entry.getSignatureV2().toByteArray())); - res.put("data", ArrayOps.bytesToHex(entry.getData().toByteArray())); + res.put("sig", ArrayOps.bytesToHex(mapping.getSignature())); + res.put("data", ArrayOps.bytesToHex(mapping.getData())); String json = JSONParser.toString(res); replyJson(httpExchange, json); break; diff --git a/src/main/java/org/peergos/protocol/ipns/IpnsMapping.java b/src/main/java/org/peergos/protocol/ipns/IpnsMapping.java index c4f9013c..a4f344c7 100644 --- a/src/main/java/org/peergos/protocol/ipns/IpnsMapping.java +++ b/src/main/java/org/peergos/protocol/ipns/IpnsMapping.java @@ -1,6 +1,10 @@ package org.peergos.protocol.ipns; +import com.google.protobuf.InvalidProtocolBufferException; import io.ipfs.multihash.*; +import org.peergos.protocol.ipns.pb.Ipns; + +import java.nio.ByteBuffer; public class IpnsMapping { public final Multihash publisher; @@ -10,4 +14,22 @@ public IpnsMapping(Multihash publisher, IpnsRecord value) { this.publisher = publisher; this.value = value; } + + public byte[] getData() { + try { + Ipns.IpnsEntry entry = Ipns.IpnsEntry.parseFrom(ByteBuffer.wrap(value.raw)); + return entry.getData().toByteArray(); + } catch (InvalidProtocolBufferException e) { + throw new RuntimeException(e); + } + } + + public byte[] getSignature() { + try { + Ipns.IpnsEntry entry = Ipns.IpnsEntry.parseFrom(ByteBuffer.wrap(value.raw)); + return entry.getSignatureV2().toByteArray(); + } catch (InvalidProtocolBufferException e) { + throw new RuntimeException(e); + } + } }