Guest User

Untitled

a guest
Jun 19th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. use MagentoPaymentGatewayConfigInterface;
  2.  
  3. use MagentoPaymentGatewayConfigInterface as LoggerConfigInterface;
  4.  
  5. <?php
  6. /**
  7. * Copyright © Magento, Inc. All rights reserved.
  8. * See COPYING.txt for license details.
  9. */
  10. namespace MagentoPaymentModelMethod;
  11.  
  12. use MagentoPaymentGatewayConfigInterface as LoggerConfigInterface;
  13. use PsrLogLoggerInterface;
  14.  
  15. /**
  16. * Class Logger for payment related information (request, response, etc.) which is used for debug.
  17. *
  18. * @api
  19. * @since 100.0.2
  20. */
  21. class Logger
  22. {
  23. const DEBUG_KEYS_MASK = '****';
  24.  
  25. /**
  26. * @var LoggerInterface
  27. */
  28. protected $logger;
  29.  
  30. /**
  31. * @var LoggerConfigInterface
  32. */
  33. private $config;
  34.  
  35. /**
  36. * @param LoggerInterface $logger
  37. * @param LoggerConfigInterface $config
  38. */
  39. public function __construct(
  40. LoggerInterface $logger,
  41. LoggerConfigInterface $config = null
  42. ) {
  43. $this->logger = $logger;
  44. $this->config = $config;
  45. }
  46.  
  47. /**
  48. * Logs payment related information used for debug
  49. *
  50. * @param array $data
  51. * @param array|null $maskKeys
  52. * @param bool|null $forceDebug
  53. * @return void
  54. */
  55. public function debug(array $data, array $maskKeys = null, $forceDebug = null)
  56. {
  57. $maskKeys = $maskKeys !== null ? $maskKeys : $this->getDebugReplaceFields();
  58. $debugOn = $forceDebug !== null ? $forceDebug : $this->isDebugOn();
  59. if ($debugOn === true) {
  60. $data = $this->filterDebugData(
  61. $data,
  62. $maskKeys
  63. );
  64. $this->logger->debug(var_export($data, true));
  65. }
  66. }
  67. /**
  68. * Returns configured keys to be replaced with mask
  69. *
  70. * @return array
  71. */
  72. private function getDebugReplaceFields()
  73. {
  74. if ($this->config && $this->config->getValue('debugReplaceKeys')) {
  75. return explode(',', $this->config->getValue('debugReplaceKeys'));
  76. }
  77. return [];
  78. }
  79. /**
  80. * Whether debug is enabled in configuration
  81. *
  82. * @return bool
  83. */
  84. private function isDebugOn()
  85. {
  86. return $this->config && (bool)$this->config->getValue('debug');
  87. }
  88. /**
  89. * Recursive filter data by private conventions
  90. *
  91. * @param array $debugData
  92. * @param array $debugReplacePrivateDataKeys
  93. * @return array
  94. */
  95. protected function filterDebugData(array $debugData, array $debugReplacePrivateDataKeys)
  96. {
  97. $debugReplacePrivateDataKeys = array_map('strtolower', $debugReplacePrivateDataKeys);
  98. foreach (array_keys($debugData) as $key) {
  99. if (in_array(strtolower($key), $debugReplacePrivateDataKeys)) {
  100. $debugData[$key] = self::DEBUG_KEYS_MASK;
  101. } elseif (is_array($debugData[$key])) {
  102. $debugData[$key] = $this->filterDebugData($debugData[$key], $debugReplacePrivateDataKeys);
  103. }
  104. }
  105. return $debugData;
  106. }
  107. }
Add Comment
Please, Sign In to add comment