App::$query_string ]; call_hooks('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(array('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); } function api_oauth_request_token($type) { try { $oauth = new ZotOAuth1(); $req = OAuth1Request::from_request(); logger('Req: ' . var_export($req,true),LOGGER_DATA); $r = $oauth->fetch_request_token($req); } catch(Exception $e) { logger('oauth_exception: ' . print_r($e->getMessage(),true)); echo 'error=' . OAuth1Util::urlencode_rfc3986($e->getMessage()); killme(); } echo $r; killme(); } function api_oauth_access_token($type) { try { $oauth = new ZotOAuth1(); $req = OAuth1Request::from_request(); $r = $oauth->fetch_access_token($req); } catch(Exception $e) { echo 'error=' . OAuth1Util::urlencode_rfc3986($e->getMessage()); killme(); } echo $r; killme(); }