All files / rest rest.js

13.33% Statements 4/30
0% Branches 0/16
0% Functions 0/4
13.33% Lines 4/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85                1x             1x                 1x                                                                 1x                                                      
import {$,jQuery} from 'jquery';
import logger from "../logger/logger";
 
/**
 * logger module.
 * @module logger
 */
 
const rest = {};
 
/**
 * Default REST URL used to call Neo4j server with cypher queries to execute.
 * This property should be updated to access to your own server.
 * @type {string}
 */
rest.CYPHER_URL = "http://localhost:7474/db/data/transaction/commit";
 
/**
 * Create JQuery ajax POST request to access Neo4j REST API.
 *
 * @param data data object containing Cypher query.
 * @param url url where to post the data, default to popoto.rest.CYPHER_URL property.
 * @returns {*} the JQuery ajax request object.
 */
rest.post = function (data, url) {
    var strData = JSON.stringify(data);
    logger.info("REST POST:" + strData);
 
    var settings = {
        type: "POST",
        beforeSend: function (request) {
            if (rest.AUTHORIZATION) {
                request.setRequestHeader("Authorization", rest.AUTHORIZATION);
            }
        },
        contentType: "application/json"
    };
 
    if (data !== undefined) {
        settings.data = strData;
    }
 
    if (rest.WITH_CREDENTIALS === true) {
        settings.xhrFields = {
            withCredentials: true
        }
    }
 
    var postURL = rest.CYPHER_URL;
 
    if (url !== undefined) {
        postURL = url;
    }
 
    return $.ajax(postURL, settings);
};
 
rest.response = {
    parse: function (data) {
        logger.debug(JSON.stringify((data)));
        var parsedData = [];
 
        if (data !== undefined && data.hasOwnProperty("results") && data.results.length > 0 && !(data.hasOwnProperty("errors") && data.errors.length > 0)) {
            parsedData = data.results.map(function (queryResults) {
                var results = [];
                for (var x = 0; x < queryResults.data.length; x++) {
                    var obj = {};
 
                    for (var i = 0; i < queryResults.columns.length; i++) {
                        obj[queryResults.columns[i]] = queryResults.data[x].row[i];
                    }
 
                    results.push(obj);
                }
                return results;
            });
        }
 
        logger.info(JSON.stringify((parsedData)));
        return parsedData
    }
};
 
export default rest;