b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / a / home / dev2.destoffenstraat.com / lib / web / mage /
Filename/home/a/home/dev2.destoffenstraat.com/lib/web/mage/webapi.js
Size6.59 kb
Permissionrw-r--r--
Ownerroot : root
Create time21-Aug-2025 12:26
Last modified28-Jan-2025 06:45
Last accessed22-Aug-2025 11:56
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

/**
* @deprecated since version 2.2.0
*/
define([
'jquery',
'mage/mage'
], function ($) {
'use strict';

/**
* Webapi object constructor
*
* @param {String} baseUrl - Base URL
* @param {Object|undefined} ajaxArgs - Arguments for AJAX API call
* @see http://api.jquery.com/jQuery.ajax/
* @returns {{method: Object, call: Function}}
*/
$.mage.Webapi = function (baseUrl, ajaxArgs) {
var validMethods;

/**
* Resource-related parameters. Further extended by other domain objects like Product, etc.
*
* @const
* @type {Object}
*/
this.resource = {
uri: {
base: '', // Initialized below
api: '/webapi/rest'
}
};

/**
* @const
* @type {Object}
*/
this.method = {
'create': 'POST',
'update': 'PUT',
'get': 'GET',
'delete': 'DELETE'
};

validMethods = [this.method.create, this.method.update, this.method.get, this.method['delete']];

// Check whether passed options comply with what we allow
if (ajaxArgs && typeof ajaxArgs !== 'object') {
throw 'ajaxArgs expected to be object';
}

if (!(baseUrl && typeof baseUrl === 'string')) {
throw 'String baseUrl parameter required';
}

// Ensure that baseUrl doesn't have ending forward slash
this.resource.uri.base = baseUrl[baseUrl.length - 1] === '/' ? baseUrl.substr(0, baseUrl.length - 1) : baseUrl;

/**
* Makes an API request
*
* @param {String} resourceUri - Resource URI request to be sent to, e.g. '/v1/products/'
* @param {String} method - Request method, e.g. GET, POST, etc.
* @param {*} data - Payload to be sent to the server
* @param {String|undefined} version - Optional: API version, e.g. 'v1' (if not specifieds using URI)
* @returns {jqXHR}
*/
this.call = function (resourceUri, method, data, version) {
var that = this,
ajaxOptions;

/**
* Helper function to validate request method
*
* @param {String} methodName
* @returns {String}
*/
function validateMethod(methodName) {
if (validMethods.indexOf(methodName) === -1) {
throw 'Method name is not valid: ' + methodName;
}

return methodName;
}

/**
* Helper function to construct URIs
*
* @param {String} resUri - Resource URI request to be sent to, e.g. '/v1/products/'
* @param {String} m - Request method, e.g. GET, POST, etc.
* @param {*} payload - Payload to be sent to the server
* @param {String|undefined} v - Optional: API version, e.g. 'v1'
* @returns {String}
*/
function getUrl(resUri, m, payload, v) {
/**
* @param {String} str
* @return {String}
*/
function ensureForwardSlash(str) {
return str[0] === '/' ? str : '/' + str;
}

if (v) {
resUri = v + ensureForwardSlash(resUri);
}

if (payload && [that.method.get, that.method['delete']].indexOf(m) !== -1) {
// Append data for GET and DELETE request methods as it's simple ID (usually int)
resUri += payload;
}

return that.resource.uri.base + that.resource.uri.api + ensureForwardSlash(resUri);
}

ajaxOptions = {
url: getUrl(resourceUri, method, data, version),
type: validateMethod(method),
data: data,
dataType: 'text',
timeout: 5000,
processData: false, // Otherwise jQuery will try to append 'data' to query URL
cache: false, // Disable browser cache for GET requests

/**
* @param {Object} request
*/
beforeSend: function (request) {
request.setRequestHeader('Accept', 'application/json');
}
};

$.extend(ajaxOptions, ajaxArgs);

return $.ajax(ajaxOptions);
};

return this;
};

$.mage.Webapi.prototype.constructor = $.mage.Webapi;

/**
* Syntax sugar over call(). Example usage: $.mage.webapi.Product('v1').get({...})
*
* @param {String} version - API version (e.g. 'v1')
* @returns {{get: Function, create: Function}}
*/
$.mage.Webapi.prototype.Product = function (version) {
var that = this; // Points to $.mage.webapi

if (!(typeof version === 'string' && /v\d+/i.test(version))) {
throw 'Incorrect version format: ' + version;
}

version = version.toLowerCase();
that.resource.uri.products = '/products/';

return {
/**
* Retrieves information about specific product
*
* @param {Object} idObj - Object which helps to identify the product, e.g. {id: 1}
* @returns {jqXHR}
*/
get: function (idObj) {
if (!idObj.hasOwnProperty('id')) {
throw '"id" property expected in the object';
}

return that.call(that.resource.uri.products, that.method.get, idObj.id, version);
},

/**
* Create a new product
*
* @param {Object} productData - Example product data:
* productData = {
* "type_id": "simple",
* "attribute_set_id": 4,
* "sku": "1234567890",
* "weight": 1,
* "status": 1,
* "visibility": 4,
* "name": "Simple Product",
* "description": "Simple Description",
* "short_description": "Simple Short Description",
* "price": 99.95,
* "tax_class_id": 0
* };
* @returns {jqXHR}
*/
create: function (productData) {
return that.call(that.resource.uri.products, that.method.create, productData, version);
}
};
};
});