Package ch.iterate.openstack.swift.handler

Source Code of ch.iterate.openstack.swift.handler.CdnContainerInfoHandler

package ch.iterate.openstack.swift.handler;

import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;

import java.io.IOException;

import ch.iterate.openstack.swift.Constants;
import ch.iterate.openstack.swift.Response;
import ch.iterate.openstack.swift.exception.AuthorizationException;
import ch.iterate.openstack.swift.exception.GenericException;
import ch.iterate.openstack.swift.exception.NotFoundException;
import ch.iterate.openstack.swift.model.CDNContainer;
import ch.iterate.openstack.swift.model.Region;

public class CdnContainerInfoHandler implements ResponseHandler<CDNContainer> {

    private Region region;
    private String container;

    public CdnContainerInfoHandler(final Region region, String container) {
        this.region = region;
        this.container = container;
    }

    public CDNContainer handleResponse(final HttpResponse response) throws ClientProtocolException, IOException {
        if(response.getStatusLine().getStatusCode() == HttpStatus.SC_NO_CONTENT) {
            CDNContainer result = new CDNContainer(region, container);
            result.setCdnURL(this.getCdnUrl(response));
            result.setSslURL(this.getCdnSslUrl(response));
            result.setStreamingURL(this.getCdnStreamingUrl(response));
            result.setiOSStreamingURL(this.getCdnIosStreamingUrl(response));
            for(Header header : response.getAllHeaders()) {
                String name = header.getName().toLowerCase();
                if(Constants.X_CDN_ENABLED.equalsIgnoreCase(name)) {
                    result.setEnabled(Boolean.valueOf(header.getValue()));
                }
                else if(Constants.X_CDN_RETAIN_LOGS.equalsIgnoreCase(name)) {
                    result.setRetainLogs(Boolean.valueOf(header.getValue()));
                }
                else if(Constants.X_CDN_TTL.equalsIgnoreCase(name)) {
                    result.setTtl(Integer.parseInt(header.getValue()));
                }
                else if(Constants.X_CDN_REFERRER_ACL.equalsIgnoreCase(name)) {
                    result.setReferrerACL(header.getValue());
                }
                else if(Constants.X_CDN_USER_AGENT_ACL.equalsIgnoreCase(name)) {
                    result.setUserAgentACL(header.getValue());
                }
            }
            return result;
        }
        else if(response.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
            throw new NotFoundException(new Response(response));
        }
        else if(response.getStatusLine().getStatusCode() == HttpStatus.SC_UNAUTHORIZED) {
            throw new AuthorizationException(new Response(response));
        }
        else {
            throw new GenericException(new Response(response));
        }
    }

    /**
     * Get the URL For a shared container
     *
     * @return null if the header is not present or the correct value as defined by the header
     */
    private String getCdnUrl(final HttpResponse response) {
        Header cdnHeader = response.getFirstHeader(Constants.X_CDN_URI);
        if(cdnHeader != null) {
            return cdnHeader.getValue();
        }
        return null;
    }

    /**
     * Get the SSL URL For a shared container
     *
     * @return null if the header is not present or the correct value as defined by the header
     */
    private String getCdnSslUrl(final HttpResponse response) {
        Header cdnHeader = response.getFirstHeader(Constants.X_CDN_SSL_URI);
        if(cdnHeader != null) {
            return cdnHeader.getValue();
        }
        return null;
    }

    /**
     * Get the SSL URL For a shared container
     *
     * @return null if the header is not present or the correct value as defined by the header
     */
    private String getCdnStreamingUrl(final HttpResponse response) {
        Header cdnHeader = response.getFirstHeader(Constants.X_CDN_Streaming_URI);
        if(cdnHeader != null) {
            return cdnHeader.getValue();
        }
        return null;
    }

    private String getCdnIosStreamingUrl(final HttpResponse response) {
        Header cdnHeader = response.getFirstHeader(Constants.X_CDN_IOS_URI);
        if(cdnHeader != null) {
            return cdnHeader.getValue();
        }
        return null;
    }
}
TOP

Related Classes of ch.iterate.openstack.swift.handler.CdnContainerInfoHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.