TargetHandler.java 4.58 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.catalog.util.localization.LocaleMap
 *  com.scene7.is.provider.JsonResponse
 *  com.scene7.is.provider.ProcessingStatus
 *  com.scene7.is.provider.RequestTypeEnum
 *  com.scene7.is.provider.Response
 *  com.scene7.is.provider.ResponseData
 *  com.scene7.is.provider.TextResponseGenerator
 *  com.scene7.is.provider.TextResponseTypeEnum
 *  com.scene7.is.provider.ZoomTargets
 *  com.scene7.is.sleng.CacheEnum
 *  com.scene7.is.sleng.ImageServer
 *  com.scene7.is.util.MimeTypeEnum
 *  com.scene7.is.util.TextEncodingTypeEnum
 *  com.scene7.is.util.XMLUtil
 *  com.scene7.is.util.callbacks.Option
 *  org.jetbrains.annotations.NotNull
 */
package com.scene7.is.ps.provider;

import com.scene7.is.catalog.util.localization.LocaleMap;
import com.scene7.is.provider.JsonResponse;
import com.scene7.is.provider.ProcessingStatus;
import com.scene7.is.provider.RequestTypeEnum;
import com.scene7.is.provider.Response;
import com.scene7.is.provider.ResponseData;
import com.scene7.is.provider.TextResponseGenerator;
import com.scene7.is.provider.TextResponseTypeEnum;
import com.scene7.is.provider.ZoomTargets;
import com.scene7.is.ps.provider.IZoomException;
import com.scene7.is.ps.provider.ModifierSet;
import com.scene7.is.ps.provider.Request;
import com.scene7.is.ps.provider.RequestHandler;
import com.scene7.is.ps.provider.Util;
import com.scene7.is.ps.provider.defs.ModifierEnum;
import com.scene7.is.sleng.CacheEnum;
import com.scene7.is.sleng.ImageServer;
import com.scene7.is.util.MimeTypeEnum;
import com.scene7.is.util.TextEncodingTypeEnum;
import com.scene7.is.util.XMLUtil;
import com.scene7.is.util.callbacks.Option;
import java.util.List;
import java.util.Map;
import org.jetbrains.annotations.NotNull;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

public class TargetHandler
implements RequestHandler {
    private final ImageServer imageServer;

    public TargetHandler(ImageServer imageServer) {
        assert (imageServer != null);
        this.imageServer = imageServer;
    }

    @NotNull
    @Override
    public Response getResponse(@NotNull Request parsedRequest, @NotNull ProcessingStatus status) throws IZoomException {
        ModifierSet attr = parsedRequest.getGlobalAttributes();
        Response response = TargetHandler.generateTextResponse(parsedRequest.getCatalogValue(ModifierEnum.I_LOCALE_STR_MAP), parsedRequest.getGlobalAttributes().getOrDie(ModifierEnum.LOCALE), parsedRequest.getResponseType(), parsedRequest.getResponseEncoding(), attr.get(ModifierEnum.ID, ""), attr.get(ModifierEnum.HANDLER, ""), parsedRequest.getTargets());
        long expires = Util.computeExpiration(parsedRequest, this.imageServer);
        response.setExpiration(expires);
        return response;
    }

    private static Response generateTextResponse(@NotNull LocaleMap localeMap, @NotNull String locale, @NotNull TextResponseTypeEnum responseType, @NotNull TextEncodingTypeEnum encoding, @NotNull String jsonId, @NotNull String jsonHandler, @NotNull ZoomTargets targets) {
        String result;
        switch (responseType) {
            case XML: {
                Document doc = XMLUtil.createDocument();
                Element root = targets.createXmlElement(doc, localeMap, locale, false, false);
                doc.appendChild(root);
                result = XMLUtil.toXMLString((Document)doc, (TextEncodingTypeEnum)encoding, (boolean)false);
                break;
            }
            case JSON: {
                List targetList = targets.buildList(localeMap, locale);
                result = JsonResponse.generateJsonResponse((Option)TextResponseGenerator.callbackToOption((String)jsonHandler), (Object)targetList, (String)jsonId);
                break;
            }
            case JAVASCRIPT: {
                Map targetMap = targets.buildFlatMap(localeMap, locale);
                byte[] data = TextResponseGenerator.generate((Map)targetMap, (TextResponseTypeEnum)TextResponseTypeEnum.JAVASCRIPT, (String)jsonId, (String)jsonHandler);
                return new Response().setData(ResponseData.createResponseData((byte[])data, (MimeTypeEnum)responseType.getMimeType())).setClientCacheUse(CacheEnum.ON).setRequestType(RequestTypeEnum.TARGETS);
            }
            default: {
                result = targets.buildText(localeMap, locale);
            }
        }
        return new Response().setData(ResponseData.createResponseMessage((String)result, (TextEncodingTypeEnum)encoding, (MimeTypeEnum)responseType.getMimeType())).setClientCacheUse(CacheEnum.ON).setRequestType(RequestTypeEnum.TARGETS);
    }

}