You can use this as a starting point.

Gustavo


var _recommendationInner = {
    baseAjaxPromise: function (theData, url) {
        return new Promise(function (resolve, reject) {
            $.ajax({
                type: 'POST',
                url: url,
                data: JSON.stringify(theData),
                contentType: 'text/plain',
                xhrFields: {
                    withCredentials: false
                },
                dataType: "json",
                success: function(data) {
                    resolve(data);
                },
                failure: function(errorMsg) {
                    console.error('Error ' + errorMsg);
                    reject();
                }
            })
                .done(function(data) {
                    resolve(data);
                })
                .fail(function(jqXHR, textStatus) {
                    console.error("error : " + textStatus);
                    console.error("error status text: " + jqXHR.statusText);
                    console.error("error status: " + jqXHR.status);
                    reject();
                });
        });
    }

};

var Recommendations = new function() {

    this.set = function(accessKey, eventsUrl, queriesUrl) {
        Recommendations.eventsUrl = eventsUrl + '/events.json?accessKey=' +
accessKey;
        Recommendations.queriesUrl = queriesUrl +
'/queries.json?accessKey=' + accessKey;
    };

    /** Events **/
    var viewProductPromise = function(user,product) {
        var data = {
            "event": 'view',
            "entityType": "user",
            "entityId": user,
            "targetEntityType": "item",
            "targetEntityId": product,
            "eventTime" : new Date().toISOString()
        };
        return _recommendationInner.baseAjaxPromise(data,
Recommendations.eventsUrl);
    };

    var purchaseProductPromise = function (user,product) {
        var data = {
            "event": "purchase",
            "entityType": "user",
            "entityId": user,
            "targetEntityType": "item",
            "targetEntityId": product,
            "eventTime" : new Date().toISOString()
        };
        return _recommendationInner.baseAjaxPromise(data,
Recommendations.eventsUrl);
    };

    /** Queries **/
    var getGeneralRecommendationsPromise = function (number) {
        var data = {
            "num" : number
        };
        return _recommendationInner.baseAjaxPromise(data,
Recommendations.queriesUrl);
    };

    var getRecommendationsForUserPromise = function (user) {
        var data = {
            "user" : user
        };
        return _recommendationInner.baseAjaxPromise(data,
Recommendations.queriesUrl);
    };

    var getRecommendationsPromise = function (user,contextProduct,category)
{
        var fields = [];

        if (category) {
            fields.push({
                "name": "category",
                "values": [category],
                "bias": -1
            });
        }

        var data = {
            "user" : user,
            "item" :  contextProduct,
            "fields" : fields
        };
        return _recommendationInner.baseAjaxPromise(data,
Recommendations.queriesUrl);
    };


    /** Events **/
    this.purchase = function (user,product,quantity,amount) {
        return purchaseProductPromise(user,product,quantity,amount)
            .then(nil => { return nil; })
            .catch(error => { throw error; });
    };

    this.viewProduct = function (user,product, isStrong = false) {
        return viewProductPromise(user, product, isStrong);
    };

    /** Queries **/
    this.getGeneralRecommendations = function (number) {
        return getGeneralRecommendationsPromise(number);
    };

    this.getRecommendationsForUser = function (user) {
        return getRecommendationsForUserPromise(user);
    };

    this.getRecommendations = function (user,contextProduct,category) {
        return getRecommendationsPromise(user,contextProduct,category);
    };

};


On Mon, Apr 10, 2017 at 8:31 AM, Vaghawan Ojha <[email protected]>
wrote:

> Hi,
>
> Ok, in  that case I am currently not aware of any js SDK like you wanted.
> Someone else may help.
>
> Thanks
>
> On Mon, Apr 10, 2017 at 6:14 PM, Mohamed Zouga <[email protected]>
> wrote:
>
>> @vaghawan : i don't want to go posting my accessKey allover my requests
>> and writing verbose code when all i might use is a function with one
>> parameter or so.
>> @ Marius : Why have 3 dependencies (3 more files, supposing those files
>> don't have additional dependencies...) when i can use just Ajax to send my
>> events and requests
>> so any JS SDK out there ?
>>
>> 2017-04-10 14:23 GMT+02:00 Marius Rabenarivo <[email protected]>
>> :
>>
>>> Hello,
>>>
>>> The NodeJS SDK has the following dependencies :
>>>
>>> lodash
>>> request
>>> bluebird
>>>
>>> You can download them if you want.
>>>
>>> Regards,
>>>
>>> Marius
>>>
>>> 2017-04-10 16:18 GMT+04:00 Mohamed Zouga <[email protected]>:
>>>
>>>> I'am using PredictionIO in a web site, and i want to send the event
>>>> using Javascript (instead of PHP) is there any know SDK JS for PredictionIO
>>>> (lastest) ?
>>>> i found some outdated ones in Github, i didn't want to rush into coding
>>>> one from scratch until i'am sure there is no existing ones, thank you
>>>> P.S : I know there is a NodeJS SDK, i don't have npm and i don't want
>>>> any dependencies.
>>>> --
>>>>
>>>> *Mohamed ZOUGA*Stagiaire Data Scientist, Wizaplace
>>>> [email protected] <[email protected]> | http://www.wizaplace.com
>>>> [image: https://www.linkedin.com/in/zouga-mohamed-44b02974/]
>>>> <https://www.linkedin.com/in/zouga-mohamed-44b02974/>
>>>>
>>>
>>>
>>
>>
>> --
>>
>> *Mohamed ZOUGA*Stagiaire Data Scientist, Wizaplace
>> [email protected] <[email protected]> | http://www.wizaplace.com
>> [image: https://www.linkedin.com/in/zouga-mohamed-44b02974/]
>> <https://www.linkedin.com/in/zouga-mohamed-44b02974/>
>>
>
>

Reply via email to