aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorken restivo <ken@restivo.org>2015-11-08 20:50:36 -0800
committerken restivo <ken@restivo.org>2015-11-08 20:50:36 -0800
commit49d6605377fa27c922735d2aa43f5acc221a7b43 (patch)
tree027151315f796bc448eaefe6b99078f557f7cfe8
parent11c8cabf28a23383979ceb33ec8264ae2b732f3e (diff)
downloadvolse-hubzilla-49d6605377fa27c922735d2aa43f5acc221a7b43.tar.gz
volse-hubzilla-49d6605377fa27c922735d2aa43f5acc221a7b43.tar.bz2
volse-hubzilla-49d6605377fa27c922735d2aa43f5acc221a7b43.zip
First pass at endpoints for exporting users and channels in bulk as admin.
-rw-r--r--include/api.php90
1 files changed, 90 insertions, 0 deletions
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