Commit Graph

104 Commits

Author SHA1 Message Date
Rui Craveiro b8f872a3dc
Send trailers included on GrpcError object (#538) 2022-08-23 12:40:03 +02:00
Cobinja af965f15f7
Expose onConnectionStateChanged for channels (#565)
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2022-08-15 15:03:51 +02:00
Vyacheslav Egorov 7cced9282a
Fix compilation with DDC (#516)
b272632450 exposed client certificate through 
`X509Certificate? get clientCertificate;` getter on `ServiceCall` class. This broke 
compilation of `grpc_web` code using DDC, but not dart2js. Turns out that dart2js is 
happy to compile any code using `dart:io` (though the result will not run if you try
to use any of those APIs), but DDC rejects such code eagerly. `package:test` runs 
tests through `dart2js` so DDC breakage was not really caught by CI. 

Unfortunately this discrepancy between DDC and dart2js puts us in some really weird 
spot: most of our tests are platform independent, but most of those tests also 
pull in `dart:io` through transitive dependencies.

This commit is the most minimal change we could make to allow the code compile both 
on the Web and natively. 

A proper fix should be to go through tests one-by-one and make sure that those that
need to run on the Web don't import `dart:io`, but we don't have time to do that 
right now. 

This commit also adds a smoke test to the CI to verify that `grpc_web` example 
builds with DDC.
2021-08-16 14:52:36 +02:00
Kenneth Gulbrandsøy acd2e93a25
Add custom trailers to GrpcError (#493) 2021-08-10 11:53:09 +02:00
Vyacheslav Egorov e9ad5ab16b
Fix CI
* Reformat code with dev build of dartfmt

* Download envoy package manually
2021-08-10 11:04:11 +02:00
Bálint Böde f5508d9801
Fix a typo on the inner invoker parameters (#492) 2021-06-29 23:56:12 +02:00
Tyler Gaw f23070ee85
grpc_or_grpcweb.dart: exporting shared types #486 (#487) 2021-06-13 08:24:28 +02:00
Piotr Morgwai Kotarbinski d4504dacf1
GrpcOrGrpcWeb: provide more flexible constructors (#484) (#485) 2021-06-08 11:14:57 +02:00
Piotr Morgwai Kotarbinski 7c8fca7195
GrpcOrGrpcWeb: remove checking if ports are different (#482) (#483)
* GrpcOrGrpcWeb: remove checking if ports are different (#482)

Using the same port is a standard for AspNetCore gRPC server.

* improve source docs
2021-06-03 12:56:02 +02:00
Piotr Morgwai Kotarbinski e88b84a993
Add GrpcOrGrpcWebClientChannel (#457) (#479) 2021-06-02 12:25:23 +02:00
EPNW b272632450
Make clientCertificate available in ServiceCall (#472)
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2021-05-11 13:35:36 +02:00
Vyacheslav Egorov 2f5ef8c663
Fix directives_ordering lint (#473) 2021-05-03 17:00:44 +02:00
Daniel Brauner 6c16fceb2a
Be more resilient to broken deployments (#460)
Require 200 HTTP status and a supported Content-Type
header to be present in a response.

When handling malformed responses make effort
to translate HTTP statuses into gRPC statuses as
gRPC protocol specification recommends.

Fixes #421
Fixes #458 

Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2021-03-22 17:22:32 +01:00
Kevin Moore fb0c27a78a
Require latest googleapis_auth to avoid deprecated API usage (#455) 2021-03-08 14:32:55 -08:00
Ji Li eedc9acdc8
Make status code name as a getter to sync with internal impl (#439) 2021-02-02 12:13:54 -08:00
Kevin Moore 32fbc03c63
Enable and fix pedantic v1.9 lints (#445)
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2021-02-01 09:12:26 +01:00
Ivan Inozemtsev 1e1831a187
Migrate grpc to null safety (#432) 2021-01-29 12:40:52 +01:00
Ankur Jain 17c0d37ae5
Proper NPE fix (#436)
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2021-01-28 13:10:58 +01:00
Ji Li 2584a5e536
Add XHR raw response to the GrpcError for a better debugging (#423)
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2021-01-28 12:33:41 +01:00
Ankur Jain 0eb331f157
Fix potential NPE (#435)
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2021-01-27 23:51:24 +01:00
Ankur Jain b2f1f697be
Export codecRegistry for connection interface. (#434) 2021-01-27 23:50:21 +01:00
Vyacheslav Egorov fbcb426f21
Make sure that grpc_web.dart builds on the Web (#427)
c48af63 accidentally introduced a dependency on VM specific libraries in the shared code

Fix envoy configuration to make sure grpcweb tests runs
2021-01-22 15:35:21 +01:00
Luis Alejandro Herrera León 93c21feb56
Prevent an exception to be thrown when a web connection stream is closed (#414) 2020-12-20 23:05:59 +01:00
Vyacheslav Egorov ed960c26c6
Avoid deprecated List() constructor. (#415)
Enable prefer_collection_literals lint.
2020-12-17 10:50:45 +01:00
Ankur Jain c48af638a5
Support message compression (#409)
* Added support for compression/decompression, which can be configured through 
  `ChannelOptions` constructor's `codecRegistry` parameter or adding the 
  `grpc-accept-encoding` to `metadata` parameter of `CallOptions` on the client 
  side and `codecRegistry` parameter to `Server` on the server side.
  Outgoing rpc can be compressed using the `compression` parameter on the 
  `CallOptions`.

Closes #6
2020-12-11 09:52:24 +01:00
Isaac Saldana 275cc544c9
Fix concurrent modification error in GrpcWebClientChannel.terminate
Fixes #331

Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2020-11-12 12:52:04 +01:00
Vyacheslav Egorov f1c475603f
Cleanups (#398)
* Regenerate protobuf files using newest protoc plugin
* Fix lints everywhere
* Remove visibleForTesting from profile.dart
2020-11-12 11:36:59 +01:00
Vyacheslav Egorov e634f9749f
Fix for duplicate headers (#397) 2020-11-12 09:51:57 +01:00
Ben Konyi b8197a5897
Add timeline logging to grpc client (#392)
Co-authored-by: Zichang Guo <zichangguo@google.com>
2020-11-11 15:51:16 +01:00
Zbigniew Mandziejewicz 8b71a9dab2
Ensure CallOptions merge preserves Web specific options 2020-11-11 15:49:39 +01:00
Lei Liu 52bea07000
Add support for unix domain sockets (#327)
Fixes #299
2020-11-11 15:43:05 +01:00
Vyacheslav Egorov cb1c0ea8b3
Update pubspec.yaml, CHANGELOG.md and expand deprecation notice (#378)
* Opt grpc_web_server.dart out of NNBD.
2020-11-03 14:21:04 +01:00
Zbigniew Mandziejewicz 9f83e124e9
feat: support client interceptors (#338)
* Added support for client interceptors, which can be configured through
  Client constructor's interceptors parameter. Interceptors will be
  executed by Client.$createStreamingCall and Client.$createUnaryCall.
  Using interceptors requires regenerating client stubs using version 19.2.0 or
  newer of protobuf compiler plugin.
* Client.$createCall is deprecated because it does not invoke client
  interceptors.
2020-11-02 11:13:56 +01:00
Sigurd Meldgaard 21529c6be7
Don't print from server (#212)
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2020-10-29 12:57:47 +01:00
Vyacheslav Egorov 7ea15a8160
Propagate cancellation from responses stream to the call (#376)
It is not enough to just cancel the subscription.

Fixes #368
2020-10-29 12:56:49 +01:00
Andrew Coutts b6e40c34e3
Add decoded grpc-status-details-bin details to GrpcError (#349)
Closes #209
2020-10-27 17:07:58 +01:00
Rui Craveiro 3d731e0690
Call to onMetadata handles exceptions (#342)
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2020-10-26 15:39:49 +01:00
Michael R Fairhurst e2f3d74087
Remove unused dart:async imports (#358)
Since Dart 2.1, Future and Stream have been exported from dart:core
2020-10-25 12:43:15 +01:00
Nic Hite fa6b127dca
Create gRPC servers and clients with TransportConnections. (#364)
* Create gRPC servers and clients with TransportConnections.

* switch class ordering to put base class first.
2020-10-05 19:34:39 -07:00
Vyacheslav Egorov 831f5d8cfb
Revert "Not to fail pending requests, just reschedule it (#303)" (#366)
This reverts commit 9ed03b6b96.

This change prevents client from gracefully handling connection issues and instead just makes it infinitely trying to reconnect.

Closes #339
2020-10-02 22:22:33 +02:00
Nic Hite a657916168
Add client validation to server credentials (#363)
* Add ability to validate clients to server credentials.
2020-09-29 11:55:28 -07:00
Nic Hite a774583de0
Beef up exception handling in gRPC code. (#360)
* Beef up exception handling in gRPC code.

* Verify default stacktrace isn't used in exceptions
2020-09-29 01:01:18 -07:00
Nic Hite bb4eab0f1f
Add browser features to Dart gRPC-web for parity with JS implementation. (#347)
* Add bypassCorsPreflight capability to gRPC-web Dart.

* fix tests and run dartfmt.

* remove print statement

* dartfmt

* Update pubspec.

* Fix changelog.

* Fix tests

* final dartfmt

* Respond to requested changes.

* revert extra newline in changelog

Co-authored-by: Michael Thomsen <mit@google.com>
2020-09-24 21:52:35 -07:00
Wayne Li afacaa30e0
Remove check for SecurityContext.alpnSupported in security#createSecurityContext (#353)
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
2020-09-18 10:29:09 +02:00
Vyacheslav Egorov 3414356950
Revert "Support grpc-web in pure dart (#287)" (#351)
This reverts commit c513e1467f.

The original commit has broken streaming due to limitations of package:http.
2020-09-17 10:59:15 -07:00
Mehmet Fidanboylu ad2c0f6f3e
Use SecureSocket.connect directly if there's no authority in Credentials (#343) 2020-08-27 15:06:54 -07:00
Koichi Ishida e4947e2909
Encode server error message (#330) 2020-07-24 10:20:23 +02:00
Koichi Ishida 98ff843751
Decode gRPC error message (#326) 2020-07-20 16:11:19 +02:00
Jonas Finnemann Jensen 449faa80ee
Added Application Default Credentials Support (#315)
* Application Default Credentials support

* Prepare a 2.2.0 release of grpc

* Update CHANGELOG.md

Co-authored-by: Sigurd Meldgaard <sigurdm@google.com>

Co-authored-by: Sigurd Meldgaard <sigurdm@google.com>
2020-06-11 14:18:30 +02:00
Oleg Maslovsky 9ed03b6b96
Not to fail pending requests, just reschedule it (#303) 2020-06-08 10:16:00 +02:00