add incoming-fee-rate and outgoing-fee-rate endpoints

This commit is contained in:
Carsten Otto
2021-11-12 14:47:26 +01:00
parent b8f9af1d72
commit 6cbced801a
16 changed files with 420 additions and 7 deletions

View File

@@ -0,0 +1,24 @@
package de.cotto.lndmanagej.controller;
import de.cotto.lndmanagej.model.ChannelId;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import javax.annotation.Nonnull;
@Component
public class ChannelIdConverter implements Converter<String, ChannelId> {
public ChannelIdConverter() {
// default constructor
}
@Override
public ChannelId convert(@Nonnull String source) {
try {
long shortChannelId = Long.parseLong(source);
return ChannelId.fromShortChannelId(shortChannelId);
} catch (NumberFormatException numberFormatException) {
return ChannelId.fromCompactForm(source);
}
}
}

View File

@@ -5,6 +5,7 @@ import de.cotto.lndmanagej.model.ChannelId;
import de.cotto.lndmanagej.model.LocalChannel;
import de.cotto.lndmanagej.model.Pubkey;
import de.cotto.lndmanagej.service.ChannelService;
import de.cotto.lndmanagej.service.FeeService;
import de.cotto.lndmanagej.service.NodeService;
import de.cotto.lndmanagej.service.OwnNodeService;
import org.springframework.web.bind.annotation.GetMapping;
@@ -21,11 +22,18 @@ public class LegacyController {
private final NodeService nodeService;
private final ChannelService channelService;
private final OwnNodeService ownNodeService;
private final FeeService feeService;
public LegacyController(NodeService nodeService, ChannelService channelService, OwnNodeService ownNodeService) {
public LegacyController(
NodeService nodeService,
ChannelService channelService,
OwnNodeService ownNodeService,
FeeService feeService
) {
this.nodeService = nodeService;
this.channelService = channelService;
this.ownNodeService = ownNodeService;
this.feeService = feeService;
}
@GetMapping("/node/{pubkey}/alias")
@@ -56,4 +64,14 @@ public class LegacyController {
public boolean syncedToChain() {
return ownNodeService.isSyncedToChain();
}
@GetMapping("/channel/{channelId}/incoming-fee-rate")
public long getIncomingFeeRate(@PathVariable ChannelId channelId) {
return feeService.getIncomingFeeRate(channelId);
}
@GetMapping("/channel/{channelId}/outgoing-fee-rate")
public long getOutgoingFeeRate(@PathVariable ChannelId channelId) {
return feeService.getOutgoingFeeRate(channelId);
}
}

View File

@@ -0,0 +1,22 @@
package de.cotto.lndmanagej.service;
import de.cotto.lndmanagej.grpc.GrpcFees;
import de.cotto.lndmanagej.model.ChannelId;
import org.springframework.stereotype.Component;
@Component
public class FeeService {
private final GrpcFees grpcFees;
public FeeService(GrpcFees grpcFees) {
this.grpcFees = grpcFees;
}
public long getIncomingFeeRate(ChannelId channelId) {
return grpcFees.getIncomingFeeRate(channelId).orElseThrow(IllegalStateException::new);
}
public long getOutgoingFeeRate(ChannelId channelId) {
return grpcFees.getOutgoingFeeRate(channelId).orElseThrow(IllegalStateException::new);
}
}