Skip to content

Commit 1c9a221

Browse files
committed
Moved API configuration to file
1 parent b4d6476 commit 1c9a221

6 files changed

Lines changed: 36 additions & 7 deletions

File tree

api/src/main/java/xyz/gianlu/librespot/api/ApiServer.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414
public class ApiServer {
1515
private static final Logger LOGGER = Logger.getLogger(ApiServer.class);
1616
private final int port;
17+
private final String host;
1718
private Undertow undertow = null;
1819

19-
public ApiServer(int port) {
20-
this.port = port;
20+
public ApiServer(@NotNull ApiConfiguration conf) {
21+
this.port = conf.apiPort();
22+
this.host = conf.apiHost();
2123

2224
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
2325
if (undertow != null) undertow.stop();
@@ -39,7 +41,7 @@ public void start(@NotNull Session session) {
3941
corsFilter.setPolicyParam(null);
4042
corsFilter.setUrlPattern(".*");
4143

42-
undertow = Undertow.builder().addHttpListener(port, "", corsFilter).build();
44+
undertow = Undertow.builder().addHttpListener(port, host, corsFilter).build();
4345
undertow.start();
4446
LOGGER.info(String.format("Server started on port %d!", port));
4547
}

api/src/main/java/xyz/gianlu/librespot/api/Main.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ public class Main {
1717

1818
public static void main(String[] args) throws IOException, MercuryClient.MercuryException, GeneralSecurityException, Session.SpotifyAuthenticationException {
1919
AbsConfiguration conf = new FileConfiguration(args);
20-
21-
ApiServer server = new ApiServer(conf.getCustomOptionInt("api.port", 24879));
20+
ApiServer server = new ApiServer(conf);
2221
if (conf.authStrategy() == AuthConfiguration.Strategy.ZEROCONF) {
2322
ZeroconfServer.create(conf).addSessionListener(server::restart);
2423
} else {

core/src/main/java/xyz/gianlu/librespot/AbsConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.spotify.connectstate.model.Connect;
44
import org.jetbrains.annotations.NotNull;
55
import org.jetbrains.annotations.Nullable;
6+
import xyz.gianlu.librespot.api.ApiConfiguration;
67
import xyz.gianlu.librespot.cache.CacheManager;
78
import xyz.gianlu.librespot.core.AuthConfiguration;
89
import xyz.gianlu.librespot.core.TimeProvider;
@@ -12,7 +13,7 @@
1213
/**
1314
* @author Gianlu
1415
*/
15-
public abstract class AbsConfiguration implements TimeProvider.Configuration, Player.Configuration, CacheManager.Configuration, AuthConfiguration, ZeroconfServer.Configuration {
16+
public abstract class AbsConfiguration implements ApiConfiguration, TimeProvider.Configuration, Player.Configuration, CacheManager.Configuration, AuthConfiguration, ZeroconfServer.Configuration {
1617

1718
public abstract int getCustomOptionInt(@NotNull String key, int fallback);
1819

core/src/main/java/xyz/gianlu/librespot/FileConfiguration.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,16 @@ public int timeManualCorrection() {
369369
return config.get("time.manualCorrection");
370370
}
371371

372+
@Override
373+
public int apiPort() {
374+
return config.get("api.port");
375+
}
376+
377+
@Override
378+
public @NotNull String apiHost() {
379+
return config.get("api.host");
380+
}
381+
372382
private final static class PropertiesFormat implements ConfigFormat<Config> {
373383
@Override
374384
public ConfigWriter createWriter() {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package xyz.gianlu.librespot.api;
2+
3+
import org.jetbrains.annotations.NotNull;
4+
5+
/**
6+
* Configuration parameters used for the `api` module
7+
*/
8+
public interface ApiConfiguration {
9+
int apiPort();
10+
11+
@NotNull
12+
String apiHost();
13+
}

core/src/main/resources/default.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,8 @@ crossfadeDuration = 0 # Crossfade overlap time (in milliseconds)
3737
output = "MIXER" # Audio output device (MIXER, PIPE, STDOUT)
3838
releaseLineDelay = 20 # Release mixer line after set delay (in seconds)
3939
pipe = "" # Output raw (signed) PCM to this file (`player.output` must be PIPE)
40-
stopPlaybackOnChunkError = false # Whether the playback should be stopped when the current chunk cannot be downloaded
40+
stopPlaybackOnChunkError = false # Whether the playback should be stopped when the current chunk cannot be downloaded
41+
42+
[api]
43+
port = 24879 # API port (`api` module only)
44+
host = "0.0.0.0" # API listen interface (`api` module only)

0 commit comments

Comments
 (0)