File: /home/slfopp7cb1df/www/shaneconrad.me/wp-content/plugins/embedpress/EmbedPress/RestAPI.php
<?php
namespace EmbedPress;
use EmbedPress\Includes\Classes\Helper;
use Embera\Embera;
use WP_Error as WP_ErrorAlias;
use WP_REST_Request;
use WP_REST_Response;
(defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
/**
* Entity responsible for maintaining and registering all hooks that power the plugin.
*
* @package EmbedPress
* @author EmbedPress <help@embedpress.com>
* @copyright Copyright (C) 2023 WPDeveloper. All rights reserved.
* @license GPLv3 or later
* @since 1.0.0
*/
class RestAPI
{
/**
* @param WP_REST_Request $request
*
* @return WP_REST_Response | WP_ErrorAlias
*/
public static function oembed($request)
{
$url = esc_url_raw($request->get_param('url'));
$playlist_id = $request->get_param( 'list');
if ( !empty( $playlist_id) ) {
$url .= "&list=$playlist_id";
}
$atts = $request->get_params();
if (empty($url)) {
return new WP_ErrorAlias('embedpress_invalid_url', 'Invalid Embed URL', ['status' => 404]);
}
$atts = Helper::removeQuote($atts);
// Map Meetup-specific Gutenberg attributes to shortcode attributes
if (!empty($url) && strpos($url, 'meetup.com') !== false) {
if (isset($atts['meetupOrderBy'])) {
$atts['orderby'] = $atts['meetupOrderBy'];
}
if (isset($atts['meetupOrder'])) {
$atts['order'] = $atts['meetupOrder'];
}
if (isset($atts['meetupPerPage'])) {
$atts['per_page'] = $atts['meetupPerPage'];
}
if (isset($atts['meetupEnablePagination'])) {
$atts['enable_pagination'] = $atts['meetupEnablePagination'];
}
if (isset($atts['meetupTimezone'])) {
$atts['timezone'] = $atts['meetupTimezone'];
}
if (isset($atts['meetupDateFormat'])) {
$atts['date_format'] = $atts['meetupDateFormat'];
}
if (isset($atts['meetupTimeFormat'])) {
$atts['time_format'] = $atts['meetupTimeFormat'];
}
}
$urlInfo = Shortcode::parseContent( $url, true, $atts);
if (empty($urlInfo)) {
return new WP_ErrorAlias('embedpress_invalid_url', 'Invalid Embed URL', ['status' => 404]);
}
return new WP_REST_Response($urlInfo, 200);
}
}