Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Unified Diff: pkg/json_rpc_2/lib/src/parameters.dart

Issue 812253002: Delete a bunch of packages that are now on GitHub. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Un-delete http Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/json_rpc_2/lib/src/exception.dart ('k') | pkg/json_rpc_2/lib/src/peer.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/json_rpc_2/lib/src/parameters.dart
diff --git a/pkg/json_rpc_2/lib/src/parameters.dart b/pkg/json_rpc_2/lib/src/parameters.dart
deleted file mode 100644
index 1e2522013eb8f12e28df2e018757be181d50d92d..0000000000000000000000000000000000000000
--- a/pkg/json_rpc_2/lib/src/parameters.dart
+++ /dev/null
@@ -1,334 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library json_rpc_2.parameters;
-
-import 'dart:convert';
-
-import 'exception.dart';
-
-/// A wrapper for the parameters to a server method.
-///
-/// JSON-RPC 2.0 allows parameters that are either a list or a map. This class
-/// provides functions that not only assert that the parameters object is the
-/// correct type, but also that the expected arguments exist and are themselves
-/// the correct type.
-///
-/// Example usage:
-///
-/// server.registerMethod("subtract", (params) {
-/// return params["minuend"].asNum - params["subtrahend"].asNum;
-/// });
-class Parameters {
- /// The name of the method that this request called.
- final String method;
-
- /// The underlying value of the parameters object.
- ///
- /// If this is accessed for a [Parameter] that was not passed, the request
- /// will be automatically rejected. To avoid this, use [Parameter.valueOr].
- final value;
-
- Parameters(this.method, this.value);
-
- /// Returns a single parameter.
- ///
- /// If [key] is a [String], the request is expected to provide named
- /// parameters. If it's an [int], the request is expected to provide
- /// positional parameters. Requests that don't do so will be rejected
- /// automatically.
- ///
- /// Whether or not the given parameter exists, this returns a [Parameter]
- /// object. If a parameter's value is accessed through a getter like [value]
- /// or [Parameter.asNum], the request will be rejected if that parameter
- /// doesn't exist. On the other hand, if it's accessed through a method with a
- /// default value like [Parameter.valueOr] or [Parameter.asNumOr], the default
- /// value will be returned.
- Parameter operator [](key) {
- if (key is int) {
- _assertPositional();
- if (key < value.length) {
- return new Parameter._(method, value[key], this, key);
- } else {
- return new _MissingParameter(method, this, key);
- }
- } else if (key is String) {
- _assertNamed();
- if (value.containsKey(key)) {
- return new Parameter._(method, value[key], this, key);
- } else {
- return new _MissingParameter(method, this, key);
- }
- } else {
- throw new ArgumentError('Parameters[] only takes an int or a string, was '
- '"$key".');
- }
- }
-
- /// Asserts that [value] exists and is a [List] and returns it.
- List get asList {
- _assertPositional();
- return value;
- }
-
- /// Asserts that [value] exists and is a [Map] and returns it.
- Map get asMap {
- _assertNamed();
- return value;
- }
-
- /// Asserts that [value] is a positional argument list.
- void _assertPositional() {
- if (value is List) return;
- throw new RpcException.invalidParams('Parameters for method "$method" '
- 'must be passed by position.');
- }
-
- /// Asserts that [value] is a named argument map.
- void _assertNamed() {
- if (value is Map) return;
- throw new RpcException.invalidParams('Parameters for method "$method" '
- 'must be passed by name.');
- }
-}
-
-/// A wrapper for a single parameter to a server method.
-///
-/// This provides numerous functions for asserting the type of the parameter in
-/// question. These functions each have a version that asserts that the
-/// parameter exists (for example, [asNum] and [asString]) and a version that
-/// returns a default value if the parameter doesn't exist (for example,
-/// [asNumOr] and [asStringOr]). If an assertion fails, the request is
-/// automatically rejected.
-///
-/// This extends [Parameters] to make it easy to access nested parameters. For
-/// example:
-///
-/// // "params.value" is "{'scores': {'home': [5, 10, 17]}}"
-/// params['scores']['home'][2].asInt // => 17
-class Parameter extends Parameters {
- // The parent parameters, used to construct [_path].
- final Parameters _parent;
-
- /// The key used to access [this], used to construct [_path].
- final _key;
-
- /// A human-readable representation of the path of getters used to get this.
- ///
- /// Named parameters are represented as `.name`, whereas positional parameters
- /// are represented as `[index]`. For example: `"foo[0].bar.baz"`. Named
- /// parameters that contain characters that are neither alphanumeric,
- /// underscores, or hyphens will be JSON-encoded. For example: `"foo
- /// bar"."baz.bang"`. If quotes are used for an individual component, they
- /// won't be used for the entire string.
- ///
- /// An exception is made for single-level parameters. A single-level
- /// positional parameter is just represented by the index plus one, because
- /// "parameter 1" is clearer than "parameter [0]". A single-level named
- /// parameter is represented by that name in quotes.
- String get _path {
- if (_parent is! Parameter) {
- return _key is int ? (_key + 1).toString() : JSON.encode(_key);
- }
-
- quoteKey(key) {
- if (key.contains(new RegExp(r'[^a-zA-Z0-9_-]'))) return JSON.encode(key);
- return key;
- }
-
- computePath(params) {
- if (params._parent is! Parameter) {
- return params._key is int ? "[${params._key}]" : quoteKey(params._key);
- }
-
- var path = computePath(params._parent);
- return params._key is int ?
- "$path[${params._key}]" : "$path.${quoteKey(params._key)}";
- }
-
- return computePath(this);
- }
-
- /// Whether this parameter exists.
- final exists = true;
-
- Parameter._(String method, value, this._parent, this._key)
- : super(method, value);
-
- /// Returns [value], or [defaultValue] if this parameter wasn't passed.
- valueOr(defaultValue) => value;
-
- /// Asserts that [value] exists and is a number and returns it.
- ///
- /// [asNumOr] may be used to provide a default value instead of rejecting the
- /// request if [value] doesn't exist.
- num get asNum => _getTyped('a number', (value) => value is num);
-
- /// Asserts that [value] is a number and returns it.
- ///
- /// If [value] doesn't exist, this returns [defaultValue].
- num asNumOr(num defaultValue) => asNum;
-
- /// Asserts that [value] exists and is an integer and returns it.
- ///
- /// [asIntOr] may be used to provide a default value instead of rejecting the
- /// request if [value] doesn't exist.
- ///
- /// Note that which values count as integers varies between the Dart VM and
- /// dart2js. The value `1.0` will be considered an integer under dart2js but
- /// not under the VM.
- int get asInt => _getTyped('an integer', (value) => value is int);
-
- /// Asserts that [value] is an integer and returns it.
- ///
- /// If [value] doesn't exist, this returns [defaultValue].
- ///
- /// Note that which values count as integers varies between the Dart VM and
- /// dart2js. The value `1.0` will be considered an integer under dart2js but
- /// not under the VM.
- int asIntOr(int defaultValue) => asInt;
-
- /// Asserts that [value] exists and is a boolean and returns it.
- ///
- /// [asBoolOr] may be used to provide a default value instead of rejecting the
- /// request if [value] doesn't exist.
- bool get asBool => _getTyped('a boolean', (value) => value is bool);
-
- /// Asserts that [value] is a boolean and returns it.
- ///
- /// If [value] doesn't exist, this returns [defaultValue].
- bool asBoolOr(bool defaultValue) => asBool;
-
- /// Asserts that [value] exists and is a string and returns it.
- ///
- /// [asStringOr] may be used to provide a default value instead of rejecting
- /// the request if [value] doesn't exist.
- String get asString => _getTyped('a string', (value) => value is String);
-
- /// Asserts that [value] is a string and returns it.
- ///
- /// If [value] doesn't exist, this returns [defaultValue].
- String asStringOr(String defaultValue) => asString;
-
- /// Asserts that [value] exists and is a [List] and returns it.
- ///
- /// [asListOr] may be used to provide a default value instead of rejecting the
- /// request if [value] doesn't exist.
- List get asList => _getTyped('an Array', (value) => value is List);
-
- /// Asserts that [value] is a [List] and returns it.
- ///
- /// If [value] doesn't exist, this returns [defaultValue].
- List asListOr(List defaultValue) => asList;
-
- /// Asserts that [value] exists and is a [Map] and returns it.
- ///
- /// [asMapOr] may be used to provide a default value instead of rejecting the
- /// request if [value] doesn't exist.
- Map get asMap => _getTyped('an Object', (value) => value is Map);
-
- /// Asserts that [value] is a [Map] and returns it.
- ///
- /// If [value] doesn't exist, this returns [defaultValue].
- Map asMapOr(Map defaultValue) => asMap;
-
- /// Asserts that [value] exists, is a string, and can be parsed as a
- /// [DateTime] and returns it.
- ///
- /// [asDateTimeOr] may be used to provide a default value instead of rejecting
- /// the request if [value] doesn't exist.
- DateTime get asDateTime => _getParsed('date/time', DateTime.parse);
-
- /// Asserts that [value] exists, is a string, and can be parsed as a
- /// [DateTime] and returns it.
- ///
- /// If [value] doesn't exist, this returns [defaultValue].
- DateTime asDateTimeOr(DateTime defaultValue) => asDateTime;
-
- /// Asserts that [value] exists, is a string, and can be parsed as a
- /// [Uri] and returns it.
- ///
- /// [asUriOr] may be used to provide a default value instead of rejecting the
- /// request if [value] doesn't exist.
- Uri get asUri => _getParsed('URI', Uri.parse);
-
- /// Asserts that [value] exists, is a string, and can be parsed as a
- /// [Uri] and returns it.
- ///
- /// If [value] doesn't exist, this returns [defaultValue].
- Uri asUriOr(Uri defaultValue) => asUri;
-
- /// Get a parameter named [named] that matches [test], or the value of calling
- /// [orElse].
- ///
- /// [type] is used for the error message. It should begin with an indefinite
- /// article.
- _getTyped(String type, bool test(value)) {
- if (test(value)) return value;
- throw new RpcException.invalidParams('Parameter $_path for method '
- '"$method" must be $type, but was ${JSON.encode(value)}.');
- }
-
- _getParsed(String description, parse(String value)) {
- var string = asString;
- try {
- return parse(string);
- } on FormatException catch (error) {
- // DateTime.parse doesn't actually include any useful information in the
- // FormatException, just the string that was being parsed. There's no use
- // in including that in the RPC exception. See issue 17753.
- var message = error.message;
- if (message == string) {
- message = '';
- } else {
- message = '\n$message';
- }
-
- throw new RpcException.invalidParams('Parameter $_path for method '
- '"$method" must be a valid $description, but was '
- '${JSON.encode(string)}.$message');
- }
- }
-
- void _assertPositional() {
- // Throw the standard exception for a mis-typed list.
- asList;
- }
-
- void _assertNamed() {
- // Throw the standard exception for a mis-typed map.
- asMap;
- }
-}
-
-/// A subclass of [Parameter] representing a missing parameter.
-class _MissingParameter extends Parameter {
- get value {
- throw new RpcException.invalidParams('Request for method "$method" is '
- 'missing required parameter $_path.');
- }
-
- final exists = false;
-
- _MissingParameter(String method, Parameters parent, key)
- : super._(method, null, parent, key);
-
- valueOr(defaultValue) => defaultValue;
-
- num asNumOr(num defaultValue) => defaultValue;
-
- int asIntOr(int defaultValue) => defaultValue;
-
- bool asBoolOr(bool defaultValue) => defaultValue;
-
- String asStringOr(String defaultValue) => defaultValue;
-
- List asListOr(List defaultValue) => defaultValue;
-
- Map asMapOr(Map defaultValue) => defaultValue;
-
- DateTime asDateTimeOr(DateTime defaultValue) => defaultValue;
-
- Uri asUriOr(Uri defaultValue) => defaultValue;
-}
« no previous file with comments | « pkg/json_rpc_2/lib/src/exception.dart ('k') | pkg/json_rpc_2/lib/src/peer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698