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) { $ret = array(); $key = random_string(16); $secret = random_string(16); $name = trim(escape_tags($_REQUEST['application_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['scope']); $icon = trim($_REQUEST['logo_uri']); $r = q("INSERT INTO oauth_clients (client_id, client_secret, redirect_uri, grant_types, scope, user_id) VALUES ( '%s', '%s', '%s', '%s', '%s', '%s' ) ", dbesc($key), dbesc($secret), dbesc($redirect), dbesc($grant_types), dbesc($scope), dbesc((string) api_user()) ); $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(); }