com.fireblocks.sdk.ServerConfiguration Maven / Gradle / Ivy
package com.fireblocks.sdk;
import java.util.Map;
/** Representing a Server configuration. */
public class ServerConfiguration {
public String URL;
public String description;
public Map variables;
/**
* @param URL A URL to the target host.
* @param description A description of the host designated by the URL.
* @param variables A map between a variable name and its value. The value is used for
* substitution in the server's URL template.
*/
public ServerConfiguration(
String URL, String description, Map variables) {
this.URL = URL;
this.description = description;
this.variables = variables;
}
/**
* Format URL template using given variables.
*
* @param variables A map between a variable name and its value.
* @return Formatted URL.
*/
public String URL(Map variables) {
String url = this.URL;
// go through variables and replace placeholders
for (Map.Entry variable : this.variables.entrySet()) {
String name = variable.getKey();
ServerVariable serverVariable = variable.getValue();
String value = serverVariable.defaultValue;
if (variables != null && variables.containsKey(name)) {
value = variables.get(name);
if (serverVariable.enumValues.size() > 0
&& !serverVariable.enumValues.contains(value)) {
throw new IllegalArgumentException(
"The variable "
+ name
+ " in the server URL has invalid value "
+ value
+ ".");
}
}
url = url.replace("{" + name + "}", value);
}
return url;
}
/**
* Format URL template using default server variables.
*
* @return Formatted URL.
*/
public String URL() {
return URL(null);
}
}