Index: tools/telemetry/third_party/gsutil/third_party/protorpc/experimental/javascript/protorpc.js |
diff --git a/tools/telemetry/third_party/gsutil/third_party/protorpc/experimental/javascript/protorpc.js b/tools/telemetry/third_party/gsutil/third_party/protorpc/experimental/javascript/protorpc.js |
deleted file mode 100644 |
index 476e530857fd62353db4824c617ca343da845045..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/third_party/gsutil/third_party/protorpc/experimental/javascript/protorpc.js |
+++ /dev/null |
@@ -1,371 +0,0 @@ |
-// Copyright 2011 Google Inc. |
-// |
-// 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. |
- |
-/** |
- * @fileoverview Javascript client implementation for ProtoRpc services. |
- * @author joetyson@gmail.com (Joe Tyson) |
- */ |
- |
-goog.provide('ProtoRpc.RPC'); |
-goog.provide('ProtoRpc.RPC.State'); |
-goog.provide('ProtoRpc.ServiceStub'); |
- |
-goog.require('ProtoRpc.EnumDescriptor'); |
-goog.require('ProtoRpc.Message'); |
- |
-goog.require('goog.json'); |
-goog.require('goog.net.XmlHttp'); |
- |
- |
-/** |
- * Represents a client side RPC. |
- * |
- * @export |
- * @param {string} service_path Relative URI where service lives. |
- * @param {string} method_name Name of method being invoked. |
- * @param {Object} request The request. |
- * @param {Function} success Function to call when RPC completes. |
- * @param {Function=} error Function to call when RPC has an error. |
- * @constructor |
- */ |
-ProtoRpc.RPC = function(service_path, method_name, request, success, error) { |
- this.successCallback_ = success; |
- this.errorCallback_ = error || null; |
- |
- this.request_ = request; |
- |
- var xhr = new goog.net.XmlHttp(); |
- |
- /** |
- * Try to open an XMLHttpRequest. If an error occurs, it's generally |
- * due to a permission issue. |
- * @preserveTry |
- */ |
- try { |
- xhr.open('POST', service_path + '.' + method_name, true); |
- } catch (err) { |
- this.setState_(ProtoRpc.RPC.State.REQUEST_ERROR); |
- } |
- |
- xhr.setRequestHeader('Content-Type', ProtoRpc.RPC.CONTENT_TYPE); |
- |
- /** |
- * Send request or catch error. |
- * @preserveTry |
- */ |
- try { |
- xhr.onreadystatechange = goog.bind(this.onReadyStateChange_, this); |
- // TODO: What if serialization fails? |
- xhr.send(goog.json.serialize(request)); |
- } catch (err) { |
- this.setState_(ProtoRpc.RPC.State.REQUEST_ERROR); |
- } |
- |
- this.xhr_ = xhr; |
-}; |
- |
- |
-/** |
- * Rpc States. |
- * @enum {string} |
- */ |
-ProtoRpc.RPC.State = { |
- OK: 'OK', |
- RUNNING: 'RUNNING', |
- REQUEST_ERROR: 'REQUEST_ERROR', |
- SERVER_ERROR: 'SERVER_ERROR', |
- NETWORK_ERROR: 'NETWORK_ERROR', |
- APPLICATION_ERROR: 'APPLICATION_ERROR' |
-}; |
- |
- |
-/** |
- * Content-Type to use when making remote calls. |
- * @const |
- */ |
-ProtoRpc.RPC.CONTENT_TYPE = 'application/json;charset=utf-8'; |
- |
- |
-/** |
- * Reference to an XMLHttpRequest object being used for RPC. |
- * @type {XMLHttpRequest} |
- * @private |
- */ |
-ProtoRpc.RPC.prototype.xhr_ = null; |
- |
- |
-/** |
- * Functon to call when RPC completes successfully. |
- * @type {Function} |
- * @private |
- */ |
-ProtoRpc.RPC.prototype.successCallback_ = null; |
- |
- |
-/** |
- * Function to call when an error happens. |
- * @type {Function} |
- * @private |
- */ |
-ProtoRpc.RPC.prototype.errorCallback_ = null; |
- |
- |
-/** |
- * The Rpc's request message. |
- * @type {Object} |
- * @private |
- */ |
-ProtoRpc.RPC.prototype.request_ = null; |
- |
- |
-/** |
- * The Rpc's response from the server. |
- * @type {Object} |
- * @private |
- */ |
-ProtoRpc.RPC.prototype.response_ = null; |
- |
- |
-/** |
- * The current state of the Rpc. |
- * @type {ProtoRpc.RPC.State} |
- * @private |
- */ |
-ProtoRpc.RPC.prototype.state_ = ProtoRpc.RPC.State.RUNNING; |
- |
- |
-/** |
- * The Rpc's Error Message, if error. |
- * @type {string} |
- * @private |
- */ |
-ProtoRpc.RPC.prototype.errorMessage_ = ''; |
- |
- |
-/** |
- * The Rpc's Error Name, if error. |
- * @type {string} |
- * @private |
- */ |
-ProtoRpc.RPC.prototype.errorName_ = ''; |
- |
- |
-/** |
- * Method invoked when RPC's xhr readyState is changed. |
- * @private |
- */ |
-ProtoRpc.RPC.prototype.onReadyStateChange_ = function() { |
- if (this.state_ != ProtoRpc.RPC.State.RUNNING) { |
- return; |
- } |
- |
- if (this.xhr_.readyState != goog.net.XmlHttp.ReadyState.COMPLETE) { |
- return; |
- } |
- |
- var status = this.xhr_.status; |
- var statusText = this.xhr_.statusText; |
- var content = this.xhr_.responseText; |
- |
- if (status >= 400) { |
- /** |
- * Try to parse RpcStatus from message. |
- * @preserveTry |
- */ |
- try { |
- var rpcStatus = goog.json.parse(content); |
- this.errorName_ = rpcStatus['error_name'] || null; |
- this.errorMessage_ = rpcStatus['error_message'] || null; |
- // TODO(joe): More robust RpcStatus handling... |
- this.setState_(rpcStatus['state']); |
- } catch (err) { |
- this.errorName_ = 'Unknown Error.'; |
- this.setState_(ProtoRpc.RPC.State.REQUEST_ERROR); |
- } |
- return; |
- } |
- |
- // TODO: validation |
- // TODO: What if parsing fails? |
- this.response_ = goog.json.parse(content); |
- this.setState_(ProtoRpc.RPC.State.OK); |
-}; |
- |
- |
-/** |
- * Set the Rpc's state. |
- * @param {ProtoRpc.RPC.State} state The Rpc State to set. |
- * @private |
- */ |
-ProtoRpc.RPC.prototype.setState_ = function(state) { |
- // TODO: Bitmask "allowed" transitions? |
- this.state_ = state; |
- if (state != ProtoRpc.RPC.State.OK) { |
- this.callErrorHandler_(); |
- return; |
- } |
- this.callSuccessHandler_(); |
-}; |
- |
- |
-/** @private */ |
-ProtoRpc.RPC.prototype.callErrorHandler_ = function() { |
- // TODO: optional context/this? |
- this.errorCallback_(this); |
-}; |
- |
- |
-/** @private */ |
-ProtoRpc.RPC.prototype.callSuccessHandler_ = function() { |
- // TODO: optional context/this? |
- this.successCallback_(this); |
-}; |
- |
- |
-/** |
- * Get the response from a completed RPC. |
- * Throws {@code ProtoRpc.RpcError} if an error occured while |
- * running the RPC. |
- * @return {Object} The response message from RPC. |
- * @export |
- */ |
-ProtoRpc.RPC.prototype.getResponse = function() { |
- if (this.state_ != ProtoRpc.RPC.State.OK) { |
- throw this.getError(); |
- } |
- return this.response_; |
-}; |
- |
- |
-/** |
- * Get the error from a failed RPC. This may be any of the appropriate |
- * error types which can be associated with an RPC. |
- * @export |
- * @return {Error} The Error associated with RPC. |
- */ |
-ProtoRpc.RPC.prototype.getError = function() { |
- // TODO: if not in error, do something. |
- var error = new Error(this.errorName_); |
- error.message = this.errorMessage_; |
- error.type = this.state_; |
- return error; |
-}; |
- |
- |
-/** |
- * Represents a Service Stub for a given service name, path, and set |
- * of methods. |
- * @param {string} path The path where the service accepts method calls. |
- * @param {Array.<ProtoRpc.MethodDescriptor>} methods An array of method |
- * descriptors. |
- * @constructor |
- */ |
-ProtoRpc.ServiceStub = function(path, methods) { |
- this.path_ = path; |
- var l = methods.length; |
- for (var i = 0; i < l; i++) { |
- this.addMethod_(methods[i]); |
- } |
-}; |
- |
- |
-/** |
- * Add a method to the service. |
- * @param {ProtoRpc.MethodDescriptor} method_descriptor The method descriptor. |
- * @private |
- */ |
-ProtoRpc.ServiceStub.prototype.addMethod_ = function(method_descriptor) { |
- var method_name = method_descriptor.name; |
- this[method_name] = this.makeMethod_(method_name, this.path_); |
-}; |
- |
-/** |
- * Helper to make methods. |
- * @param {string} name Method name. |
- * @param {string} path Service path. |
- * @return {function({request: Object, |
- * success: function(ProtoRpc.RPC), |
- * error: function(ProtoRpc.RPC)})} |
- * @private |
- */ |
-ProtoRpc.ServiceStub.prototype.makeMethod_ = function(name, path) { |
- return function(kwargs) { |
- var request = kwargs['request'] || {}; |
- var success = kwargs['success']; |
- var error = kwargs['error'] || null; |
- |
- if (!goog.isFunction(success)) { |
- throw Error('Success callback needs to be a function!'); |
- } |
- |
- if (error && !goog.isFunction(error)) { |
- throw Error('Error callback needs to be a function!'); |
- } |
- |
- return new ProtoRpc.RPC(path, name, request, success, error); |
- }; |
-}; |
- |
-/** |
- * Protojson Specific Serializer. |
- * @constructor |
- */ |
-ProtoRpc.Serializer = function() { |
- // TODO: Have option for using key's as field number vs. field name. |
-}; |
- |
-ProtoRpc.Serializer.prototype.serialize = function(message) { |
- var descriptor = message.getDescriptor(); |
- var fields = descriptor['fields']; |
- |
- var obj = {}; |
- |
- for (var i = 0; i < fields.length; i++) { |
- var field = fields[i]; |
- |
- if (message.has(field)) { |
- if (field['label'] == 'REPEATED') { |
- var arr = []; |
- obj[field.toString()] = arr; |
- |
- var repeatedValues = message.get(field); |
- for (var j = 0; j < repeatedValues.length; j++) { |
- arr.push(this.serialize_(field, repeatedValues[j])); |
- } |
- } else { |
- obj[field.toString()] = message.get(field); |
- } |
- } else { |
- // Default values |
- } |
- } |
-}; |
- |
- |
-/** |
- * @param {ProtoRpc.FieldDescriptor} field Field Descriptor of value. |
- * @param {*} value Field's unserialized value. |
- */ |
-ProtoRpc.Serializer.prototype.serialize_ = function(field, value) { |
- switch (field['variant']) { |
- case ProtoRpc.Variant.MESSAGE: |
- return this.serializeMessage_(value); |
- break; |
- case ProtoRpc.Variant.ENUM: |
- return this.serializeEnum_(value); |
- break; |
- default: |
- return value; |
- } |
-}; |