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 String 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

    /**
     * Action name for a user-rate-item action
     */
    public static final String RATE = "rate";

    /**
     * Action name for a user-like-item action
     */
    public static final String LIKE = "like";

    /**
     * Action name for a user-dislike-item action
     */
    public static final String DISLIKE = "dislike";

    /**
     * Action name for a user-view-item action
     */
    public static final String VIEW = "view";

    /**
     * Action name for a user-conversion-item action
     */
    public static final String CONVERSION = "conversion";

    /**
     * Instantiate a request builder with mandatory arguments.
     * 

* Do not use this directly. Please refer to "See Also". * * @param apiUrl the API URL * @param apiFormat the return format of the API * @param appkey the new app key to be used * @param action the action code * @param uid the user ID * @param iid the item ID * * @see Client#getUserRateItemRequestBuilder * @see Client#getUserLikeItemRequestBuilder * @see Client#getUserDislikeItemRequestBuilder * @see Client#getUserViewItemRequestBuilder * @see Client#getUserConversionItemRequestBuilder */ public UserActionItemRequestBuilder(String apiUrl, String apiFormat, String appkey, String action, String uid, String iid) { this.apiUrl = apiUrl; this.apiFormat = apiFormat; this.appkey = appkey; this.action = action; this.uid = uid; this.iid = iid; } /** * Add the "latitude" optional argument to the request. *

* Only certain data backend support geospatial indexing. * Please refer to the main documentation for more information. * * @param latitude latitude */ public UserActionItemRequestBuilder latitude(double latitude) { this.latitude = new Double(latitude); return this; } /** * Add the "longitude" optional argument to the request. *

* Only certain data backend support geospatial indexing. * Please refer to the main documentation for more information. * * @param longitude longitude */ public UserActionItemRequestBuilder longitude(double longitude) { this.longitude = new Double(longitude); return this; } /** * Add the "rate" argument (mandatory for user-rate-item actions) to the request. * * @param rate user's rating on item */ public UserActionItemRequestBuilder rate(int rate) { this.rate = rate; return this; } /** * Add the "t" optional argument to the request. * * @param t time of action */ public UserActionItemRequestBuilder t(DateTime t) { this.t = t; return this; } /** * Build a request. *

* Do not use this directly. Please refer to "See Also". * * @see Client#userConversionItem(UserActionItemRequestBuilder) * @see Client#userLikeItem(UserActionItemRequestBuilder) * @see Client#userDislikeItem(UserActionItemRequestBuilder) * @see Client#userRateItem(UserActionItemRequestBuilder) * @see Client#userViewItem(UserActionItemRequestBuilder) */ public Request build() { RequestBuilder builder = new RequestBuilder("POST"); builder.addQueryParameter("pio_appkey", this.appkey); builder.addQueryParameter("pio_uid", this.uid); builder.addQueryParameter("pio_iid", this.iid); if (this.latitude != null && this.longitude != null) { builder.addQueryParameter("pio_latlng", this.latitude.toString() + "," + this.longitude.toString()); } if (this.t != null) { builder.addQueryParameter("pio_t", t.toString()); } String actionUrl = "/actions/u2i."; builder.addQueryParameter("pio_action", this.action); if (this.action == RATE) { builder.addQueryParameter("pio_rate", Integer.toString(this.rate)); } builder.setUrl(this.apiUrl + actionUrl + this.apiFormat); return builder.build(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy