Changelog for grphp.
- Dropped support for PHP 7 as it reached its EOL in November 2022
- Changed a bunch of method signatures, added return type hints
- Most notably added a return type to the
Grphp\Client\Interceptors\Base::call()
abstract method forcing all interceptors to add it as well.
- Most notably added a return type to the
- Eliminated method arguments that are taken by reference
- Add retry support with the Retry interceptor.
- Add methods for mapping status code numbers to descriptive strings
- Set default request timeout to the proxy client config value.
- Upgrade php-cs-fixer to v3.10.0.
- Add
getFullyQualifiedMethodName
andgetExpectedResponseMessageClass
to base Client Interceptor class - Drop PHP 7.3 support
- Add header
TE: trailers
for envoy requests.
CURLOPT_CONTENT_TYPE
is deprecated; remove references and allowCURLOPT_HTTPHEADER
to handle Content-Type headers
- Add Envoy strategy for using grphp with an Envoy proxy for gRPC egress communication
- Make Grphp\Client#getClient protected instead of private
- Add the ability to configure the content-type header for requests using the H2Proxy strategy
- Fix bug with empty metadata in interceptors.
- Add PHP8 in composer.json
- Update phpunit ^9
- Migrate to CircleCI
- Originally, this library relied solely upon the deadline gRPC feature, i.e. that the service will terminate request when the deadline is reached. With this release, client will also terminate the connection after the specified amount of time if the service wasn't able to respond in time and did not terminate the request for some reason.
- Fix service name deriving from a client class name in Request
- Ensure that no null byte or other unprintable characters are included into the exception message as a result of failed gRPC response with a valid gRPC message.
- This release contains improved exception messages, that include the name of the service and a method that was invoked but failed.
- Breaking change: removal of the
Grphp\Client\Error::ERROR_METADATA_KEY
constant.
- This release contains an improvement to reporting an error status from gRPC stack by propagating it as part of the Status attached to the RequestException.
- A breaking change to the config to require a scheme for a given base URI is introduced in order to fix certain situations where proxied request is sent to the service without a scheme causing request parsing failures.
- updated version of google/protobuf library
- minor bug fixes
- Include connection error messages in exceptions
- Removes the default value for proxy configuration as this option should be disabled by default.
- Adds support for explicit proxy configuration when using the H2 strategy.
- Reduce dependency on php timer
- Suppress "expect: 100-continue" header on outbound cURL requests for the H2Proxy strategy
- Introduce new strategy patterns for communicating out to services, allowing either gRPC or H2Proxy for the client
- Adds H2Proxy strategy for utilizing nghttpx to proxy H1 requests into H2 gRPC requests without need of the PHP C extension
- Adds a new Error\Status class for representing gRPC error statuses
- Adds a new client request object for encapsulating contextual information about the outgoing request
- Adds new Header and HeaderCollection classes for representing HTTP headers both outbound and inbound
- Update to gRPC 1.9.x
- Get off BC gRPC fork now that root SSL memory leak issue is fixed
- Ensure that client stubs are not instantiated on construction, but rather lazily loaded on first service call
- Ensure LinkerD interceptor pulls from SERVER and REQUEST
- Ensure LinkerD interceptor handles transformation of context keys
- Fix timer interceptor to properly report in ms
- Add more unit tests
- Improved interceptor config support, useDefaultInterceptors config option
- Allow client stub to be accessible to interceptors
- Add isSuccess to \Grphp\Client\Response
- Add LinkerD context propagation interceptor
- Add interceptor options
- Set l5d + timer interceptors to be default
- Fix channel issue for gRPC 1.3.2
- Rename instrumentors to interceptors
- Rollback to gRPC 1.3.2 until grpc/grpc#11711 is fixed