package io.cattle.platform.iaas.api.request.handler; import io.cattle.platform.util.type.CollectionUtils; import io.github.ibuildthecloud.gdapi.request.ApiRequest; import io.github.ibuildthecloud.gdapi.request.handler.AbstractApiRequestHandler; import java.io.IOException; import java.util.Map; public class RequestReRouterHandler extends AbstractApiRequestHandler { @Override public void handle(ApiRequest request) throws IOException { String version = request.getVersion(); if (version == null) { return; } switch(version) { case "v1": routeV1(request); } } protected void routeV1(ApiRequest request) throws IOException { if (request.getType() == null) { return; } switch (request.getType()) { case "environment": case "composeProject": case "kubernetesStack": routeV1Environment(request); break; case "service": case "kubernetesService": case "composeService": case "dnsService": case "loadBalancerService": case "externalService": routeV1Service(request); break; } } protected void routeV1Environment(ApiRequest request) throws IOException { request.setSchemaVersion("v2-beta"); if ("environment".equals(request.getType())) { request.setType("stack"); } } protected void routeV1Service(ApiRequest request) throws IOException { Map<String, Object> body = CollectionUtils.toMap(request.getRequestObject()); Object value = body.get("environmentId"); if (value != null){ body.put("stackId", value); } request.setSchemaVersion("v2-beta"); } }