mirror of
https://github.com/google/nomulus.git
synced 2025-05-02 13:07:50 +02:00
The original thought was that the actions you can do on a resource is: - create it - read it - update it (I guess you should have "delete" as well, but that isn't currently there) Although we use "read" and "update", we never use "create". So having it goes against the YAGNI principle :) Also, it had a bug: when sending a "create", the opt_newId in send_() would permanentily change the uri of the request, causing any subsequent request to go to the wrong endpoint. By removing the "create" we can simplify the rest of the code (the send_() function). ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=213029499
77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
goog.provide('registry.Resource');
|
|
|
|
goog.require('goog.json');
|
|
goog.require('registry.Session');
|
|
|
|
goog.forwardDeclare('goog.Uri');
|
|
|
|
|
|
|
|
/**
|
|
* Provide a CRUD view of a server resource.
|
|
*
|
|
* @param {!goog.Uri} baseUri Target RESTful resource.
|
|
* @param {string} xsrfToken Security token to pass back to the server.
|
|
* @extends {registry.Session}
|
|
* @constructor
|
|
*/
|
|
registry.Resource = function(baseUri, xsrfToken) {
|
|
registry.Resource.base(this, 'constructor', baseUri, xsrfToken,
|
|
registry.Session.ContentType.JSON);
|
|
};
|
|
goog.inherits(registry.Resource, registry.Session);
|
|
|
|
|
|
/**
|
|
* Get the resource from the server.
|
|
*
|
|
* @param {!Object} args Params for server.
|
|
* @param {!Function} callback for retrieved resource.
|
|
*/
|
|
registry.Resource.prototype.read = function(args, callback) {
|
|
this.send_('read', args, callback);
|
|
};
|
|
|
|
|
|
/**
|
|
* Update the resource on the server.
|
|
*
|
|
* @param {!Object} args params for server.
|
|
* @param {!Function} callback on success.
|
|
* @throws {!Exception} if the 'op' field is set on args.
|
|
*/
|
|
registry.Resource.prototype.update = function(args, callback) {
|
|
this.send_('update', args, callback);
|
|
};
|
|
|
|
|
|
/**
|
|
* RESTful access to resources on the server.
|
|
*
|
|
* @param {string} opCode One of (create|read|update)
|
|
* @param {!Object} argsObj arguments for the operation.
|
|
* @param {!Function} callback For XhrIo result throws.
|
|
* @private
|
|
*/
|
|
registry.Resource.prototype.send_ =
|
|
function(opCode, argsObj, callback) {
|
|
// NB: must be declared this way in order to avoid compiler renaming
|
|
var req = {};
|
|
req['op'] = opCode;
|
|
req['args'] = argsObj;
|
|
this.sendXhrIo(goog.json.serialize(req), callback);
|
|
};
|