Search in sources :

Example 11 with APIOperationsDTO

use of org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIOperationsDTO in project carbon-apimgt by wso2.

the class ImportUtils method extractAndDropOperationPoliciesFromURITemplate.

public static Map<String, List<OperationPolicy>> extractAndDropOperationPoliciesFromURITemplate(List<APIOperationsDTO> operationsDTO) {
    Map<String, List<OperationPolicy>> operationPoliciesMap = new HashMap<>();
    for (APIOperationsDTO dto : operationsDTO) {
        String key = dto.getVerb() + ":" + dto.getTarget();
        List<OperationPolicy> operationPolicies = OperationPolicyMappingUtil.fromDTOToAPIOperationPoliciesList(dto.getOperationPolicies());
        if (!operationPolicies.isEmpty()) {
            operationPoliciesMap.put(key, operationPolicies);
        }
        dto.setOperationPolicies(null);
    }
    return operationPoliciesMap;
}
Also used : HashMap(java.util.HashMap) OperationPolicy(org.wso2.carbon.apimgt.api.model.OperationPolicy) APIOperationsDTO(org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIOperationsDTO) ArrayList(java.util.ArrayList) List(java.util.List) NodeList(org.w3c.dom.NodeList)

Example 12 with APIOperationsDTO

use of org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIOperationsDTO in project carbon-apimgt by wso2.

the class TemplateBuilderUtil method addWebsocketTopicMappings.

private static void addWebsocketTopicMappings(API api, APIDTO apidto) {
    org.json.JSONObject endpointConfiguration = new org.json.JSONObject(api.getEndpointConfig());
    String sandboxEndpointUrl = !endpointConfiguration.isNull(APIConstants.API_DATA_SANDBOX_ENDPOINTS) ? endpointConfiguration.getJSONObject(APIConstants.API_DATA_SANDBOX_ENDPOINTS).getString("url") : null;
    String productionEndpointUrl = !endpointConfiguration.isNull(APIConstants.API_DATA_PRODUCTION_ENDPOINTS) ? endpointConfiguration.getJSONObject(APIConstants.API_DATA_PRODUCTION_ENDPOINTS).getString("url") : null;
    Map<String, Map<String, String>> perTopicMappings = new HashMap<>();
    for (APIOperationsDTO operation : apidto.getOperations()) {
        String key = operation.getTarget();
        String mapping = operation.getUriMapping() == null ? "" : Paths.get("/", operation.getUriMapping()).toString();
        Map<String, String> endpoints = new HashMap<>();
        if (sandboxEndpointUrl != null) {
            endpoints.put(APIConstants.GATEWAY_ENV_TYPE_SANDBOX, sandboxEndpointUrl + mapping);
        }
        if (productionEndpointUrl != null) {
            endpoints.put(APIConstants.GATEWAY_ENV_TYPE_PRODUCTION, productionEndpointUrl + mapping);
        }
        perTopicMappings.put(key, endpoints);
    }
    api.setWebSocketTopicMappingConfiguration(new WebSocketTopicMappingConfiguration(perTopicMappings));
    addWebsocketTopicResourceKeys(api);
}
Also used : JSONObject(org.json.simple.JSONObject) HashMap(java.util.HashMap) WebSocketTopicMappingConfiguration(org.wso2.carbon.apimgt.api.model.WebSocketTopicMappingConfiguration) APIOperationsDTO(org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIOperationsDTO) Map(java.util.Map) HashMap(java.util.HashMap)

Example 13 with APIOperationsDTO

use of org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIOperationsDTO in project carbon-apimgt by wso2.

the class APIMappingUtil method getOperationsFromAPI.

/**
 * Returns a set of operations from a API.
 *
 * @param api API object
 * @return a set of operations from a given swagger definition
 */
private static List<APIOperationsDTO> getOperationsFromAPI(API api) {
    Set<URITemplate> uriTemplates = api.getUriTemplates();
    List<APIOperationsDTO> operationsDTOList = new ArrayList<>();
    for (URITemplate uriTemplate : uriTemplates) {
        APIOperationsDTO operationsDTO = getOperationFromURITemplate(uriTemplate);
        if (api.getType().equals(APIConstants.API_TYPE_WS)) {
            Map<String, String> wsUriMappings = api.getWsUriMapping();
            if (wsUriMappings != null) {
                String wsUriMapping = wsUriMappings.get(operationsDTO.getVerb() + "_" + operationsDTO.getTarget());
                if (wsUriMapping != null) {
                    operationsDTO.setUriMapping(wsUriMapping);
                }
            }
        }
        operationsDTOList.add(operationsDTO);
    }
    return operationsDTOList;
}
Also used : URITemplate(org.wso2.carbon.apimgt.api.model.URITemplate) APIOperationsDTO(org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIOperationsDTO) ArrayList(java.util.ArrayList)

