When importing a channel from another server, try to auto-discover the best available api path.
This commit is contained in:
parent
1a4a8f1ef7
commit
f56b4773cb
@ -78,22 +78,26 @@ class Import extends \Zotlabs\Web\Controller {
|
|||||||
$channelname = substr($old_address,0,strpos($old_address,'@'));
|
$channelname = substr($old_address,0,strpos($old_address,'@'));
|
||||||
$servername = substr($old_address,strpos($old_address,'@')+1);
|
$servername = substr($old_address,strpos($old_address,'@')+1);
|
||||||
|
|
||||||
$scheme = 'https://';
|
$api_path = probe_api_path($servername);
|
||||||
$api_path = '/api/red/channel/export/basic?f=&channel=' . $channelname;
|
if(! $api_path) {
|
||||||
|
notice( t('Unable to download data from old server') . EOL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$api_path .= 'channel/export/basic?f=&channel=' . $channelname;
|
||||||
if($import_posts)
|
if($import_posts)
|
||||||
$api_path .= '&posts=1';
|
$api_path .= '&posts=1';
|
||||||
$binary = false;
|
$binary = false;
|
||||||
$redirects = 0;
|
$redirects = 0;
|
||||||
$opts = array('http_auth' => $email . ':' . $password);
|
$opts = array('http_auth' => $email . ':' . $password);
|
||||||
$url = $scheme . $servername . $api_path;
|
$ret = z_fetch_url($api_path, $binary, $redirects, $opts);
|
||||||
$ret = z_fetch_url($url, $binary, $redirects, $opts);
|
if($ret['success']) {
|
||||||
if(! $ret['success'])
|
|
||||||
$ret = z_fetch_url('http://' . $servername . $api_path, $binary, $redirects, $opts);
|
|
||||||
if($ret['success'])
|
|
||||||
$data = $ret['body'];
|
$data = $ret['body'];
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
notice( t('Unable to download data from old server') . EOL);
|
notice( t('Unable to download data from old server') . EOL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(! $data) {
|
if(! $data) {
|
||||||
|
@ -2288,3 +2288,22 @@ function z_mail($params) {
|
|||||||
logger('notification: z_mail returns ' . $res, LOGGER_DEBUG);
|
logger('notification: z_mail returns ' . $res, LOGGER_DEBUG);
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// discover the best API path available for redmatrix/hubzilla servers
|
||||||
|
|
||||||
|
function probe_api_path($host) {
|
||||||
|
|
||||||
|
$schemes = ['https', 'http' ];
|
||||||
|
$paths = ['/api/z/1.0/version', '/api/red/version' ];
|
||||||
|
|
||||||
|
foreach($schemes as $scheme) {
|
||||||
|
foreach($paths as $path) {
|
||||||
|
$curpath = $scheme . '://' . $host . $path;
|
||||||
|
$x = z_fetch_url($curpath);
|
||||||
|
if($x['success'] && ! strlen($x['body'],'not implemented'))
|
||||||
|
return str_replace('version','',$curpath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
|
}
|
Reference in New Issue
Block a user