All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.urbanairship.api.client.APIClientResponse Maven / Gradle / Ivy

There is a newer version: 9.7.0
Show newest version

/*
 * Copyright 2013 Urban Airship and Contributors
 */

package com.urbanairship.api.client;

import org.apache.http.HttpResponse;

/**
 * APIClientResponse encapsulates relevant data about responses from the
 * Urban Airship API. This is the object returned for successful API requests.
 * It contains the raw HttpResponse object and an API response object with
 * the details of the Urban Airship response specifically.
 */
public class APIClientResponse {

    private final T apiResponse;
    private final HttpResponse httpResponse;

    private APIClientResponse(T apiResponse, HttpResponse
            httpResponse){
        this.apiResponse = apiResponse;
        this.httpResponse = httpResponse;
    }

    /**
     * Return a Builder for an APIPushResponse
     * @return Builder
     */
    public static Builder newPushResponseBuilder(){
        return new Builder();
    }

    /**
     * Return a Builder for an APIScheduleResponse
     * @return Builder
     */
    public static Builder newScheduleResponseBuilder(){
        return new Builder();
    }


    /**
     * Return the HTTP request object used for the request.
     * The HttpEntity associated with the request will be closed, and
     * attempting to read from it will throw an exception
     * @return HttpResponse returned with this request
     */
    public HttpResponse getHttpResponse() {
        return httpResponse;
    }

    /**
     * The APIResponse object for this request. Returns one of the API response
     * types.
     * @return APIResponse Type for this request.
     */
    public T getApiResponse() {
        return apiResponse;
    }

    public String toString(){
        StringBuilder builder = new StringBuilder();
        builder.append("\nHttp:");
        builder.append(httpResponse.toString());
        builder.append("\nAPI:");
        builder.append(apiResponse.toString());
        return builder.toString();
    }

    /**
     * Build a APIClientResponse of the given type.
     */
    public static class Builder {

        private T apiResponse;
        private HttpResponse httpResponse;

        private Builder(){}

        /**
         * The API response specific to the Urban Airship API request.
         * @param apiResponse API response object.
         * @return This Builder
         */
        public Builder setApiResponse(T apiResponse){
            this.apiResponse = apiResponse;
            return this;
        }

        /**
         * The raw HttpResponse response that was returned for this
         * request.
         * @param httpResponse An Apache HttpResponse.
         * @return This Builder
         */
        public Builder setHttpResponse(HttpResponse httpResponse){
            this.httpResponse = httpResponse;
            return this;
        }

        public APIClientResponse build(){
            return new APIClientResponse(apiResponse, httpResponse);
        }

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy