| // Copyright (c) 2000-2017 Ericsson Telecom AB // |
| // All rights reserved. This program and the accompanying materials are made available under the // |
| // terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at // |
| // http://www.eclipse.org/legal/epl-v10.html // |
| /////////////////////////////////////////////////////////////////////////////////////////////////////// |
| function CDsRestAPIComm(p_extension) {
|
| "use strict";
|
|
|
| var mRequestsDisabled = false;
|
| var mTimeLastRequestFailed = 0;
|
| var mNoAnswer = [{"node":{"val":"No answer", "tp":3}}];
|
|
|
| // disable cache (mainly for IE, it works all right with firefox and chrome)
|
| $.ajaxSetup({cache: false});
|
|
|
| /* This gives a more sane initial value than being zero. */
|
| var start = Date.now();
|
| var ajaxCallURL = "api.dsapi";
|
| if (p_extension != undefined) {
|
| ajaxCallURL = "api." + p_extension;
|
| }
|
|
|
| /** public functions */
|
| this.ajaxCall = function(aData, aHandler) {
|
| if (mRequestsDisabled) {
|
| aData = {"requests": [], "timeOut": 5.0};
|
| }
|
|
|
| var end = Date.now();
|
| $('#cll_DsRestAPI_FPS').html((1000 / (end - start)).toFixed(2)); // diff to previous ajaxCall's end.
|
| start = Date.now();
|
| $.ajax({
|
| url: ajaxCallURL,
|
| type: 'POST',
|
| data: JSON.stringify(aData),
|
| //contentType: 'application/json',
|
| //accepts: 'application/json',
|
| dataType: 'text',
|
| cache: false,
|
| success: function(data, textStatus, jqXHR) {
|
| var end = Date.now();
|
| if (mRequestsDisabled) {
|
| mRequestsDisabled = false;
|
| // if we were disconnected for more than 15 secs, reload the page
|
| if (end - mTimeLastRequestFailed > 15000) {
|
| location.reload();
|
| } else {
|
| aHandler(mNoAnswer);
|
| }
|
| } else {
|
| $('#cll_DsRestAPI_serverTime').html(parseFloat(jqXHR.getResponseHeader("X-EPTF-CLL-ServerTime")).toFixed(2));
|
| $('#cll_DsRestAPI_roundtrip').html(end - start);
|
| $('#cll_DsRestAPI_dataSize').html(data.length);
|
| $('#cll_DsRestAPI_error').html("");
|
| $('#cll_DsRestAPI_error').addClass("hidden");
|
| if (data && data !== "" && data !== " ")
|
| aHandler(JSON.parse(data).contentList);
|
| else
|
| aHandler(mNoAnswer);
|
| }
|
| },
|
| error: function(jqXHR, textStatus, errorThrown) {
|
| if (!mRequestsDisabled) {
|
| mRequestsDisabled = true;
|
| mTimeLastRequestFailed = Date.now();
|
| }
|
|
|
| $('#cll_DsRestAPI_roundtrip').html(end - start);
|
| $('#cll_DsRestAPI_error').html("State: UI has been disconnected<br/>Error: " + textStatus + "<br/>Action: reconnecting");
|
| $('#cll_DsRestAPI_error').removeClass("hidden");
|
| var end = Date.now();
|
| aHandler(mNoAnswer);
|
| },
|
| timeout: 10000
|
| });
|
| };
|
| }
|