aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/php/lib
diff options
context:
space:
mode:
authorGravatar Stanley Cheung <stanleycheung@google.com>2015-12-10 11:42:55 -0800
committerGravatar Stanley Cheung <stanleycheung@google.com>2015-12-10 11:42:55 -0800
commit3580580367f663c210305c6e5b5fa51f7c724a7d (patch)
tree7946cd82bad8e76f6669a302f61369963fc0b52b /src/php/lib
parent5a629d39294271230d13cf52c96e7fa49c7df3ca (diff)
php: metadata plugin based auth API
Diffstat (limited to 'src/php/lib')
-rw-r--r--src/php/lib/Grpc/AbstractCall.php24
-rwxr-xr-xsrc/php/lib/Grpc/BaseStub.php81
2 files changed, 44 insertions, 61 deletions
diff --git a/src/php/lib/Grpc/AbstractCall.php b/src/php/lib/Grpc/AbstractCall.php
index 53849d51fc..c80cf4464e 100644
--- a/src/php/lib/Grpc/AbstractCall.php
+++ b/src/php/lib/Grpc/AbstractCall.php
@@ -43,19 +43,20 @@ abstract class AbstractCall
/**
* Create a new Call wrapper object.
*
- * @param Channel $channel The channel to communicate on
- * @param string $method The method to call on the
- * remote server
- * @param callback $deserialize A callback function to deserialize
- * the response
- * @param (optional) long $timeout Timeout in microseconds
+ * @param Channel $channel The channel to communicate on
+ * @param string $method The method to call on the
+ * remote server
+ * @param callback $deserialize A callback function to deserialize
+ * the response
+ * @param array $options Call options (optional)
*/
public function __construct(Channel $channel,
$method,
$deserialize,
- $timeout = false)
+ $options = [])
{
- if ($timeout) {
+ if (isset($options['timeout']) &&
+ is_numeric($timeout = $options['timeout'])) {
$now = Timeval::now();
$delta = new Timeval($timeout);
$deadline = $now->add($delta);
@@ -65,6 +66,13 @@ abstract class AbstractCall
$this->call = new Call($channel, $method, $deadline);
$this->deserialize = $deserialize;
$this->metadata = null;
+ if (isset($options['call_credentials_callback']) &&
+ is_callable($call_credentials_callback =
+ $options['call_credentials_callback'])) {
+ $call_credentials = CallCredentials::createFromPlugin(
+ $call_credentials_callback);
+ $this->call->setCredentials($call_credentials);
+ }
}
/**
diff --git a/src/php/lib/Grpc/BaseStub.php b/src/php/lib/Grpc/BaseStub.php
index 7b2627f516..8e9dedf73b 100755
--- a/src/php/lib/Grpc/BaseStub.php
+++ b/src/php/lib/Grpc/BaseStub.php
@@ -159,25 +159,6 @@ class BaseStub
}
/**
- * extract $timeout from $metadata.
- *
- * @param $metadata The metadata map
- *
- * @return list($metadata_copy, $timeout)
- */
- private function _extract_timeout_from_metadata($metadata)
- {
- $timeout = false;
- $metadata_copy = $metadata;
- if (isset($metadata['timeout'])) {
- $timeout = $metadata['timeout'];
- unset($metadata_copy['timeout']);
- }
-
- return [$metadata_copy, $timeout];
- }
-
- /**
* validate and normalize the metadata array.
*
* @param $metadata The metadata map
@@ -220,21 +201,19 @@ class BaseStub
$metadata = [],
$options = [])
{
- list($actual_metadata, $timeout) =
- $this->_extract_timeout_from_metadata($metadata);
$call = new UnaryCall($this->channel,
$method,
$deserialize,
- $timeout);
+ $options);
$jwt_aud_uri = $this->_get_jwt_aud_uri($method);
if (is_callable($this->update_metadata)) {
- $actual_metadata = call_user_func($this->update_metadata,
- $actual_metadata,
+ $metadata = call_user_func($this->update_metadata,
+ $metadata,
$jwt_aud_uri);
}
- $actual_metadata = $this->_validate_and_normalize_metadata(
- $actual_metadata);
- $call->start($argument, $actual_metadata, $options);
+ $metadata = $this->_validate_and_normalize_metadata(
+ $metadata);
+ $call->start($argument, $metadata, $options);
return $call;
}
@@ -253,23 +232,22 @@ class BaseStub
*/
public function _clientStreamRequest($method,
callable $deserialize,
- $metadata = [])
+ $metadata = [],
+ $options = [])
{
- list($actual_metadata, $timeout) =
- $this->_extract_timeout_from_metadata($metadata);
$call = new ClientStreamingCall($this->channel,
$method,
$deserialize,
- $timeout);
+ $options);
$jwt_aud_uri = $this->_get_jwt_aud_uri($method);
if (is_callable($this->update_metadata)) {
- $actual_metadata = call_user_func($this->update_metadata,
- $actual_metadata,
+ $metadata = call_user_func($this->update_metadata,
+ $metadata,
$jwt_aud_uri);
}
- $actual_metadata = $this->_validate_and_normalize_metadata(
- $actual_metadata);
- $call->start($actual_metadata);
+ $metadata = $this->_validate_and_normalize_metadata(
+ $metadata);
+ $call->start($metadata);
return $call;
}
@@ -291,21 +269,19 @@ class BaseStub
$metadata = [],
$options = [])
{
- list($actual_metadata, $timeout) =
- $this->_extract_timeout_from_metadata($metadata);
$call = new ServerStreamingCall($this->channel,
$method,
$deserialize,
- $timeout);
+ $options);
$jwt_aud_uri = $this->_get_jwt_aud_uri($method);
if (is_callable($this->update_metadata)) {
- $actual_metadata = call_user_func($this->update_metadata,
- $actual_metadata,
+ $metadata = call_user_func($this->update_metadata,
+ $metadata,
$jwt_aud_uri);
}
- $actual_metadata = $this->_validate_and_normalize_metadata(
- $actual_metadata);
- $call->start($argument, $actual_metadata, $options);
+ $metadata = $this->_validate_and_normalize_metadata(
+ $metadata);
+ $call->start($argument, $metadata, $options);
return $call;
}
@@ -321,23 +297,22 @@ class BaseStub
*/
public function _bidiRequest($method,
callable $deserialize,
- $metadata = [])
+ $metadata = [],
+ $options = [])
{
- list($actual_metadata, $timeout) =
- $this->_extract_timeout_from_metadata($metadata);
$call = new BidiStreamingCall($this->channel,
$method,
$deserialize,
- $timeout);
+ $options);
$jwt_aud_uri = $this->_get_jwt_aud_uri($method);
if (is_callable($this->update_metadata)) {
- $actual_metadata = call_user_func($this->update_metadata,
- $actual_metadata,
+ $metadata = call_user_func($this->update_metadata,
+ $metadata,
$jwt_aud_uri);
}
- $actual_metadata = $this->_validate_and_normalize_metadata(
- $actual_metadata);
- $call->start($actual_metadata);
+ $metadata = $this->_validate_and_normalize_metadata(
+ $metadata);
+ $call->start($metadata);
return $call;
}