From 49d6605377fa27c922735d2aa43f5acc221a7b43 Mon Sep 17 00:00:00 2001 From: ken restivo Date: Sun, 8 Nov 2015 20:50:36 -0800 Subject: First pass at endpoints for exporting users and channels in bulk as admin. --- include/api.php | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/include/api.php b/include/api.php index b51bcc5f0..875bf121f 100644 --- a/include/api.php +++ b/include/api.php @@ -2416,6 +2416,96 @@ logger('Req: ' . var_export($req,true)); api_register_func('api/oauth/request_token', 'api_oauth_request_token', false); api_register_func('api/oauth/access_token', 'api_oauth_access_token', false); + + +function api_export_users(&$a,$type) { + + if (! is_site_admin()){ + header('HTTP/1.0 401 Unauthorized'); + die('Only admin accounts may use this endpoint.'); + } + + $r = q("SELECT * FROM account"); + + // TODO: paginating! + + $ret = array(); + foreach($r as $u){ + $ret[] = $u; + } + + json_return_and_die(array('status' => 'OK', + 'users' => $u)); +} +api_register_func('api/export/users','api_export_users', true); + + + +function api_export_channel_hashes(&$a, $type) { + + if (! is_site_admin()){ + header('HTTP/1.0 401 Unauthorized'); + die('Only admin accounts may use this endpoint.'); + } + + if( $_REQUEST['account_id'] == ''){ + header('HTTP/1.0 422 Unprocessable Entity'); + die('Must supply account_id parameter.'); + + } + + $c = q("select * from channel where channel_account_id = '%d'", + intval($_REQUEST['account_id'])); + + if(! $c){ + header('HTTP/1.0 404 Not Found'); + die('No such account_id '. $_REQUEST['account_id']); + + } + + $ret = array(); + foreach ($c as $r){ + $ret[] = $r['channel_hash']; + } + json_return_and_die(array('status' => 'OK', + 'channel_hashes' => $ret)); +} +api_register_func('api/export/channels','api_export_channel_hashes', true); + + + + +function api_export_identity(&$a, $type) { + + if (! is_site_admin()){ + header('HTTP/1.0 401 Unauthorized'); + die('Only admin accounts may use this endpoint.'); + } + + if( $_REQUEST['channel_hash'] == ''){ + header('HTTP/1.0 422 Unprocessable Entity'); + die('Must supply channel_hash parameter.'); + + } + + require_once('include/identity.php'); + + $c = q("select channel_id from channel where channel_hash = '%s' LIMIT 1", + dbesc($_REQUEST['channel_hash'])); + + if(! $c){ + header('HTTP/1.0 404 Not Found'); + die('No such channel '. $_REQUEST['channel_hash']); + + } + json_return_and_die( + identity_basic_export($c[0]['channel_id'], + (($_REQUEST['posts']) ? intval($_REQUEST['posts']) : 0 ))); +} +api_register_func('api/export/identity','api_export_identity', true); + + + /* Not implemented by now: statuses/retweets_of_me -- cgit v1.2.3