mirror of
https://github.com/aljazceru/lnd-manageJ.git
synced 2026-01-22 15:35:10 +01:00
add /status/open-channels/pubkeys endpoint
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user