All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.datadog.api.client.ServerConfiguration Maven / Gradle / Ivy

/*
 * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
 * This product includes software developed at Datadog (https://www.datadoghq.com/).
 * Copyright 2019-Present Datadog, Inc.
 */

package com.datadog.api.client;

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 RuntimeException(
              "The variable " + name + " in the server URL has invalid value " + value + ".");
        }
      }
      url = url.replaceAll("\\{" + name + "\\}", value);
    }
    return url;
  }

  /**
   * Format URL template using default server variables.
   *
   * @return Formatted URL.
   */
  public String URL() {
    return URL(null);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy