AnalyticsSegmentsServlet.java 3.57 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.day.cq.i18n.I18n
 *  javax.servlet.ServletException
 *  javax.servlet.http.HttpServletRequest
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.sling.SlingServlet
 *  org.apache.sling.api.SlingHttpServletRequest
 *  org.apache.sling.api.SlingHttpServletResponse
 *  org.apache.sling.api.servlets.SlingAllMethodsServlet
 *  org.apache.sling.commons.json.JSONArray
 *  org.apache.sling.commons.json.JSONException
 *  org.apache.sling.commons.json.JSONObject
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.day.cq.analytics.sitecatalyst.impl.servlets;

import com.day.cq.analytics.sitecatalyst.SitecatalystException;
import com.day.cq.analytics.sitecatalyst.SitecatalystWebservice;
import com.day.cq.i18n.I18n;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.sling.SlingServlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.apache.sling.commons.json.JSONArray;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SlingServlet(resourceTypes={"cq/analytics/components/sitecatalystpage"}, selectors={"segments"}, extensions={"json"})
public class AnalyticsSegmentsServlet
extends SlingAllMethodsServlet {
    private final Logger log;
    @Reference
    private SitecatalystWebservice sitecatalystWebservice;

    public AnalyticsSegmentsServlet() {
        this.log = LoggerFactory.getLogger(this.getClass());
    }

    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
        I18n i18n = new I18n((HttpServletRequest)request);
        JSONObject jsonResponse = new JSONObject();
        try {
            try {
                String server = request.getParameter("datacenter");
                String company = request.getParameter("company");
                String user = request.getParameter("username");
                String secret = request.getParameter("secret");
                jsonResponse.put("segments", (Object)new JSONArray(this.sitecatalystWebservice.getSegments(server, company, user, secret)));
            }
            catch (SitecatalystException e) {
                String errorMessage = "Failed to obtain the available segment list from the Analytics API Server.";
                this.log.error(errorMessage, (Throwable)e);
                response.setStatus(500);
                jsonResponse.put("error", (Object)i18n.get(errorMessage));
            }
        }
        catch (JSONException e) {
            throw new ServletException("Error creating JSON response.", (Throwable)e);
        }
        finally {
            response.getWriter().write(jsonResponse.toString());
        }
    }

    protected void bindSitecatalystWebservice(SitecatalystWebservice sitecatalystWebservice) {
        this.sitecatalystWebservice = sitecatalystWebservice;
    }

    protected void unbindSitecatalystWebservice(SitecatalystWebservice sitecatalystWebservice) {
        if (this.sitecatalystWebservice == sitecatalystWebservice) {
            this.sitecatalystWebservice = null;
        }
    }
}