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

io.prediction.UserActionItemRequestBuilder Maven / Gradle / Ivy

package io.prediction;

import com.ning.http.client.Request;
import com.ning.http.client.RequestBuilder;
import org.joda.time.DateTime;

/**
 * UserActionItem request builder
 *
 * @author The PredictionIO Team (http://prediction.io)
 * @version 0.2
 * @since 0.2
 */

public class UserActionItemRequestBuilder {
    // Mandatory fields
    private String apiUrl;
    private String apiFormat;
    private String appkey;
    private int action;
    private String uid;
    private String iid;
    private DateTime t;

    // Optional fields
    private Double latitude;
    private Double longitude;
    private int rate; // mandatory for u2i rate action

    public static final int RATE = 0;
    public static final int LIKE = 1;
    public static final int DISLIKE = 2;
    public static final int VIEW = 3;
    public static final int VIEWDETAILS = 4;
    public static final int CONVERSION = 5;

    public UserActionItemRequestBuilder(String apiUrl, String apiFormat, String appkey, int action, String uid, String iid) {
        this.apiUrl = apiUrl;
        this.apiFormat = apiFormat;
        this.appkey = appkey;
        this.action = action;
        this.uid = uid;
        this.iid = iid;
    }

    public UserActionItemRequestBuilder latitude(double latitude) {
        this.latitude = new Double(latitude);
        return this;
    }

    public UserActionItemRequestBuilder longitude(double longitude) {
        this.longitude = new Double(longitude);
        return this;
    }

    public UserActionItemRequestBuilder rate(int rate) {
        this.rate = rate;
        return this;
    }

    public UserActionItemRequestBuilder t(DateTime t) {
        this.t = t;
        return this;
    }

    public Request build() {
        RequestBuilder builder = new RequestBuilder("POST");
        builder.addQueryParameter("appkey", this.appkey);
        builder.addQueryParameter("uid", this.uid);
        builder.addQueryParameter("iid", this.iid);
        if (this.latitude != null && this.longitude != null) {
            builder.addQueryParameter("latlng", this.latitude.toString() + "," + this.longitude.toString());
        }
        if (this.t != null) {
            builder.addQueryParameter("t", t.toString());
        }

        String actionUrl = "";
        switch (this.action) {
            case RATE:
                actionUrl = "/actions/u2i/rate.";
                builder.addQueryParameter("rate", Integer.toString(this.rate));
                break;
            case LIKE:
                actionUrl = "/actions/u2i/like.";
                break;
            case DISLIKE:
                actionUrl = "/actions/u2i/dislike.";
                break;
            case VIEW:
                actionUrl = "/actions/u2i/view.";
                break;
            case VIEWDETAILS:
                actionUrl = "/actions/u2i/viewDetails.";
                break;
            case CONVERSION:
                actionUrl = "/actions/u2i/conversion.";
                break;
        }
        builder.setUrl(this.apiUrl + actionUrl + this.apiFormat);
        return builder.build();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy