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

com.amazonaws.mobileconnectors.iot.AwsIotEndpointUtility Maven / Gradle / Ivy

Go to download

The AWS Android SDK for AWS IoT module holds the client classes that are used for communicating with AWS IoT Service

There is a newer version: 2.6.27
Show newest version
package com.amazonaws.mobileconnectors.iot;

import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;

/**
 * Helper class for parsing AWS IoT endpoints.
 */
public final class AwsIotEndpointUtility {

    /** Constant for token offset of user's account prefix in endpoint. */
    private static final int ENDPOINT_PREFIX_OFFSET = 0;
    /** Constant for token offset of "iot" in endpoint. */
    private static final int ENDPOINT_IOT_OFFSET = 1;
    /** Constant for token offset of AWS region in endpoint. */
    private static final int ENDPOINT_REGION_OFFSET = 2;
    /** Constant for token offset of "amazonaws" in endpoint. */
    private static final int ENDPOINT_DOMAIN_OFFSET = 3;
    /** Constant for token offset of "com" in endpoint. */
    private static final int ENDPOINT_TLD_OFFSET = 4;
    /** Constant for number of tokens in endpoint. */
    private static final int ENDPOINT_SPLIT_SIZE = 5;

    /**
     * Helper class, no public constructor.
     */
    private AwsIotEndpointUtility() { };

    /**
     * Strip the port off of the endpoint if present.
     * @param endpoint desired endpoint.
     * @return string with endpoint removed if present.
     */
    private static String stripPort(String endpoint) {
        return endpoint.split(":")[0];
    }

    /**
     * Splits endpoint into tokens.
     * @param endpoint endpoint to split.
     * @return array of string tokens.
     */
    private static String[] splitEndpoint(String endpoint) {
        return endpoint.split("\\.");
    }

    /**
     * Validates endpoint as a valid AWS IoT endpoint.
     * Throws an IllegalArgumentException if invalid.
     * @param endpoint endpoint to be validated.
     */
    private static void validateIotEndpoint(String endpoint) {
        String[] splits = splitEndpoint(endpoint);
        if (splits.length != ENDPOINT_SPLIT_SIZE
                || !splits[ENDPOINT_IOT_OFFSET].equalsIgnoreCase("iot")
                || !splits[ENDPOINT_DOMAIN_OFFSET].equalsIgnoreCase("amazonaws")
                || !splits[ENDPOINT_TLD_OFFSET].equalsIgnoreCase("com")) {
            throw new IllegalArgumentException(
                    "Bad endpoint format.  Expected XXXXXX.iot.[region].amazonaws.com.");
        }
    }

    /**
     * Parse AWS region from endpoint.
     * @param endpoint endpoint to parse.
     * @return Region contained in endpoint.
     */
    static Region getRegionFromIotEndpoint(String endpoint) {
        String endpointWithoutPort = stripPort(endpoint);
        validateIotEndpoint(endpointWithoutPort);
        String[] splits = splitEndpoint(endpointWithoutPort);

        return Region.getRegion(Regions.fromName(splits[ENDPOINT_REGION_OFFSET]));
    }

    /**
     * Parse custom endpoint prefix from endpoint.
     * @param endpoint endpoint to parse.
     * @return custom endpoint prefix.
     */
    static String getAccountPrefixFromEndpont(String endpoint) {
        String endpointWithoutPort = stripPort(endpoint);
        validateIotEndpoint(endpointWithoutPort);
        return splitEndpoint(endpointWithoutPort)[ENDPOINT_PREFIX_OFFSET];
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy