File "MiddlewareManager.php"
Full Path: /home/fundopuh/trader.fxex.org/vendor/botman/botman/src/Middleware/MiddlewareManager.php
File size: 3.09 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace BotMan\BotMan\Middleware;
use BotMan\BotMan\BotMan;
use BotMan\BotMan\Interfaces\Middleware\Captured;
use BotMan\BotMan\Interfaces\Middleware\Heard;
use BotMan\BotMan\Interfaces\Middleware\Matching;
use BotMan\BotMan\Interfaces\Middleware\Received;
use BotMan\BotMan\Interfaces\Middleware\Sending;
use BotMan\BotMan\Interfaces\MiddlewareInterface;
use Closure;
use Mpociot\Pipeline\Pipeline;
class MiddlewareManager
{
/** @var Received[] */
protected $received = [];
/** @var Captured[] */
protected $captured = [];
/** @var Matching[] */
protected $matching = [];
/** @var Heard[] */
protected $heard = [];
/** @var Sending[] */
protected $sending = [];
/** @var BotMan */
protected $botman;
public function __construct(BotMan $botman)
{
$this->botman = $botman;
}
/**
* @param Received[] ...$middleware
* @return Received[]|$this
*/
public function received(Received ...$middleware)
{
if (empty($middleware)) {
return $this->received;
}
$this->received = array_merge($this->received, $middleware);
return $this;
}
/**
* @param Captured[] ...$middleware
* @return Captured[]|$this
*/
public function captured(Captured ...$middleware)
{
if (empty($middleware)) {
return $this->captured;
}
$this->captured = array_merge($this->captured, $middleware);
return $this;
}
/**
* @param Matching[] ...$middleware
* @return Matching[]|$this
*/
public function matching(Matching ...$middleware)
{
if (empty($middleware)) {
return $this->matching;
}
$this->matching = array_merge($this->matching, $middleware);
return $this;
}
/**
* @param Heard[] $middleware
* @return Heard[]|$this
*/
public function heard(Heard ...$middleware)
{
if (empty($middleware)) {
return $this->heard;
}
$this->heard = array_merge($this->heard, $middleware);
return $this;
}
/**
* @param Sending[] $middleware
* @return Sending[]|$this
*/
public function sending(Sending ...$middleware)
{
if (empty($middleware)) {
return $this->sending;
}
$this->sending = array_merge($this->sending, $middleware);
return $this;
}
/**
* @param string $method
* @param mixed $payload
* @param MiddlewareInterface[] $additionalMiddleware
* @param Closure|null $destination
* @return mixed
*/
public function applyMiddleware($method, $payload, array $additionalMiddleware = [], Closure $destination = null)
{
$destination = is_null($destination) ? function ($payload) {
return $payload;
}
: $destination;
$middleware = $this->$method + $additionalMiddleware;
return (new Pipeline())
->via($method)
->send($payload)
->with($this->botman)
->through($middleware)
->then($destination);
}
}