App::$query_string ]; Hook::call('api_not_found', $x); header('HTTP/1.1 404 Not Found'); logger('API call not implemented: ' . App::$query_string . ' - ' . print_r($_REQUEST, true)); $r = 'not implemented'; switch ($type) { case 'xml': header('Content-Type: text/xml'); return '' . "\n" . $r; break; case "json": header('Content-Type: application/json'); return json_encode(['error' => 'not implemented']); break; case "rss": header('Content-Type: application/rss+xml'); return '' . "\n" . $r; break; case "atom": header('Content-Type: application/atom+xml'); return '' . "\n" . $r; break; } } /** * load api $templatename for $type and replace $data array */ function api_apply_template($templatename, $type, $data) { switch ($type) { case 'xml': if ($data) { foreach ($data as $k => $v) { $ret = arrtoxml(str_replace('$', '', $k), $v); } } break; case 'json': default: if ($data) { foreach ($data as $rv) { $ret = json_encode($rv); } } break; } return $ret; } function api_client_register($type) { logger('api_client_register: ' . print_r($_REQUEST, true)); $ret = []; $key = random_string(16); $secret = random_string(16); $name = trim(escape_tags($_REQUEST['client_name'])); if (! $name) { json_return_and_die($ret); } if (is_array($_REQUEST['redirect_uris'])) { $redirect = trim($_REQUEST['redirect_uris'][0]); } else { $redirect = trim($_REQUEST['redirect_uris']); } $grant_types = trim($_REQUEST['grant_types']); $scope = trim($_REQUEST['scopes']); $icon = trim($_REQUEST['logo_uri']); $r = q( "INSERT INTO oauth_clients (client_id, client_secret, redirect_uri, grant_types, scope, user_id, client_name) VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ", dbesc($key), dbesc($secret), dbesc($redirect), dbesc($grant_types), dbesc($scope), dbesc((string) api_user()), dbesc($name) ); $ret['client_id'] = $key; $ret['client_secret'] = $secret; $ret['expires_at'] = 0; json_return_and_die($ret); }