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

com.github.alexdlaird.ngrok.protocol.TunnelIPRestriction Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2021-2024 Alex Laird
 *
 * SPDX-License-Identifier: MIT
 */

package com.github.alexdlaird.ngrok.protocol;

import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * An object that represents IP restriction for a {@link CreateTunnel}.
 */
public class TunnelIPRestriction {

    private final List allowCidrs;
    private final List denyCidrs;

    private TunnelIPRestriction(final Builder builder) {
        this.allowCidrs = builder.allowCidrs;
        this.denyCidrs = builder.denyCidrs;
    }

    /**
     * Get the list of allowed CIDRs.
     */
    public List getAllowCidrs() {
        return allowCidrs;
    }

    /**
     * Get the list of denied CIDRs.
     */
    public List getDenyCidrs() {
        return denyCidrs;
    }

    /**
     * Builder for a {@link TunnelIPRestriction}.
     */
    public static class Builder {

        private List allowCidrs;
        private List denyCidrs;

        /**
         * Construct a TunnelIPRestriction Builder.
         */
        public Builder() {
        }

        /**
         * Construct a TunnelIPRestriction Builder from tunnel definition of ip_restriction.
         *
         * @param tunnelIPRestrictionDefinition The map of Tunnel IP restriction attributes.
         */
        public Builder(final Map tunnelIPRestrictionDefinition) {
            if (tunnelIPRestrictionDefinition.containsKey("allow_cidrs")) {
                this.allowCidrs = Collections.unmodifiableList(
                    (List) tunnelIPRestrictionDefinition.get("allow_cidrs")
                );
            }
            if (tunnelIPRestrictionDefinition.containsKey("deny_cidrs")) {
                this.denyCidrs = Collections.unmodifiableList(
                    (List) tunnelIPRestrictionDefinition.get("deny_cidrs")
                );
            }
        }

        /**
         * The list of allowed CIDRs.
         */
        public TunnelIPRestriction.Builder withAllowCidrs(final List allowCidrs) {
            this.allowCidrs = Collections.unmodifiableList(allowCidrs);
            return this;
        }

        /**
         * The list of denied CIDRs.
         */
        public TunnelIPRestriction.Builder withDenyCidrs(final List denyCidrs) {
            this.denyCidrs = Collections.unmodifiableList(denyCidrs);
            return this;
        }

        /**
         * Build the {@link TunnelIPRestriction}.
         */
        public TunnelIPRestriction build() {
            return new TunnelIPRestriction(this);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy