This commit is contained in:
rodolfomartinez 2026-02-02 00:13:36 -05:00
parent 572552ff13
commit 847ed92c23
10 changed files with 1232 additions and 591 deletions

View file

@ -258,8 +258,7 @@ class MLF_Rest_Controller extends WP_REST_Controller {
*/
public function create_item($request) {
$font_name = sanitize_text_field($request->get_param('font_name'));
$weights = array_map('absint', (array) $request->get_param('weights'));
$styles = array_map('sanitize_text_field', (array) $request->get_param('styles'));
$include_italic = (bool) $request->get_param('include_italic');
// Validate font name
if (!preg_match('/^[a-zA-Z0-9\s\-]+$/', $font_name)) {
@ -278,43 +277,9 @@ class MLF_Rest_Controller extends WP_REST_Controller {
);
}
// Validate weights
$allowed_weights = [100, 200, 300, 400, 500, 600, 700, 800, 900];
$weights = array_intersect($weights, $allowed_weights);
if (empty($weights)) {
return new WP_Error(
'rest_invalid_param',
__('At least one valid weight is required.', 'maple-local-fonts'),
['status' => 400]
);
}
if (count($weights) > MLF_MAX_WEIGHTS_PER_FONT) {
return new WP_Error(
'rest_invalid_param',
__('Too many weights selected.', 'maple-local-fonts'),
['status' => 400]
);
}
// Validate styles
$allowed_styles = ['normal', 'italic'];
$styles = array_filter($styles, function($style) use ($allowed_styles) {
return in_array($style, $allowed_styles, true);
});
if (empty($styles)) {
return new WP_Error(
'rest_invalid_param',
__('At least one valid style is required.', 'maple-local-fonts'),
['status' => 400]
);
}
try {
$downloader = new MLF_Font_Downloader();
$download_result = $downloader->download($font_name, $weights, $styles);
$download_result = $downloader->download($font_name, $include_italic);
if (is_wp_error($download_result)) {
return new WP_Error(
@ -455,23 +420,10 @@ class MLF_Rest_Controller extends WP_REST_Controller {
'required' => true,
'sanitize_callback' => 'sanitize_text_field',
],
'weights' => [
'description' => __('Array of font weights to download.', 'maple-local-fonts'),
'type' => 'array',
'required' => true,
'items' => [
'type' => 'integer',
'enum' => [100, 200, 300, 400, 500, 600, 700, 800, 900],
],
],
'styles' => [
'description' => __('Array of font styles to download.', 'maple-local-fonts'),
'type' => 'array',
'required' => true,
'items' => [
'type' => 'string',
'enum' => ['normal', 'italic'],
],
'include_italic' => [
'description' => __('Whether to include italic styles.', 'maple-local-fonts'),
'type' => 'boolean',
'default' => true,
],
];
}