rest-gen-0.15.0.1: files/Javascript/base.js
var $apinamespace$ =
function (url, secureUrl)
{
var postfix = '/v' + this.version + '/';
var contextUrl = url + postfix;
var secureContextUrl = (secureUrl || url.replace(/^http:/, "https:")) + postfix;
$apinamespace$.setContext(this, contextUrl, secureContextUrl);
};
if (typeof module === "object" && module && typeof module.exports === "object")
{
// Export as Node module.
module.exports = $apinamespace$;
$apinamespace$.ajaxCall = nodeRequest;
}
else
{
if (typeof define === "function" && define.amd)
// Export as AMD.
define("$apinamespace$", [], function () { return $apinamespace$; });
else
// Export as global.
window.$apinamespace$ = $apinamespace$;
$apinamespace$.ajaxCall = jQueryRequest;
}
$apinamespace$.addObject = function (obj1, obj2)
{
for (var fld in obj2)
obj1[fld] = obj2[fld];
};
$apinamespace$.defaultAjaxOptions = {};
$apinamespace$.defaultHeaders = {};
function jQueryRequest (method, url, params, success, error, contentType, dataType, data, callOpts)
{
var q = window.Q || function (a) { return a };
var callData =
{ type: method
, url: url + (params ? '?' + $dollar$.param(params) : '')
, cache: false
, success: success || function () {}
, error: error || function () {}
, contentType: contentType
, dataType: dataType
, xhrFields: { withCredentials: true }
, data: data || []
, headers: $apinamespace$.defaultHeaders
};
$apinamespace$.addObject(callData, $apinamespace$.defaultAjaxOptions);
$apinamespace$.addObject(callData, callOpts);
return q($dollar$.ajax(callData));
}
function nodeRequest (method, url, params, onSuccess, onError, contentType, dataType, data, callOpts)
{
var allParams = {};
$apinamespace$.addObject(allParams, params);
if (method === "GET" || method === "HEAD")
// Avoid cached API responses.
allParams._ = Date.now();
var headers = { "Content-type": contentType };
if (dataType === 'json')
headers.Accept = 'text/json';
else if (dataType === 'xml')
headers.Accept = 'text/xml';
$apinamespace$.addObject(headers, $apinamespace$.defaultHeaders);
var callData =
{ url : url
, qs : allParams
, method : method
, headers : headers
};
if (data) callData.body = data;
$apinamespace$.addObject(callData, $apinamespace$.defaultAjaxOptions);
$apinamespace$.addObject(callData, callOpts);
return require("q").Promise(function (resolve, reject)
{
require("request")(callData, callback);
function callback (error, message, body)
{
if (message && message.statusCode >= 200 && message.statusCode < 300)
{
var parsedResponse = parse(body);
onSuccess && onSuccess(parsedResponse, message);
resolve(parsedResponse)
}
else
{
if (!error)
{
error = new Error("HTTP request error");
error.statusCode = message.statusCode;
error.responseBody = body;
}
if (onError)
onError(error);
reject(error);
}
}
});
function parse (response)
{
if (dataType === 'json')
return JSON.parse(response);
else return response;
}
}
$apinamespace$.setContext =
function (obj, url, secureUrl)
{
obj.contextUrl = url;
obj.secureContextUrl = secureUrl;
for (var fld in obj)
{
if (obj[fld] != undefined && obj[fld].apiObjectType != undefined && obj[fld].apiObjectType == 'resourceDir')
{
var postfix = fld.replace(/([a-z0-9])([A-Z])/g, '$dollar$1-$dollar$2').toLowerCase() + '/';
$apinamespace$.setContext(obj[fld], url + postfix, secureUrl + postfix);
}
}
};