Example 14 with APIOperationsDTO

use of org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIOperationsDTO in project carbon-apimgt by wso2.

the class APIMappingUtil method getOperationListWithOldData.

/**
 * This method returns graphQL operations with the old data.
 *
 * @param uriTemplates uriTemplates
 * @param operations   operations
 * @return operations
 */
public static List<APIOperationsDTO> getOperationListWithOldData(Set<URITemplate> uriTemplates, List<APIOperationsDTO> operations) {
    for (APIOperationsDTO operation : operations) {
        for (URITemplate uriTemplate : uriTemplates) {
            if (operation.getVerb().equalsIgnoreCase(uriTemplate.getHTTPVerb()) && operation.getTarget().equalsIgnoreCase(uriTemplate.getUriTemplate())) {
                operation.setThrottlingPolicy(uriTemplate.getThrottlingTier());
                operation.setAuthType(uriTemplate.getAuthType());
                operation.setScopes(uriTemplate.retrieveAllScopes().stream().map(Scope::getKey).collect(Collectors.toList()));
            }
            if (operation.getThrottlingPolicy() == null) {
                operation.setThrottlingPolicy(APIConstants.UNLIMITED_TIER);
            }
        }
    }
    return operations;
}
Also used : Scope(org.wso2.carbon.apimgt.api.model.Scope) APIOperationsDTO(org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIOperationsDTO) URITemplate(org.wso2.carbon.apimgt.api.model.URITemplate)

Example 15 with APIOperationsDTO

use of org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIOperationsDTO in project carbon-apimgt by wso2.

the class APIMappingUtil method getURITemplates.

/**
 * This method returns URI templates according to the given list of operations.
 *
 * @param operations List operations
 * @return URI Templates
 * @throws APIManagementException
 */
