mirror of https://github.com/grpc/grpc-dart.git
Remove generated `StatusCode` (#703)
* Remove generated `StatusCode` * Rev version for breaking change * Upgrade min sdk version * Fix issues
This commit is contained in:
parent
bdbe5f5003
commit
078fd23bca
|
@ -16,7 +16,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
sdk: [3.0.0, dev]
|
||||
sdk: [3.2.0, dev]
|
||||
steps:
|
||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
- uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3
|
||||
|
@ -60,7 +60,7 @@ jobs:
|
|||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
sdk: [3.0.0, dev]
|
||||
sdk: [3.2.0, dev]
|
||||
platform: [vm, chrome]
|
||||
exclude:
|
||||
# We only run Chrome tests on Linux. No need to run them
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
## 3.2.5
|
||||
## 4.0.0
|
||||
|
||||
* Set compressed flag correctly for grpc-encoding = identity. Fixes [#669](https://github.com/grpc/grpc-dart/issues/669) (https://github.com/grpc/grpc-dart/pull/693)
|
||||
* Remove generated status codes.
|
||||
|
||||
## 3.2.4
|
||||
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
|
||||
// ignore: dangling_library_doc_comments
|
||||
/// Status detail types and error codes
|
||||
export 'package:grpc/src/generated/google/rpc/code.pbenum.dart';
|
||||
export 'package:grpc/src/generated/google/rpc/error_details.pb.dart';
|
||||
|
||||
export 'src/auth/auth.dart' show BaseAuthenticator;
|
||||
|
|
|
@ -69,7 +69,7 @@ class _CredentialsRefreshingAuthenticator extends HttpBasedAuthenticator {
|
|||
await super.authenticate(metadata, uri);
|
||||
if (_quotaProject != null) {
|
||||
// https://cloud.google.com/apis/docs/system-parameters#definitions
|
||||
metadata['X-Goog-User-Project'] = _quotaProject!;
|
||||
metadata['X-Goog-User-Project'] = _quotaProject;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ class ChannelCredentials {
|
|||
if (!isSecure) return null;
|
||||
if (_certificateBytes != null) {
|
||||
return createSecurityContext(false)
|
||||
..setTrustedCertificatesBytes(_certificateBytes!,
|
||||
..setTrustedCertificatesBytes(_certificateBytes,
|
||||
password: _certificatePassword);
|
||||
}
|
||||
final context = SecurityContext(withTrustedRoots: true);
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
//
|
||||
// Generated code. Do not modify.
|
||||
// source: google/rpc/code.proto
|
||||
//
|
||||
// @dart = 2.12
|
||||
|
||||
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||
// ignore_for_file: constant_identifier_names, library_prefixes
|
||||
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
|
||||
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import
|
||||
|
||||
import 'dart:core' as $core;
|
||||
|
||||
export 'code.pbenum.dart';
|
|
@ -1,79 +0,0 @@
|
|||
//
|
||||
// Generated code. Do not modify.
|
||||
// source: google/rpc/code.proto
|
||||
//
|
||||
// @dart = 2.12
|
||||
|
||||
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||
// ignore_for_file: constant_identifier_names, library_prefixes
|
||||
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
|
||||
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import
|
||||
|
||||
import 'dart:core' as $core;
|
||||
|
||||
import 'package:protobuf/protobuf.dart' as $pb;
|
||||
|
||||
/// The canonical error codes for gRPC APIs.
|
||||
///
|
||||
///
|
||||
/// Sometimes multiple error codes may apply. Services should return
|
||||
/// the most specific error code that applies. For example, prefer
|
||||
/// `OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply.
|
||||
/// Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`.
|
||||
class Code extends $pb.ProtobufEnum {
|
||||
static const Code OK = Code._(0, _omitEnumNames ? '' : 'OK');
|
||||
static const Code CANCELLED = Code._(1, _omitEnumNames ? '' : 'CANCELLED');
|
||||
static const Code UNKNOWN = Code._(2, _omitEnumNames ? '' : 'UNKNOWN');
|
||||
static const Code INVALID_ARGUMENT =
|
||||
Code._(3, _omitEnumNames ? '' : 'INVALID_ARGUMENT');
|
||||
static const Code DEADLINE_EXCEEDED =
|
||||
Code._(4, _omitEnumNames ? '' : 'DEADLINE_EXCEEDED');
|
||||
static const Code NOT_FOUND = Code._(5, _omitEnumNames ? '' : 'NOT_FOUND');
|
||||
static const Code ALREADY_EXISTS =
|
||||
Code._(6, _omitEnumNames ? '' : 'ALREADY_EXISTS');
|
||||
static const Code PERMISSION_DENIED =
|
||||
Code._(7, _omitEnumNames ? '' : 'PERMISSION_DENIED');
|
||||
static const Code UNAUTHENTICATED =
|
||||
Code._(16, _omitEnumNames ? '' : 'UNAUTHENTICATED');
|
||||
static const Code RESOURCE_EXHAUSTED =
|
||||
Code._(8, _omitEnumNames ? '' : 'RESOURCE_EXHAUSTED');
|
||||
static const Code FAILED_PRECONDITION =
|
||||
Code._(9, _omitEnumNames ? '' : 'FAILED_PRECONDITION');
|
||||
static const Code ABORTED = Code._(10, _omitEnumNames ? '' : 'ABORTED');
|
||||
static const Code OUT_OF_RANGE =
|
||||
Code._(11, _omitEnumNames ? '' : 'OUT_OF_RANGE');
|
||||
static const Code UNIMPLEMENTED =
|
||||
Code._(12, _omitEnumNames ? '' : 'UNIMPLEMENTED');
|
||||
static const Code INTERNAL = Code._(13, _omitEnumNames ? '' : 'INTERNAL');
|
||||
static const Code UNAVAILABLE =
|
||||
Code._(14, _omitEnumNames ? '' : 'UNAVAILABLE');
|
||||
static const Code DATA_LOSS = Code._(15, _omitEnumNames ? '' : 'DATA_LOSS');
|
||||
|
||||
static const $core.List<Code> values = <Code>[
|
||||
OK,
|
||||
CANCELLED,
|
||||
UNKNOWN,
|
||||
INVALID_ARGUMENT,
|
||||
DEADLINE_EXCEEDED,
|
||||
NOT_FOUND,
|
||||
ALREADY_EXISTS,
|
||||
PERMISSION_DENIED,
|
||||
UNAUTHENTICATED,
|
||||
RESOURCE_EXHAUSTED,
|
||||
FAILED_PRECONDITION,
|
||||
ABORTED,
|
||||
OUT_OF_RANGE,
|
||||
UNIMPLEMENTED,
|
||||
INTERNAL,
|
||||
UNAVAILABLE,
|
||||
DATA_LOSS,
|
||||
];
|
||||
|
||||
static final $core.Map<$core.int, Code> _byValue =
|
||||
$pb.ProtobufEnum.initByValue(values);
|
||||
static Code? valueOf($core.int value) => _byValue[value];
|
||||
|
||||
const Code._($core.int v, $core.String n) : super(v, n);
|
||||
}
|
||||
|
||||
const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names');
|
|
@ -1,47 +0,0 @@
|
|||
//
|
||||
// Generated code. Do not modify.
|
||||
// source: google/rpc/code.proto
|
||||
//
|
||||
// @dart = 2.12
|
||||
|
||||
// ignore_for_file: annotate_overrides, camel_case_types, comment_references
|
||||
// ignore_for_file: constant_identifier_names, library_prefixes
|
||||
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
|
||||
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import
|
||||
|
||||
import 'dart:convert' as $convert;
|
||||
import 'dart:core' as $core;
|
||||
import 'dart:typed_data' as $typed_data;
|
||||
|
||||
@$core.Deprecated('Use codeDescriptor instead')
|
||||
const Code$json = {
|
||||
'1': 'Code',
|
||||
'2': [
|
||||
{'1': 'OK', '2': 0},
|
||||
{'1': 'CANCELLED', '2': 1},
|
||||
{'1': 'UNKNOWN', '2': 2},
|
||||
{'1': 'INVALID_ARGUMENT', '2': 3},
|
||||
{'1': 'DEADLINE_EXCEEDED', '2': 4},
|
||||
{'1': 'NOT_FOUND', '2': 5},
|
||||
{'1': 'ALREADY_EXISTS', '2': 6},
|
||||
{'1': 'PERMISSION_DENIED', '2': 7},
|
||||
{'1': 'UNAUTHENTICATED', '2': 16},
|
||||
{'1': 'RESOURCE_EXHAUSTED', '2': 8},
|
||||
{'1': 'FAILED_PRECONDITION', '2': 9},
|
||||
{'1': 'ABORTED', '2': 10},
|
||||
{'1': 'OUT_OF_RANGE', '2': 11},
|
||||
{'1': 'UNIMPLEMENTED', '2': 12},
|
||||
{'1': 'INTERNAL', '2': 13},
|
||||
{'1': 'UNAVAILABLE', '2': 14},
|
||||
{'1': 'DATA_LOSS', '2': 15},
|
||||
],
|
||||
};
|
||||
|
||||
/// Descriptor for `Code`. Decode as a `google.protobuf.EnumDescriptorProto`.
|
||||
final $typed_data.Uint8List codeDescriptor = $convert.base64Decode(
|
||||
'CgRDb2RlEgYKAk9LEAASDQoJQ0FOQ0VMTEVEEAESCwoHVU5LTk9XThACEhQKEElOVkFMSURfQV'
|
||||
'JHVU1FTlQQAxIVChFERUFETElORV9FWENFRURFRBAEEg0KCU5PVF9GT1VORBAFEhIKDkFMUkVB'
|
||||
'RFlfRVhJU1RTEAYSFQoRUEVSTUlTU0lPTl9ERU5JRUQQBxITCg9VTkFVVEhFTlRJQ0FURUQQEB'
|
||||
'IWChJSRVNPVVJDRV9FWEhBVVNURUQQCBIXChNGQUlMRURfUFJFQ09ORElUSU9OEAkSCwoHQUJP'
|
||||
'UlRFRBAKEhAKDE9VVF9PRl9SQU5HRRALEhEKDVVOSU1QTEVNRU5URUQQDBIMCghJTlRFUk5BTB'
|
||||
'ANEg8KC1VOQVZBSUxBQkxFEA4SDQoJREFUQV9MT1NTEA8=');
|
|
@ -1,186 +0,0 @@
|
|||
// Copyright 2020 Google LLC
|
||||
//
|
||||
// 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.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.rpc;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/rpc/code;code";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "CodeProto";
|
||||
option java_package = "com.google.rpc";
|
||||
option objc_class_prefix = "RPC";
|
||||
|
||||
// The canonical error codes for gRPC APIs.
|
||||
//
|
||||
//
|
||||
// Sometimes multiple error codes may apply. Services should return
|
||||
// the most specific error code that applies. For example, prefer
|
||||
// `OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply.
|
||||
// Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`.
|
||||
enum Code {
|
||||
// Not an error; returned on success
|
||||
//
|
||||
// HTTP Mapping: 200 OK
|
||||
OK = 0;
|
||||
|
||||
// The operation was cancelled, typically by the caller.
|
||||
//
|
||||
// HTTP Mapping: 499 Client Closed Request
|
||||
CANCELLED = 1;
|
||||
|
||||
// Unknown error. For example, this error may be returned when
|
||||
// a `Status` value received from another address space belongs to
|
||||
// an error space that is not known in this address space. Also
|
||||
// errors raised by APIs that do not return enough error information
|
||||
// may be converted to this error.
|
||||
//
|
||||
// HTTP Mapping: 500 Internal Server Error
|
||||
UNKNOWN = 2;
|
||||
|
||||
// The client specified an invalid argument. Note that this differs
|
||||
// from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments
|
||||
// that are problematic regardless of the state of the system
|
||||
// (e.g., a malformed file name).
|
||||
//
|
||||
// HTTP Mapping: 400 Bad Request
|
||||
INVALID_ARGUMENT = 3;
|
||||
|
||||
// The deadline expired before the operation could complete. For operations
|
||||
// that change the state of the system, this error may be returned
|
||||
// even if the operation has completed successfully. For example, a
|
||||
// successful response from a server could have been delayed long
|
||||
// enough for the deadline to expire.
|
||||
//
|
||||
// HTTP Mapping: 504 Gateway Timeout
|
||||
DEADLINE_EXCEEDED = 4;
|
||||
|
||||
// Some requested entity (e.g., file or directory) was not found.
|
||||
//
|
||||
// Note to server developers: if a request is denied for an entire class
|
||||
// of users, such as gradual feature rollout or undocumented whitelist,
|
||||
// `NOT_FOUND` may be used. If a request is denied for some users within
|
||||
// a class of users, such as user-based access control, `PERMISSION_DENIED`
|
||||
// must be used.
|
||||
//
|
||||
// HTTP Mapping: 404 Not Found
|
||||
NOT_FOUND = 5;
|
||||
|
||||
// The entity that a client attempted to create (e.g., file or directory)
|
||||
// already exists.
|
||||
//
|
||||
// HTTP Mapping: 409 Conflict
|
||||
ALREADY_EXISTS = 6;
|
||||
|
||||
// The caller does not have permission to execute the specified
|
||||
// operation. `PERMISSION_DENIED` must not be used for rejections
|
||||
// caused by exhausting some resource (use `RESOURCE_EXHAUSTED`
|
||||
// instead for those errors). `PERMISSION_DENIED` must not be
|
||||
// used if the caller can not be identified (use `UNAUTHENTICATED`
|
||||
// instead for those errors). This error code does not imply the
|
||||
// request is valid or the requested entity exists or satisfies
|
||||
// other pre-conditions.
|
||||
//
|
||||
// HTTP Mapping: 403 Forbidden
|
||||
PERMISSION_DENIED = 7;
|
||||
|
||||
// The request does not have valid authentication credentials for the
|
||||
// operation.
|
||||
//
|
||||
// HTTP Mapping: 401 Unauthorized
|
||||
UNAUTHENTICATED = 16;
|
||||
|
||||
// Some resource has been exhausted, perhaps a per-user quota, or
|
||||
// perhaps the entire file system is out of space.
|
||||
//
|
||||
// HTTP Mapping: 429 Too Many Requests
|
||||
RESOURCE_EXHAUSTED = 8;
|
||||
|
||||
// The operation was rejected because the system is not in a state
|
||||
// required for the operation's execution. For example, the directory
|
||||
// to be deleted is non-empty, an rmdir operation is applied to
|
||||
// a non-directory, etc.
|
||||
//
|
||||
// Service implementors can use the following guidelines to decide
|
||||
// between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`:
|
||||
// (a) Use `UNAVAILABLE` if the client can retry just the failing call.
|
||||
// (b) Use `ABORTED` if the client should retry at a higher level
|
||||
// (e.g., when a client-specified test-and-set fails, indicating the
|
||||
// client should restart a read-modify-write sequence).
|
||||
// (c) Use `FAILED_PRECONDITION` if the client should not retry until
|
||||
// the system state has been explicitly fixed. E.g., if an "rmdir"
|
||||
// fails because the directory is non-empty, `FAILED_PRECONDITION`
|
||||
// should be returned since the client should not retry unless
|
||||
// the files are deleted from the directory.
|
||||
//
|
||||
// HTTP Mapping: 400 Bad Request
|
||||
FAILED_PRECONDITION = 9;
|
||||
|
||||
// The operation was aborted, typically due to a concurrency issue such as
|
||||
// a sequencer check failure or transaction abort.
|
||||
//
|
||||
// See the guidelines above for deciding between `FAILED_PRECONDITION`,
|
||||
// `ABORTED`, and `UNAVAILABLE`.
|
||||
//
|
||||
// HTTP Mapping: 409 Conflict
|
||||
ABORTED = 10;
|
||||
|
||||
// The operation was attempted past the valid range. E.g., seeking or
|
||||
// reading past end-of-file.
|
||||
//
|
||||
// Unlike `INVALID_ARGUMENT`, this error indicates a problem that may
|
||||
// be fixed if the system state changes. For example, a 32-bit file
|
||||
// system will generate `INVALID_ARGUMENT` if asked to read at an
|
||||
// offset that is not in the range [0,2^32-1], but it will generate
|
||||
// `OUT_OF_RANGE` if asked to read from an offset past the current
|
||||
// file size.
|
||||
//
|
||||
// There is a fair bit of overlap between `FAILED_PRECONDITION` and
|
||||
// `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific
|
||||
// error) when it applies so that callers who are iterating through
|
||||
// a space can easily look for an `OUT_OF_RANGE` error to detect when
|
||||
// they are done.
|
||||
//
|
||||
// HTTP Mapping: 400 Bad Request
|
||||
OUT_OF_RANGE = 11;
|
||||
|
||||
// The operation is not implemented or is not supported/enabled in this
|
||||
// service.
|
||||
//
|
||||
// HTTP Mapping: 501 Not Implemented
|
||||
UNIMPLEMENTED = 12;
|
||||
|
||||
// Internal errors. This means that some invariants expected by the
|
||||
// underlying system have been broken. This error code is reserved
|
||||
// for serious errors.
|
||||
//
|
||||
// HTTP Mapping: 500 Internal Server Error
|
||||
INTERNAL = 13;
|
||||
|
||||
// The service is currently unavailable. This is most likely a
|
||||
// transient condition, which can be corrected by retrying with
|
||||
// a backoff. Note that it is not always safe to retry
|
||||
// non-idempotent operations.
|
||||
//
|
||||
// See the guidelines above for deciding between `FAILED_PRECONDITION`,
|
||||
// `ABORTED`, and `UNAVAILABLE`.
|
||||
//
|
||||
// HTTP Mapping: 503 Service Unavailable
|
||||
UNAVAILABLE = 14;
|
||||
|
||||
// Unrecoverable data loss or corruption.
|
||||
//
|
||||
// HTTP Mapping: 500 Internal Server Error
|
||||
DATA_LOSS = 15;
|
||||
}
|
|
@ -170,7 +170,7 @@ class ServerHandler extends ServiceCall {
|
|||
final acceptedEncodings =
|
||||
clientMetadata!['grpc-accept-encoding']?.split(',') ?? [];
|
||||
_callEncodingCodec = acceptedEncodings
|
||||
.map(_codecRegistry!.lookup)
|
||||
.map(_codecRegistry.lookup)
|
||||
.firstWhere((c) => c != null, orElse: () => null);
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:grpc/src/generated/google/protobuf/any.pb.dart';
|
||||
import 'package:grpc/src/generated/google/rpc/code.pb.dart';
|
||||
import 'package:grpc/src/generated/google/rpc/error_details.pb.dart';
|
||||
import 'package:grpc/src/generated/google/rpc/status.pb.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
|
@ -151,6 +150,28 @@ class StatusCode {
|
|||
static int fromHttpStatus(int status) {
|
||||
return _httpStatusToGrpcStatus[status] ?? StatusCode.unknown;
|
||||
}
|
||||
|
||||
/// Creates a string from a gRPC status code.
|
||||
static String? name(int status) => switch (status) {
|
||||
ok => 'OK',
|
||||
cancelled => 'CANCELLED',
|
||||
unknown => 'UNKNOWN',
|
||||
invalidArgument => 'INVALID_ARGUMENT',
|
||||
deadlineExceeded => 'DEADLINE_EXCEEDED',
|
||||
notFound => 'NOT_FOUND',
|
||||
alreadyExists => 'ALREADY_EXISTS',
|
||||
permissionDenied => 'PERMISSION_DENIED',
|
||||
resourceExhausted => 'RESOURCE_EXHAUSTED',
|
||||
failedPrecondition => 'FAILED_PRECONDITION',
|
||||
aborted => 'ABORTED',
|
||||
outOfRange => 'OUT_OF_RANGE',
|
||||
unimplemented => 'UNIMPLEMENTED',
|
||||
internal => 'INTERNAL',
|
||||
unavailable => 'UNAVAILABLE',
|
||||
dataLoss => 'DATA_LOSS',
|
||||
unauthenticated => 'UNAUTHENTICATED',
|
||||
int() => null,
|
||||
};
|
||||
}
|
||||
|
||||
class GrpcError implements Exception {
|
||||
|
@ -308,7 +329,8 @@ class GrpcError implements Exception {
|
|||
code = StatusCode.unauthenticated;
|
||||
|
||||
/// Given a status code, return the name
|
||||
String get codeName => (Code.valueOf(code) ?? Code.UNKNOWN).name;
|
||||
String get codeName =>
|
||||
StatusCode.name(code) ?? StatusCode.name(StatusCode.unknown)!;
|
||||
|
||||
@override
|
||||
bool operator ==(other) {
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
name: grpc
|
||||
description: Dart implementation of gRPC, a high performance, open-source universal RPC framework.
|
||||
version: 3.2.5
|
||||
version: 4.0.0
|
||||
|
||||
repository: https://github.com/grpc/grpc-dart
|
||||
|
||||
environment:
|
||||
sdk: ^3.0.0
|
||||
sdk: ^3.2.0
|
||||
|
||||
dependencies:
|
||||
archive: ^3.0.0
|
||||
|
|
Loading…
Reference in New Issue