PluginProbe
seQura / 4.1.1
seQura v4.1.1
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 4.1.1, at src/Controllers/Rest/class-log-rest-controller.php

151 lines 3.8 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\WC\Services\Log\Interface_Logger_Service;
12 use SeQura\Core\Infrastructure\Utility\RegexProvider;
13 use WP_Error;
14 use WP_REST_Request;
15 use WP_REST_Response;
16
17 /**
18 * REST Log Controller
19 */
20 class Log_REST_Controller extends REST_Controller {
21
22 private const PARAM_IS_ENABLED = 'isEnabled';
23 private const PARAM_LOG_LEVEL = 'level';
24
25 /**
26 * Constructor.
27 *
28 * @param string $rest_namespace The namespace.
29 * @param Interface_Logger_Service $logger The logger service.
30 * @param RegexProvider $regex The regex provider.
31 */
32 public function __construct(
33 $rest_namespace,
34 Interface_Logger_Service $logger,
35 RegexProvider $regex
36 ) {
37 parent::__construct( $logger, $regex );
38 $this->namespace = $rest_namespace;
39 $this->rest_base = '/log';
40 }
41
42 /**
43 * Register the API endpoints.
44 *
45 * @return void
46 */
47 public function register_routes() {
48 $this->logger->log_debug( 'Hook executed', __FUNCTION__, __CLASS__ );
49 $store_id_args = array( self::PARAM_STORE_ID => $this->get_arg_string() );
50 $conf_args = array_merge(
51 $store_id_args,
52 array(
53 self::PARAM_IS_ENABLED => $this->get_arg_bool(),
54 self::PARAM_LOG_LEVEL => $this->get_arg_int(),
55 )
56 );
57 $store_id = $this->url_param_pattern( self::PARAM_STORE_ID );
58
59 $this->register_get( "{$store_id}", 'get_logs', $store_id_args );
60 $this->register_delete( "{$store_id}", 'delete_logs', $store_id_args );
61
62 $this->register_get( "settings/{$store_id}", 'get_configuration', $store_id_args );
63 $this->register_post( "settings/{$store_id}", 'save_configuration', $conf_args );
64 }
65
66 /**
67 * GET logs.
68 *
69 * @param WP_REST_Request $request The request.
70 *
71 * @return WP_REST_Response|WP_Error
72 */
73 public function get_logs( WP_REST_Request $request ) {
74 $response = null;
75 try {
76 $response = $this->logger->get_content(
77 $request->get_param( self::PARAM_STORE_ID )
78 );
79 } catch ( \Throwable $e ) {
80 $response = new WP_Error( 'error', $e->getMessage() );
81 }
82 return \rest_ensure_response( $response );
83 }
84
85 /**
86 * DELETE logs.
87 *
88 * @param WP_REST_Request $request The request.
89 *
90 * @return WP_REST_Response|WP_Error
91 */
92 public function delete_logs( WP_REST_Request $request ) {
93 $response = null;
94 try {
95 $this->logger->clear(
96 $request->get_param( self::PARAM_STORE_ID )
97 );
98 $response = array();
99 } catch ( \Throwable $e ) {
100 $response = new WP_Error( 'error', $e->getMessage() );
101 }
102 return \rest_ensure_response( $response );
103 }
104
105 /**
106 * GET logs configuration.
107 *
108 * @return WP_REST_Response|WP_Error
109 */
110 public function get_configuration() {
111 $response = null;
112 try {
113 $response = $this->get_config_response();
114 } catch ( \Throwable $e ) {
115 $response = new WP_Error( 'error', $e->getMessage() );
116 }
117 return \rest_ensure_response( $response );
118 }
119
120 /**
121 * POST logs configuration.
122 *
123 * @param WP_REST_Request $request The request.
124 *
125 * @return WP_REST_Response|WP_Error
126 */
127 public function save_configuration( WP_REST_Request $request ) {
128 $response = null;
129 try {
130 $this->logger->enable( $request->get_param( self::PARAM_IS_ENABLED ) );
131 $this->logger->set_min_log_level( $request->get_param( self::PARAM_LOG_LEVEL ) );
132 $response = $this->get_config_response();
133 } catch ( \Throwable $e ) {
134 $response = new WP_Error( 'error', $e->getMessage() );
135 }
136 return \rest_ensure_response( $response );
137 }
138
139 /**
140 * Make the logger configuration response.
141 *
142 * @return array<string, mixed>
143 */
144 private function get_config_response(): array {
145 return array(
146 self::PARAM_IS_ENABLED => $this->logger->is_enabled(),
147 self::PARAM_LOG_LEVEL => $this->logger->get_min_log_level(),
148 );
149 }
150 }
151