control-freak-ide/Code/client/build/dgrid/dstore/Rest.js.consoleStripped.js
plastic-hub-dev-node-saturn 538369cff7 latest
2021-05-12 18:35:18 +02:00

149 lines
4.8 KiB
JavaScript

define("dstore/Rest", [
'dojo/request',
'dojo/when',
'dojo/_base/lang',
'dojo/json',
'dojo/io-query',
'dojo/_base/declare',
'./Request' /*=====, './Store' =====*/
], function (request, when, lang, JSON, ioQuery, declare, Request /*=====, Store =====*/) {
/*=====
var __HeaderOptions = {
// headers: Object?
// Additional headers to send along with the request.
},
__PutDirectives = declare(Store.PutDirectives, __HeaderOptions),
=====*/
return declare(Request, {
// stringify: Function
// This function performs the serialization of the data for requests to the server. This
// defaults to JSON, but other formats can be serialized by providing an alternate
// stringify function. If you do want to use an alternate format, you will probably
// want to use an alternate parse function for the parsing of data as well.
stringify: JSON.stringify,
_getTarget: function(id){
// summary:
// If the target has no trailing '/', then append it.
// id:
// The identity of the requested target
var target = this.target;
if(target.slice(-1) == '/'){
return target + id;
}else{
return target + '/' + id;
}
},
get: function (id, options) {
// summary:
// Retrieves an object by its identity. This will trigger a GET request to the server using
// the url `this.target + id`.
// id: Number
// The identity to use to lookup the object
// options: Object?
// HTTP headers. For consistency with other methods, if a `headers` key exists on this
// object, it will be used to provide HTTP headers instead.
// returns: Object
// The object in the store that matches the given id.
options = options || {};
var headers = lang.mixin({ Accept: this.accepts }, this.headers, options.headers || options);
var store = this;
return request(this._getTarget(id), {
headers: headers
}).then(function (response) {
return store._restore(store.parse(response), true);
});
},
autoEmitEvents: false, // this is handled by the methods themselves
put: function (object, options) {
// summary:
// Stores an object. This will trigger a PUT request to the server
// if the object has an id, otherwise it will trigger a POST request.
// object: Object
// The object to store.
// options: __PutDirectives?
// Additional metadata for storing the data. Includes an 'id'
// property if a specific id is to be used.
// returns: dojo/_base/Deferred
options = options || {};
var id = ('id' in options) ? options.id : this.getIdentity(object);
var hasId = typeof id !== 'undefined';
var store = this;
var positionHeaders = 'beforeId' in options
? (options.beforeId === null
? { 'Put-Default-Position': 'end' }
: { 'Put-Before': options.beforeId })
: (!hasId || options.overwrite === false
? { 'Put-Default-Position': (this.defaultNewToStart ? 'start' : 'end') }
: null);
var initialResponse = request(hasId ? this._getTarget(id) : this.target, {
method: hasId && !options.incremental ? 'PUT' : 'POST',
data: this.stringify(object),
headers: lang.mixin({
'Content-Type': 'application/json',
Accept: this.accepts,
'If-Match': options.overwrite === true ? '*' : null,
'If-None-Match': options.overwrite === false ? '*' : null
}, positionHeaders, this.headers, options.headers)
});
return initialResponse.then(function (response) {
var event = {};
if ('beforeId' in options) {
event.beforeId = options.beforeId;
}
var result = event.target = response && store._restore(store.parse(response), true) || object;
when(initialResponse.response, function (httpResponse) {
store.emit(httpResponse.status === 201 ? 'add' : 'update', event);
});
return result;
});
},
add: function (object, options) {
// summary:
// Adds an object. This will trigger a PUT request to the server
// if the object has an id, otherwise it will trigger a POST request.
// object: Object
// The object to store.
// options: __PutDirectives?
// Additional metadata for storing the data. Includes an 'id'
// property if a specific id is to be used.
options = options || {};
options.overwrite = false;
return this.put(object, options);
},
remove: function (id, options) {
// summary:
// Deletes an object by its identity. This will trigger a DELETE request to the server.
// id: Number
// The identity to use to delete the object
// options: __HeaderOptions?
// HTTP headers.
options = options || {};
var store = this;
return request(this._getTarget(id), {
method: 'DELETE',
headers: lang.mixin({}, this.headers, options.headers)
}).then(function (response) {
var target = response && store.parse(response);
store.emit('delete', {id: id, target: target});
return response ? target : true;
});
}
});
});