mirror of
https://github.com/dwaxweiler/connector-mobilizon
synced 2025-06-05 21:59:25 +02:00
move requests to backend (#18)
This commit is contained in:
53
source/includes/Api.php
Normal file
53
source/includes/Api.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
namespace MobilizonConnector;
|
||||
|
||||
class Api {
|
||||
public static function init() {
|
||||
add_action('rest_api_init', 'MobilizonConnector\Api::init_api');
|
||||
}
|
||||
|
||||
public static function init_api() {
|
||||
register_rest_route(
|
||||
NAME . '/v1',
|
||||
'/events',
|
||||
[
|
||||
'methods' => 'GET',
|
||||
'callback' => 'MobilizonConnector\Api::get_events',
|
||||
'args' => [
|
||||
'eventsCount' => [
|
||||
'required' => true,
|
||||
'validate_callback' => function($param, $request, $key) {
|
||||
return is_numeric($param) && $param > 0;
|
||||
}
|
||||
],
|
||||
'groupName' => [
|
||||
'validate_callback' => function($param, $request, $key) {
|
||||
return !is_numeric($param);
|
||||
}
|
||||
]
|
||||
],
|
||||
'permission_callback' => '__return_true',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function get_events($request) {
|
||||
$eventsCount = $request['eventsCount'];
|
||||
$groupName = isset($request['groupName']) ? $request['groupName'] : '';
|
||||
|
||||
$url = Settings::getUrl();
|
||||
|
||||
try {
|
||||
if ($groupName) {
|
||||
$events = GraphQlClient::get_upcoming_events_by_group_name($url, (int) $eventsCount, $groupName);
|
||||
} else {
|
||||
$events = GraphQlClient::get_upcoming_events($url, (int) $eventsCount);
|
||||
}
|
||||
return $events;
|
||||
} catch (GeneralException $e) {
|
||||
return new \WP_Error('events_not_loading', 'The events could not be loaded!', array('status' => 500));
|
||||
} catch (GroupNotFoundException $e) {
|
||||
return new \WP_Error('group_not_found', sprintf('The group "%s" could not be found!', $groupName), array('status' => 404));
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user