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

com.azure.communication.jobrouter.implementation.converters.RouterRuleAdapter Maven / Gradle / Ivy

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.communication.jobrouter.implementation.converters;

import com.azure.communication.jobrouter.implementation.accesshelpers.RouterValueConstructorProxy;
import com.azure.communication.jobrouter.implementation.models.DirectMapRouterRuleInternal;
import com.azure.communication.jobrouter.implementation.models.ExpressionRouterRuleInternal;
import com.azure.communication.jobrouter.implementation.models.FunctionRouterRuleInternal;
import com.azure.communication.jobrouter.implementation.models.RouterRuleInternal;
import com.azure.communication.jobrouter.implementation.models.StaticRouterRuleInternal;
import com.azure.communication.jobrouter.implementation.models.WebhookRouterRuleInternal;
import com.azure.communication.jobrouter.models.DirectMapRouterRule;
import com.azure.communication.jobrouter.models.ExpressionRouterRule;
import com.azure.communication.jobrouter.models.ExpressionRouterRuleLanguage;
import com.azure.communication.jobrouter.models.FunctionRouterRule;
import com.azure.communication.jobrouter.models.FunctionRouterRuleCredential;
import com.azure.communication.jobrouter.models.OAuth2WebhookClientCredential;
import com.azure.communication.jobrouter.models.RouterRule;
import com.azure.communication.jobrouter.models.StaticRouterRule;
import com.azure.communication.jobrouter.models.WebhookRouterRule;

/**
 * RouterRuleAdapter.
 */
public class RouterRuleAdapter {
    /**
     * Converts routerRule from external to internal.
     * @param routerRule external RouterRule.
     * @return internal RouterRule.
     */
    public static RouterRuleInternal getRouterRuleInternal(RouterRule routerRule) {
        RouterRuleInternal prioritizationRuleInternal = null;
        if (routerRule.getClass() == ExpressionRouterRule.class) {
            ExpressionRouterRule expressionRouterRule = (ExpressionRouterRule) routerRule;
            prioritizationRuleInternal = new ExpressionRouterRuleInternal(expressionRouterRule.getExpression())
                .setLanguage(expressionRouterRule.getLanguage());
        } else if (routerRule.getClass() == DirectMapRouterRule.class) {
            DirectMapRouterRule directMapRouterRule = (DirectMapRouterRule) routerRule;
            prioritizationRuleInternal = new DirectMapRouterRuleInternal();
        } else if (routerRule.getClass() == FunctionRouterRule.class) {
            FunctionRouterRule functionRouterRule = (FunctionRouterRule) routerRule;
            prioritizationRuleInternal = new FunctionRouterRuleInternal(functionRouterRule.getFunctionUri())
                .setCredential(functionRouterRule.getCredential());
        } else if (routerRule.getClass() == StaticRouterRule.class) {
            StaticRouterRule staticRouterRule = (StaticRouterRule) routerRule;
            prioritizationRuleInternal
                = new StaticRouterRuleInternal().setValue(RouterValueAdapter.getValue(staticRouterRule.getValue()));
        } else if (routerRule.getClass() == WebhookRouterRule.class) {
            WebhookRouterRule webhookRouterRule = (WebhookRouterRule) routerRule;
            prioritizationRuleInternal = new WebhookRouterRuleInternal()
                .setAuthorizationServerUri(webhookRouterRule.getAuthorizationServerUri())
                .setClientCredential(webhookRouterRule.getClientCredential())
                .setWebhookUri(webhookRouterRule.getWebhookUri());
        }
        return prioritizationRuleInternal;
    }

    public static RouterRule convertRouterRuleToPublic(RouterRuleInternal rule) {
        if (rule instanceof DirectMapRouterRuleInternal) {
            return new DirectMapRouterRule();
        } else if (rule instanceof ExpressionRouterRuleInternal) {
            return new ExpressionRouterRule(((ExpressionRouterRuleInternal) rule).getExpression());
        } else if (rule instanceof FunctionRouterRuleInternal) {
            FunctionRouterRuleInternal functionRouterRule = (FunctionRouterRuleInternal) rule;
            return new FunctionRouterRule(functionRouterRule.getFunctionUri()).setCredential(
                new FunctionRouterRuleCredential().setFunctionKey(functionRouterRule.getCredential().getFunctionKey())
                    .setAppKey(functionRouterRule.getCredential().getAppKey())
                    .setClientId(functionRouterRule.getCredential().getClientId()));
        } else if (rule instanceof StaticRouterRuleInternal) {
            return new StaticRouterRule()
                .setValue(RouterValueConstructorProxy.create(((StaticRouterRuleInternal) rule).getValue()));
        } else if (rule instanceof WebhookRouterRuleInternal) {
            WebhookRouterRuleInternal webhookRouterRule = (WebhookRouterRuleInternal) rule;
            return new WebhookRouterRule().setWebhookUri(webhookRouterRule.getWebhookUri())
                .setClientCredential(new OAuth2WebhookClientCredential()
                    .setClientId(webhookRouterRule.getClientCredential().getClientId())
                    .setClientSecret(webhookRouterRule.getClientCredential().getClientSecret()))
                .setAuthorizationServerUri(webhookRouterRule.getAuthorizationServerUri());
        }

        return null;
    }

    public static RouterRuleInternal convertRouterRuleToInternal(RouterRule rule) {
        if (rule instanceof DirectMapRouterRule) {
            return new DirectMapRouterRuleInternal();
        } else if (rule instanceof ExpressionRouterRule) {
            return new ExpressionRouterRuleInternal(((ExpressionRouterRule) rule).getExpression())
                .setLanguage(ExpressionRouterRuleLanguage.POWER_FX);
        } else if (rule instanceof FunctionRouterRule) {
            FunctionRouterRule functionRouterRule = (FunctionRouterRule) rule;
            return new FunctionRouterRuleInternal(functionRouterRule.getFunctionUri()).setCredential(
                new FunctionRouterRuleCredential().setFunctionKey(functionRouterRule.getCredential().getFunctionKey())
                    .setAppKey(functionRouterRule.getCredential().getAppKey())
                    .setClientId(functionRouterRule.getCredential().getClientId()));
        } else if (rule instanceof StaticRouterRule) {
            return new StaticRouterRuleInternal()
                .setValue(RouterValueAdapter.getValue(((StaticRouterRule) rule).getValue()));
        } else if (rule instanceof WebhookRouterRule) {
            WebhookRouterRule webhookRouterRule = (WebhookRouterRule) rule;
            return new WebhookRouterRuleInternal().setWebhookUri(webhookRouterRule.getWebhookUri())
                .setClientCredential(new OAuth2WebhookClientCredential()
                    .setClientId(webhookRouterRule.getClientCredential().getClientId())
                    .setClientSecret(webhookRouterRule.getClientCredential().getClientSecret()))
                .setAuthorizationServerUri(webhookRouterRule.getAuthorizationServerUri());
        }

        return null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy