PluginProbe
seQura / trunk
seQura vtrunk
4.3.4 4.3.3 4.3.2 4.3.1 trunk 2.0.0 2.0.10 2.0.11 2.0.12 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 3.0.0 3.0.2 3.0.5 3.0.6 3.0.7 3.1.0 3.1.1 3.2.0 3.2.1 3.2.2 4.0.0 All 30 releases
sequra / src / Controllers / Rest / class-log-rest-controller.php

class-log-rest-controller.php in seQura trunk, at src/Controllers/Rest/class-log-rest-controller.php

151 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * REST Log Controller
4 *
5 * @package SeQura/WC
6 * @subpackage SeQura/WC/Controllers/Rest
7 */
8
9 namespace SeQura\WC\Controllers\Rest;
10
11 use SeQura\Core\BusinessLogic\ConfigurationWebhookAPI\Responses\AdvancedSettings\AdvancedSettingsResponse;
12 use SeQura\Core\BusinessLogic\Domain\AdvancedSettings\Models\AdvancedSettings;
13 use SeQura\Core\BusinessLogic\Domain\AdvancedSettings\Services\AdvancedSettingsService;
14 use SeQura\Core\Infrastructure\Logger\Logger;
15 use SeQura\WC\Services\Log\Interface_Logger_Service;
16 use SeQura\Core\Infrastructure\Utility\RegexProvider;
17 use WP_Error;
18 use WP_REST_Request;
19 use WP_REST_Response;
20
21 /**
22 * REST Log Controller
23 */
24 class Log_REST_Controller extends REST_Controller {
25
26 private const PARAM_IS_ENABLED = 'isEnabled';
27 private const PARAM_LOG_LEVEL = 'level';
28
29 /**
30 * Advanced settings service
31 *
32 * @var AdvancedSettingsService
33 */
34 private $advanced_settings_service;
35
36 /**
37 * Constructor.
38 *
39 * @param string $rest_namespace The namespace.
40 * @param Interface_Logger_Service $logger The logger service.
41 * @param RegexProvider $regex The regex provider.
42 * @param AdvancedSettingsService $advanced_settings_service The advanced settings service.
43 */
44 public function __construct(
45 $rest_namespace,
46 Interface_Logger_Service $logger,
47 RegexProvider $regex,
48 AdvancedSettingsService $advanced_settings_service
49 ) {
50 parent::__construct( $logger, $regex );
51 $this->namespace = $rest_namespace;
52 $this->rest_base = '/log';
53 $this->advanced_settings_service = $advanced_settings_service;
54 }
55
56 /**
57 * Register the API endpoints.
58 *
59 * @return void
60 */
61 public function register_routes() {
62 $this->logger->log_debug( 'Hook executed', __FUNCTION__, __CLASS__ );
63 $store_id_args = array( self::PARAM_STORE_ID => $this->get_arg_string() );
64 $conf_args = array_merge(
65 $store_id_args,
66 array(
67 self::PARAM_IS_ENABLED => $this->get_arg_bool(),
68 self::PARAM_LOG_LEVEL => $this->get_arg_int(),
69 )
70 );
71 $store_id = $this->url_param_pattern( self::PARAM_STORE_ID );
72
73 $this->register_get( "{$store_id}", 'get_logs', $store_id_args );
74 $this->register_delete( "{$store_id}", 'delete_logs', $store_id_args );
75
76 $this->register_get( "settings/{$store_id}", 'get_configuration', $store_id_args );
77 $this->register_post( "settings/{$store_id}", 'save_configuration', $conf_args );
78 }
79
80 /**
81 * GET logs.
82 *
83 * @param WP_REST_Request $request The request.
84 *
85 * @return WP_REST_Response|WP_Error
86 */
87 public function get_logs( WP_REST_Request $request ) {
88 $response = null;
89 try {
90 $response = $this->logger->get_content(
91 $request->get_param( self::PARAM_STORE_ID )
92 );
93 } catch ( \Throwable $e ) {
94 $response = new WP_Error( 'error', $e->getMessage() );
95 }
96 return \rest_ensure_response( $response );
97 }
98
99 /**
100 * DELETE logs.
101 *
102 * @param WP_REST_Request $request The request.
103 *
104 * @return WP_REST_Response|WP_Error
105 */
106 public function delete_logs( WP_REST_Request $request ) {
107 $response = null;
108 try {
109 $this->logger->clear(
110 $request->get_param( self::PARAM_STORE_ID )
111 );
112 $response = array();
113 } catch ( \Throwable $e ) {
114 $response = new WP_Error( 'error', $e->getMessage() );
115 }
116 return \rest_ensure_response( $response );
117 }
118
119 /**
120 * GET logs configuration.
121 *
122 * @return WP_REST_Response|WP_Error
123 */
124 public function get_configuration() {
125 $advanced_settings = $this->advanced_settings_service->getAdvancedSettings() ?? new AdvancedSettings( false, Logger::DEBUG );
126 return $this->build_response( new AdvancedSettingsResponse( $advanced_settings ) );
127 }
128
129 /**
130 * POST logs configuration.
131 *
132 * @param WP_REST_Request $request The request.
133 *
134 * @return WP_REST_Response|WP_Error
135 */
136 public function save_configuration( WP_REST_Request $request ) {
137 $response = null;
138 try {
139 $advanced_settings = new AdvancedSettings(
140 (bool) $request->get_param( self::PARAM_IS_ENABLED ),
141 (int) $request->get_param( self::PARAM_LOG_LEVEL )
142 );
143 $this->advanced_settings_service->setAdvancedSettings( $advanced_settings );
144 $response = new AdvancedSettingsResponse( $advanced_settings );
145 } catch ( \Throwable $e ) {
146 $response = new WP_Error( 'error', $e->getMessage() );
147 }
148 return \rest_ensure_response( $response );
149 }
150 }
151