-
Notifications
You must be signed in to change notification settings - Fork 142
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move classes from Payum\Core\Bridge\Symfony into PayumBundle
- Loading branch information
Showing
40 changed files
with
1,092 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
<?php | ||
|
||
namespace Payum\Bundle\PayumBundle\Action; | ||
|
||
use Payum\Core\Action\ActionInterface; | ||
use Payum\Core\Exception\RequestNotSupportedException; | ||
use Payum\Core\Request\GetHttpRequest; | ||
use Symfony\Component\HttpFoundation\Request; | ||
use Symfony\Component\HttpFoundation\RequestStack; | ||
|
||
class GetHttpRequestAction implements ActionInterface | ||
{ | ||
/** | ||
* @var Request | ||
*/ | ||
protected $httpRequest; | ||
|
||
/** | ||
* @var RequestStack | ||
*/ | ||
protected $httpRequestStack; | ||
|
||
/** | ||
* @deprecated | ||
*/ | ||
public function setHttpRequest(Request $httpRequest = null): void | ||
{ | ||
$this->httpRequest = $httpRequest; | ||
} | ||
|
||
public function setHttpRequestStack(RequestStack $httpRequestStack = null): void | ||
{ | ||
$this->httpRequestStack = $httpRequestStack; | ||
} | ||
|
||
public function execute($request): void | ||
{ | ||
/** @var GetHttpRequest $request */ | ||
RequestNotSupportedException::assertSupports($this, $request); | ||
|
||
if ($this->httpRequest instanceof Request) { | ||
$this->updateRequest($request, $this->httpRequest); | ||
} elseif ($this->httpRequestStack instanceof RequestStack) { | ||
# BC Layer for Symfony 4 (Simplify after support for Symfony < 5 is dropped) | ||
if (method_exists($this->httpRequestStack, 'getMainRequest')) { | ||
$mainRequest = $this->httpRequestStack->getMainRequest(); | ||
} else { | ||
$mainRequest = $this->httpRequestStack->getMasterRequest(); | ||
} | ||
if (null !== $mainRequest) { | ||
$this->updateRequest($request, $mainRequest); | ||
} | ||
} | ||
} | ||
|
||
public function supports($request) | ||
{ | ||
return $request instanceof GetHttpRequest; | ||
} | ||
|
||
protected function updateRequest(GetHttpRequest $request, Request $httpRequest): void | ||
{ | ||
$request->query = $httpRequest->query->all(); | ||
$request->request = $httpRequest->request->all(); | ||
$request->headers = $httpRequest->headers->all(); | ||
$request->method = $httpRequest->getMethod(); | ||
$request->uri = $httpRequest->getUri(); | ||
$request->clientIp = $httpRequest->getClientIp(); | ||
$request->userAgent = $httpRequest->headers->get('User-Agent'); | ||
$request->content = $httpRequest->getContent(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
<?php | ||
|
||
namespace Payum\Bundle\PayumBundle\Action; | ||
|
||
use Payum\Core\Action\ActionInterface; | ||
use Payum\Bundle\PayumBundle\Form\Type\CreditCardType; | ||
use Payum\Bundle\PayumBundle\Reply\HttpResponse; | ||
use Payum\Core\Exception\LogicException; | ||
use Payum\Core\Exception\RequestNotSupportedException; | ||
use Payum\Core\GatewayAwareInterface; | ||
use Payum\Core\GatewayAwareTrait; | ||
use Payum\Core\Model\CreditCardInterface; | ||
use Payum\Core\Request\ObtainCreditCard; | ||
use Payum\Core\Request\RenderTemplate; | ||
use Symfony\Component\Form\FormFactoryInterface; | ||
use Symfony\Component\Form\FormInterface; | ||
use Symfony\Component\HttpFoundation\Request; | ||
use Symfony\Component\HttpFoundation\RequestStack; | ||
use Symfony\Component\HttpFoundation\Response; | ||
|
||
class ObtainCreditCardAction implements ActionInterface, GatewayAwareInterface | ||
{ | ||
use GatewayAwareTrait; | ||
|
||
/** | ||
* @var FormFactoryInterface | ||
*/ | ||
protected $formFactory; | ||
|
||
/** | ||
* @var ?Request | ||
*/ | ||
protected $httpRequest; | ||
|
||
/** | ||
* @var RequestStack | ||
*/ | ||
protected $httpRequestStack; | ||
|
||
/** | ||
* @var string | ||
*/ | ||
protected $templateName; | ||
|
||
/** | ||
* @param string $templateName | ||
*/ | ||
public function __construct(FormFactoryInterface $formFactory, $templateName) | ||
{ | ||
$this->formFactory = $formFactory; | ||
$this->templateName = $templateName; | ||
} | ||
|
||
/** | ||
* @deprecated | ||
*/ | ||
public function setRequest(Request $request = null): void | ||
{ | ||
$this->httpRequest = $request; | ||
} | ||
|
||
public function setRequestStack(RequestStack $requestStack = null): void | ||
{ | ||
$this->httpRequestStack = $requestStack; | ||
} | ||
|
||
/** | ||
* @param ObtainCreditCard $request | ||
*/ | ||
public function execute($request): void | ||
{ | ||
RequestNotSupportedException::assertSupports($this, $request); | ||
|
||
$httpRequest = null; | ||
if ($this->httpRequest instanceof Request) { | ||
$httpRequest = $this->httpRequest; | ||
} elseif ($this->httpRequestStack instanceof RequestStack) { | ||
# BC Layer for Symfony 4 (Simplify after support for Symfony < 5 is dropped) | ||
if (method_exists($this->httpRequestStack, 'getMainRequest')) { | ||
$httpRequest = $this->httpRequestStack->getMainRequest(); | ||
} else { | ||
$httpRequest = $this->httpRequestStack->getMasterRequest(); | ||
} | ||
} | ||
|
||
if (! $httpRequest) { | ||
throw new LogicException('The action can be run only when http request is set.'); | ||
} | ||
|
||
$form = $this->createCreditCardForm(); | ||
|
||
$form->handleRequest($httpRequest); | ||
if ($form->isSubmitted()) { | ||
/** @var CreditCardInterface $card */ | ||
$card = $form->getData(); | ||
$card->secure(); | ||
|
||
if ($form->isValid()) { | ||
$request->set($card); | ||
|
||
return; | ||
} | ||
} | ||
|
||
$renderTemplate = new RenderTemplate($this->templateName, [ | ||
'model' => $request->getModel(), | ||
'firstModel' => $request->getFirstModel(), | ||
'form' => $form->createView(), | ||
'actionUrl' => $request->getToken() ? $request->getToken()->getTargetUrl() : null, | ||
]); | ||
$this->gateway->execute($renderTemplate); | ||
|
||
throw new HttpResponse(new Response($renderTemplate->getResult(), 200, [ | ||
'Cache-Control' => 'no-store, no-cache, max-age=0, post-check=0, pre-check=0', | ||
'X-Status-Code' => 200, | ||
'Pragma' => 'no-cache', | ||
])); | ||
} | ||
|
||
public function supports($request) | ||
{ | ||
return $request instanceof ObtainCreditCard; | ||
} | ||
|
||
/** | ||
* @return FormInterface | ||
*/ | ||
protected function createCreditCardForm() | ||
{ | ||
return $this->formFactory->create(CreditCardType::class); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
<?php | ||
|
||
namespace Payum\Bundle\PayumBundle\Action; | ||
|
||
use Payum\Core\Action\ActionInterface; | ||
use Payum\Core\Exception\RequestNotSupportedException; | ||
use Payum\Core\Request\RenderTemplate; | ||
use Symfony\Component\Templating\EngineInterface; | ||
|
||
class RenderTemplateAction implements ActionInterface | ||
{ | ||
/** | ||
* @var string | ||
*/ | ||
protected $layout; | ||
|
||
private EngineInterface $templating; | ||
|
||
public function __construct(EngineInterface $templating, $layout = null) | ||
{ | ||
$this->templating = $templating; | ||
$this->layout = $layout; | ||
} | ||
|
||
/** | ||
* @param mixed $request | ||
* | ||
* @throws RequestNotSupportedException if the action dose not support the request. | ||
*/ | ||
public function execute($request): void | ||
{ | ||
/** @var RenderTemplate $request */ | ||
RequestNotSupportedException::assertSupports($this, $request); | ||
|
||
$request->setResult( | ||
$this->templating->render( | ||
$request->getTemplateName(), | ||
array_replace( | ||
[ | ||
'layout' => $this->layout, | ||
], | ||
$request->getParameters() | ||
) | ||
) | ||
); | ||
} | ||
|
||
/** | ||
* @param mixed $request | ||
* | ||
* @return boolean | ||
*/ | ||
public function supports($request) | ||
{ | ||
return $request instanceof RenderTemplate; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
<?php | ||
|
||
namespace Payum\Bundle\PayumBundle\Builder; | ||
|
||
use Payum\Bundle\PayumBundle\ContainerAwareCoreGatewayFactory; | ||
use Payum\Core\GatewayFactoryInterface; | ||
use Symfony\Component\DependencyInjection\ContainerAwareInterface; | ||
use Symfony\Component\DependencyInjection\ContainerAwareTrait; | ||
|
||
class CoreGatewayFactoryBuilder implements ContainerAwareInterface | ||
{ | ||
use ContainerAwareTrait; | ||
|
||
public function __invoke() | ||
{ | ||
return call_user_func_array([$this, 'build'], func_get_args()); | ||
} | ||
|
||
/** | ||
* @return GatewayFactoryInterface | ||
*/ | ||
public function build(array $defaultConfig) | ||
{ | ||
$coreGatewayFactory = new ContainerAwareCoreGatewayFactory($defaultConfig); | ||
$coreGatewayFactory->setContainer($this->container); | ||
|
||
return $coreGatewayFactory; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
<?php | ||
|
||
namespace Payum\Bundle\PayumBundle\Builder; | ||
|
||
use Payum\Core\GatewayFactoryInterface; | ||
|
||
class GatewayFactoryBuilder | ||
{ | ||
/** | ||
* @var string | ||
*/ | ||
private $gatewayFactoryClass; | ||
|
||
/** | ||
* @param string $gatewayFactoryClass | ||
*/ | ||
public function __construct($gatewayFactoryClass) | ||
{ | ||
$this->gatewayFactoryClass = $gatewayFactoryClass; | ||
} | ||
|
||
public function __invoke() | ||
{ | ||
return call_user_func_array([$this, 'build'], func_get_args()); | ||
} | ||
|
||
/** | ||
* @return GatewayFactoryInterface | ||
*/ | ||
public function build(array $defaultConfig, GatewayFactoryInterface $coreGatewayFactory) | ||
{ | ||
$gatewayFactoryClass = $this->gatewayFactoryClass; | ||
|
||
return new $gatewayFactoryClass($defaultConfig, $coreGatewayFactory); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<?php | ||
|
||
namespace Payum\Bundle\PayumBundle\Builder; | ||
|
||
use Payum\Bundle\PayumBundle\Security\HttpRequestVerifier; | ||
use Payum\Core\Security\HttpRequestVerifierInterface; | ||
use Payum\Core\Security\TokenInterface; | ||
use Payum\Core\Storage\StorageInterface; | ||
|
||
class HttpRequestVerifierBuilder | ||
{ | ||
public function __invoke(): HttpRequestVerifierInterface | ||
{ | ||
return $this->build(...func_get_args()); | ||
} | ||
|
||
/** | ||
* @param StorageInterface<TokenInterface> $tokenStorage | ||
*/ | ||
public function build(StorageInterface $tokenStorage): HttpRequestVerifierInterface | ||
{ | ||
return new HttpRequestVerifier($tokenStorage); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
<?php | ||
|
||
namespace Payum\Bundle\PayumBundle\Builder; | ||
|
||
use Payum\Core\Bridge\Spl\ArrayObject; | ||
use Payum\Bundle\PayumBundle\Action\ObtainCreditCardAction; | ||
use Symfony\Component\Form\FormFactoryInterface; | ||
use Symfony\Component\HttpFoundation\RequestStack; | ||
|
||
class ObtainCreditCardActionBuilder | ||
{ | ||
private FormFactoryInterface $formFactory; | ||
|
||
private RequestStack $requestStack; | ||
|
||
public function __construct(FormFactoryInterface $formFactory, RequestStack $requestStack) | ||
{ | ||
$this->formFactory = $formFactory; | ||
$this->requestStack = $requestStack; | ||
} | ||
|
||
public function __invoke() | ||
{ | ||
return call_user_func_array([$this, 'build'], func_get_args()); | ||
} | ||
|
||
/** | ||
* @return ObtainCreditCardAction | ||
*/ | ||
public function build(ArrayObject $config) | ||
{ | ||
$action = new ObtainCreditCardAction($this->formFactory, $config['payum.template.obtain_credit_card']); | ||
$action->setRequestStack($this->requestStack); | ||
|
||
return $action; | ||
} | ||
} |
Oops, something went wrong.