public static Set<URITemplate> getURITemplates(API model, List<APIOperationsDTO> operations) throws APIManagementException {
    boolean isHttpVerbDefined = false;
    Set<URITemplate> uriTemplates = new LinkedHashSet<>();
    if (operations == null || operations.isEmpty()) {
        operations = getDefaultOperationsList(model.getType());
    }
    for (APIOperationsDTO operation : operations) {
        URITemplate template = new URITemplate();
        String uriTempVal = operation.getTarget();
        String httpVerb = operation.getVerb();
        List<String> scopeList = operation.getScopes();
        if (scopeList != null) {
            for (String scopeKey : scopeList) {
                for (Scope definedScope : model.getScopes()) {
                    if (definedScope.getKey().equalsIgnoreCase(scopeKey)) {
                        template.setScopes(definedScope);
                        template.setScope(definedScope);
                        break;
                    }
                }
            }
        }
        // AWS Lambda: set arn to URI template
        String amznResourceName = operation.getAmznResourceName();
        if (amznResourceName != null) {
            template.setAmznResourceName(amznResourceName);
        }
        // Only continue for supported operations
        if (APIConstants.SUPPORTED_METHODS.contains(httpVerb.toLowerCase()) || (APIConstants.GRAPHQL_SUPPORTED_METHOD_LIST.contains(httpVerb.toUpperCase())) || (APIConstants.WEBSUB_SUPPORTED_METHOD_LIST.contains(httpVerb.toUpperCase())) || (APIConstants.SSE_SUPPORTED_METHOD_LIST.contains(httpVerb.toUpperCase())) || (APIConstants.WS_SUPPORTED_METHOD_LIST.contains(httpVerb.toUpperCase()))) {
            isHttpVerbDefined = true;
            String authType = operation.getAuthType();
            if (APIConstants.OASResourceAuthTypes.APPLICATION_OR_APPLICATION_USER.equals(authType)) {
                authType = APIConstants.AUTH_APPLICATION_OR_USER_LEVEL_TOKEN;
            } else if (APIConstants.OASResourceAuthTypes.APPLICATION_USER.equals(authType)) {
                authType = APIConstants.AUTH_APPLICATION_USER_LEVEL_TOKEN;
            } else if (APIConstants.OASResourceAuthTypes.NONE.equals(authType)) {
                authType = APIConstants.AUTH_NO_AUTHENTICATION;
            } else if (APIConstants.OASResourceAuthTypes.APPLICATION.equals(authType)) {
                authType = APIConstants.AUTH_APPLICATION_LEVEL_TOKEN;
            } else {
                authType = APIConstants.AUTH_APPLICATION_OR_USER_LEVEL_TOKEN;
            }
            template.setThrottlingTier(operation.getThrottlingPolicy());
            template.setThrottlingTiers(operation.getThrottlingPolicy());
            template.setUriTemplate(uriTempVal);
            template.setHTTPVerb(httpVerb.toUpperCase());
            template.setHttpVerbs(httpVerb.toUpperCase());
            template.setAuthType(authType);
            template.setAuthTypes(authType);
            if (operation.getOperationPolicies() != null) {
                template.setOperationPolicies(OperationPolicyMappingUtil.fromDTOToAPIOperationPoliciesList(operation.getOperationPolicies()));
            }
            uriTemplates.add(template);
        } else {
            if (APIConstants.GRAPHQL_API.equals(model.getType())) {
                handleException("The GRAPHQL operation Type '" + httpVerb + "' provided for operation '" + uriTempVal + "' is invalid");
            } else if (APIConstants.API_TYPE_WEBSUB.equals(model.getType())) {
                handleException("The WEBSUB operation Type '" + httpVerb + "' provided for operation '" + uriTempVal + "' is invalid");
            } else if (APIConstants.API_TYPE_SSE.equals(model.getType())) {
                handleException("The SSE operation Type '" + httpVerb + "' provided for operation '" + uriTempVal + "' is invalid");
            } else if (APIConstants.API_TYPE_WS.equals(model.getType())) {
                handleException("The WEBSOCKET operation Type '" + httpVerb + "' provided for operation '" + uriTempVal + "' is invalid");
            } else {
                handleException("The HTTP method '" + httpVerb + "' provided for resource '" + uriTempVal + "' is invalid");
            }
        }
        if (!isHttpVerbDefined) {
            if (APIConstants.GRAPHQL_API.equals(model.getType())) {
                handleException("Operation '" + uriTempVal + "' has global parameters without " + "Operation Type");
            } else if (APIConstants.API_TYPE_WEBSUB.equals(model.getType()) || APIConstants.API_TYPE_SSE.equals(model.getType())) {
                handleException("Topic '" + uriTempVal + "' has global parameters without " + "Operation Type");
            } else {
                handleException("Resource '" + uriTempVal + "' has global parameters without " + "HTTP methods");
            }
        }
    }
    return uriTemplates;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) Scope(org.wso2.carbon.apimgt.api.model.Scope) URITemplate(org.wso2.carbon.apimgt.api.model.URITemplate) APIOperationsDTO(org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIOperationsDTO)

Aggregations

APIOperationsDTO (org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIOperationsDTO)19 ArrayList (java.util.ArrayList)15 URITemplate (org.wso2.carbon.apimgt.api.model.URITemplate)15 HashMap (java.util.HashMap)9 Scope (org.wso2.carbon.apimgt.api.model.Scope)7 JSONObject (org.json.simple.JSONObject)6 Tier (org.wso2.carbon.apimgt.api.model.Tier)6 CORSConfiguration (org.wso2.carbon.apimgt.api.model.CORSConfiguration)4 APICorsConfigurationDTO (org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APICorsConfigurationDTO)4 APIInfoAdditionalPropertiesDTO (org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.APIInfoAdditionalPropertiesDTO)4 Timestamp (java.sql.Timestamp)3 Date (java.util.Date)3 LinkedHashSet (java.util.LinkedHashSet)3 Map (java.util.Map)3 APIManagementException (org.wso2.carbon.apimgt.api.APIManagementException)3 APICategory (org.wso2.carbon.apimgt.api.model.APICategory)3 APIProductResource (org.wso2.carbon.apimgt.api.model.APIProductResource)3 ProductAPIDTO (org.wso2.carbon.apimgt.rest.api.publisher.v1.dto.ProductAPIDTO)3 JsonObject (com.google.gson.JsonObject)2 ObjectTypeDefinition (graphql.language.ObjectTypeDefinition)2