add /status/open-channels/pubkeys endpoint

This commit is contained in:
Carsten Otto
2021-11-25 19:42:16 +01:00
parent fbdfe5a893
commit 1e101b130b
5 changed files with 102 additions and 2 deletions

View File

@@ -2,29 +2,52 @@ package de.cotto.lndmanagej.controller;
import com.codahale.metrics.MetricRegistry;
import de.cotto.lndmanagej.controller.dto.ObjectMapperConfiguration;
import de.cotto.lndmanagej.controller.dto.PubkeysDto;
import de.cotto.lndmanagej.metrics.Metrics;
import de.cotto.lndmanagej.model.LocalOpenChannel;
import de.cotto.lndmanagej.model.Pubkey;
import de.cotto.lndmanagej.service.ChannelService;
import de.cotto.lndmanagej.service.OwnNodeService;
import org.springframework.context.annotation.Import;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/api/status/")
@Import(ObjectMapperConfiguration.class)
public class StatusController {
private final OwnNodeService ownNodeService;
private final ChannelService channelService;
private final Metrics metrics;
public StatusController(OwnNodeService ownNodeService, Metrics metrics) {
public StatusController(OwnNodeService ownNodeService, ChannelService channelService, Metrics metrics) {
this.ownNodeService = ownNodeService;
this.channelService = channelService;
this.metrics = metrics;
}
@GetMapping("/synced-to-chain")
public boolean isSyncedToChain() {
metrics.mark(MetricRegistry.name(getClass(), "isSyncedToChain"));
mark("isSyncedToChain");
return ownNodeService.isSyncedToChain();
}
@GetMapping("/open-channels/pubkeys")
public PubkeysDto getPubkeysForOpenChannels() {
mark("getPubkeysForOpenChannels");
List<Pubkey> pubkeys = channelService.getOpenChannels().stream()
.map(LocalOpenChannel::getRemotePubkey)
.sorted()
.distinct()
.collect(Collectors.toList());
return new PubkeysDto(pubkeys);
}
private void mark(String name) {
metrics.mark(MetricRegistry.name(getClass(), name));
}
}

View File

@@ -0,0 +1,13 @@
package de.cotto.lndmanagej.controller.dto;
import de.cotto.lndmanagej.model.Pubkey;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
public record PubkeysDto(List<String> pubkeys) {
public PubkeysDto(Collection<Pubkey> pubkeys) {
this(pubkeys.stream().map(Pubkey::toString).collect(Collectors.toList()));
}
}