PluginProbe
seQura / 3.2.0
seQura v3.2.0
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 3.2.0, at src/Controllers/Rest/class-log-rest-controller.php

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