--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Dump of configuration variables
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category API
+ * @package GNUsocial
+ * @author Evan Prodromou <evan@status.net>
+ * @author Zach Copley <zach@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://www.gnu.org/software/social/
+ */
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+/**
+ * Gives a full dump of configuration variables for this instance
+ * of GNU social, minus variables that may be security-sensitive (like
+ * passwords).
+ * URL: https://example.com/api/gnusocial/config.(xml|json)
+ * Formats: xml, json
+ *
+ * @category API
+ * @package GNUsocial
+ * @author Evan Prodromou <evan@status.net>
+ * @author Zach Copley <zach@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://www.gnu.org/software/social/
+ */
+class ApiGNUsocialConfigAction extends ApiAction
+{
+ var $keys = array(
+ 'site' => array('name', 'server', 'theme', 'path', 'logo', 'fancy', 'language',
+ 'email', 'broughtby', 'broughtbyurl', 'timezone', 'closed',
+ 'inviteonly', 'private', 'textlimit', 'ssl', 'sslserver'),
+ 'license' => array('type', 'owner', 'url', 'title', 'image'),
+ 'nickname' => array('featured'),
+ 'profile' => array('biolimit'),
+ 'group' => array('desclimit'),
+ 'notice' => array('contentlimit'),
+ 'throttle' => array('enabled', 'count', 'timespan'),
+ 'xmpp' => array('enabled', 'server', 'port', 'user'),
+ 'integration' => array('source'),
+ 'attachments' => array('uploads', 'file_quota'),
+ 'url' => array('maxurllength', 'maxnoticelength'),
+ );
+
+ protected function handle()
+ {
+ parent::handle();
+
+ switch ($this->format) {
+ case 'xml':
+ $this->initDocument('xml');
+ $this->elementStart('config');
+
+ // XXX: check that all sections and settings are legal XML elements
+
+ foreach ($this->keys as $section => $settings) {
+ $this->elementStart($section);
+ foreach ($settings as $setting) {
+ $value = $this->setting($section, $setting);
+ if (is_array($value)) {
+ $value = implode(',', $value);
+ } else if ($value === false || $value == '0') {
+ $value = 'false';
+ } else if ($value === true || $value == '1') {
+ $value = 'true';
+ }
+
+ // return theme logo if there's no site specific one
+ if (empty($value)) {
+ if ($section == 'site' && $setting == 'logo') {
+ $value = Theme::path('logo.png');
+ }
+ }
+
+ $this->element($setting, null, $value);
+ }
+ $this->elementEnd($section);
+ }
+ $this->elementEnd('config');
+ $this->endDocument('xml');
+ break;
+ case 'json':
+ $result = array();
+ foreach ($this->keys as $section => $settings) {
+ $result[$section] = array();
+ foreach ($settings as $setting) {
+ $result[$section][$setting]
+ = $this->setting($section, $setting);
+ }
+ }
+ $this->initDocument('json');
+ $this->showJsonObjects($result);
+ $this->endDocument('json');
+ break;
+ default:
+ $this->clientError(
+ // TRANS: Client error displayed when coming across a non-supported API method.
+ _('API method not found.'),
+ 404,
+ $this->format
+ );
+ break;
+ }
+ }
+
+ function setting($section, $key) {
+ $result = common_config($section, $key);
+ if ($key == 'file_quota') {
+ // hack: adjust for the live upload limit
+ if (common_config($section, 'uploads')) {
+ $max = ImageFile::maxFileSizeInt();
+ } else {
+ $max = 0;
+ }
+ return min($result, $max);
+ }
+ return $result;
+ }
+
+ /**
+ * Return true if read only.
+ *
+ * MAY override
+ *
+ * @param array $args other arguments
+ *
+ * @return boolean is read only action?
+ */
+ function isReadOnly($args)
+ {
+ return true;
+ }
+}
--- /dev/null
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * A version stamp for the API
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category API
+ * @package GNUsocial
+ * @author Evan Prodromou <evan@status.net>
+ * @author Zach Copley <zach@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://www.gnu.org/software/social/
+ */
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+/**
+ * Returns a version number for this version of GNU social, which
+ * should make things a bit easier for upgrades.
+ * URL: http://identi.ca/api/statusnet/version.(xml|json)
+ * Formats: xml, js
+ *
+ * @category API
+ * @package GNUsocial
+ * @author Evan Prodromou <evan@status.net>
+ * @author Zach Copley <zach@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://www.gnu.org/software/social/
+ */
+class ApiGNUsocialVersionAction extends ApiPrivateAuthAction
+{
+ protected function handle()
+ {
+ parent::handle();
+
+ switch ($this->format) {
+ case 'xml':
+ $this->initDocument('xml');
+ $this->element('version', null, STATUSNET_VERSION);
+ $this->endDocument('xml');
+ break;
+ case 'json':
+ $this->initDocument('json');
+ print '"'.STATUSNET_VERSION.'"';
+ $this->endDocument('json');
+ break;
+ default:
+ $this->clientError(
+ // TRANS: Client error displayed when coming across a non-supported API method.
+ _('API method not found.'),
+ 404,
+ $this->format
+ );
+ break;
+ }
+ }
+
+ /**
+ * Return true if read only.
+ *
+ * MAY override
+ *
+ * @param array $args other arguments
+ *
+ * @return boolean is read only action?
+ */
+ function isReadOnly($args)
+ {
+ return true;
+ }
+}
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * Dump of configuration variables
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category API
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @author Zach Copley <zach@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-/**
- * Gives a full dump of configuration variables for this instance
- * of StatusNet, minus variables that may be security-sensitive (like
- * passwords).
- * URL: http://identi.ca/api/statusnet/config.(xml|json)
- * Formats: xml, json
- *
- * @category API
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @author Zach Copley <zach@status.net>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-class ApiStatusnetConfigAction extends ApiAction
-{
- var $keys = array(
- 'site' => array('name', 'server', 'theme', 'path', 'logo', 'fancy', 'language',
- 'email', 'broughtby', 'broughtbyurl', 'timezone', 'closed',
- 'inviteonly', 'private', 'textlimit', 'ssl', 'sslserver'),
- 'license' => array('type', 'owner', 'url', 'title', 'image'),
- 'nickname' => array('featured'),
- 'profile' => array('biolimit'),
- 'group' => array('desclimit'),
- 'notice' => array('contentlimit'),
- 'throttle' => array('enabled', 'count', 'timespan'),
- 'xmpp' => array('enabled', 'server', 'port', 'user'),
- 'integration' => array('source'),
- 'attachments' => array('uploads', 'file_quota'),
- 'url' => array('maxurllength', 'maxnoticelength'),
- );
-
- /**
- * Take arguments for running
- *
- * @param array $args $_REQUEST args
- *
- * @return boolean success flag
- */
- function prepare($args)
- {
- parent::prepare($args);
- return true;
- }
-
- /**
- * Handle the request
- *
- * @param array $args $_REQUEST data (unused)
- *
- * @return void
- */
- function handle($args)
- {
- parent::handle($args);
-
- switch ($this->format) {
- case 'xml':
- $this->initDocument('xml');
- $this->elementStart('config');
-
- // XXX: check that all sections and settings are legal XML elements
-
- foreach ($this->keys as $section => $settings) {
- $this->elementStart($section);
- foreach ($settings as $setting) {
- $value = $this->setting($section, $setting);
- if (is_array($value)) {
- $value = implode(',', $value);
- } else if ($value === false || $value == '0') {
- $value = 'false';
- } else if ($value === true || $value == '1') {
- $value = 'true';
- }
-
- // return theme logo if there's no site specific one
- if (empty($value)) {
- if ($section == 'site' && $setting == 'logo') {
- $value = Theme::path('logo.png');
- }
- }
-
- $this->element($setting, null, $value);
- }
- $this->elementEnd($section);
- }
- $this->elementEnd('config');
- $this->endDocument('xml');
- break;
- case 'json':
- $result = array();
- foreach ($this->keys as $section => $settings) {
- $result[$section] = array();
- foreach ($settings as $setting) {
- $result[$section][$setting]
- = $this->setting($section, $setting);
- }
- }
- $this->initDocument('json');
- $this->showJsonObjects($result);
- $this->endDocument('json');
- break;
- default:
- $this->clientError(
- // TRANS: Client error displayed when coming across a non-supported API method.
- _('API method not found.'),
- 404,
- $this->format
- );
- break;
- }
- }
-
- function setting($section, $key) {
- $result = common_config($section, $key);
- if ($key == 'file_quota') {
- // hack: adjust for the live upload limit
- if (common_config($section, 'uploads')) {
- $max = ImageFile::maxFileSizeInt();
- } else {
- $max = 0;
- }
- return min($result, $max);
- }
- return $result;
- }
-
- /**
- * Return true if read only.
- *
- * MAY override
- *
- * @param array $args other arguments
- *
- * @return boolean is read only action?
- */
- function isReadOnly($args)
- {
- return true;
- }
-}
+++ /dev/null
-<?php
-/**
- * StatusNet, the distributed open-source microblogging tool
- *
- * A version stamp for the API
- *
- * PHP version 5
- *
- * LICENCE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category API
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @author Zach Copley <zach@status.net>
- * @copyright 2009 StatusNet, Inc.
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-
-if (!defined('STATUSNET')) {
- exit(1);
-}
-
-/**
- * Returns a version number for this version of StatusNet, which
- * should make things a bit easier for upgrades.
- * URL: http://identi.ca/api/statusnet/version.(xml|json)
- * Formats: xml, js
- *
- * @category API
- * @package StatusNet
- * @author Evan Prodromou <evan@status.net>
- * @author Zach Copley <zach@status.net>
- * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link http://status.net/
- */
-class ApiStatusnetVersionAction extends ApiPrivateAuthAction
-{
- /**
- * Take arguments for running
- *
- * @param array $args $_REQUEST args
- *
- * @return boolean success flag
- *
- */
- function prepare($args)
- {
- parent::prepare($args);
- return true;
- }
-
- /**
- * Handle the request
- *
- * @param array $args $_REQUEST data (unused)
- *
- * @return void
- */
- function handle($args)
- {
- parent::handle($args);
-
- switch ($this->format) {
- case 'xml':
- $this->initDocument('xml');
- $this->element('version', null, STATUSNET_VERSION);
- $this->endDocument('xml');
- break;
- case 'json':
- $this->initDocument('json');
- print '"'.STATUSNET_VERSION.'"';
- $this->endDocument('json');
- break;
- default:
- $this->clientError(
- // TRANS: Client error displayed when coming across a non-supported API method.
- _('API method not found.'),
- 404,
- $this->format
- );
- break;
- }
- }
-
- /**
- * Return true if read only.
- *
- * MAY override
- *
- * @param array $args other arguments
- *
- * @return boolean is read only action?
- */
- function isReadOnly($args)
- {
- return true;
- }
-}
// TRANS: Client error 401.
$msg = _('API resource requires read-write access, ' .
'but you only have read access.');
- $this->clientError($msg, 401, $this->format);
- exit;
+ $this->clientError($msg, 401);
}
}
} catch (OAuthException $e) {
$this->logAuthFailure($e->getMessage());
common_log(LOG_WARNING, 'API OAuthException - ' . $e->getMessage());
- $this->clientError($e->getMessage(), 401, $this->format);
- exit;
+ $this->clientError($e->getMessage(), 401);
}
}
*
* @return boolean true
*/
- function requiresAuth()
+ public function requiresAuth()
{
return true;
}
// show error if the user clicks 'cancel'
// TRANS: Client error thrown when authentication fails becaus a user clicked "Cancel".
- $this->clientError(_('Could not authenticate you.'), 401, $this->format);
- exit;
+ $this->clientError(_('Could not authenticate you.'), 401);
} else {
);
$this->logAuthFailure($msg);
// TRANS: Client error thrown when authentication fails.
- $this->clientError(_('Could not authenticate you.'), 401, $this->format);
- exit;
+ $this->clientError(_('Could not authenticate you.'), 401);
}
}
}
*/
class ApiBareAuthAction extends ApiAuthAction
{
- /**
- * Take arguments for running
- *
- * @param array $args $_REQUEST args
- *
- * @return boolean success flag
- *
- */
- function prepare($args)
- {
- parent::prepare($args);
- return true;
- }
-
/**
* Does this API resource require authentication?
*
// statusnet
$m->connect('api/statusnet/version.:format',
- array('action' => 'ApiStatusnetVersion',
+ array('action' => 'ApiGNUsocialVersion',
'format' => '(xml|json)'));
$m->connect('api/statusnet/config.:format',
- array('action' => 'ApiStatusnetConfig',
+ array('action' => 'ApiGNUsocialConfig',
'format' => '(xml|json)'));
- // For older methods, we provide "laconica" base action
+ // For our current software name, we provide "gnusocial" base action
- $m->connect('api/laconica/version.:format',
- array('action' => 'ApiStatusnetVersion',
+ $m->connect('api/gnusocial/version.:format',
+ array('action' => 'ApiGNUsocialVersion',
'format' => '(xml|json)'));
- $m->connect('api/laconica/config.:format',
- array('action' => 'ApiStatusnetConfig',
+ $m->connect('api/gnusocial/config.:format',
+ array('action' => 'ApiGNUsocialConfig',
'format' => '(xml|json)'));
// Groups and tags are newer than 0.8.1 so no backward-compatibility