From 00a6f3d01510e01a5dcc0999a50fba7bafbcd5e1 Mon Sep 17 00:00:00 2001 From: zach Date: Sun, 20 Jul 2008 00:47:56 -0400 Subject: Twitter-compatible API: /account/update_location implemented darcs-hash:20080720044756-ca946-2e0823506b352d8364f84b77af644b8fc7f1a00d.gz --- actions/twitapiaccount.php | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) (limited to 'actions/twitapiaccount.php') diff --git a/actions/twitapiaccount.php b/actions/twitapiaccount.php index 0198671e7..3a0fd8544 100644 --- a/actions/twitapiaccount.php +++ b/actions/twitapiaccount.php @@ -46,10 +46,48 @@ class TwitapiaccountAction extends TwitterapiAction { function update_location($args, $apidata) { parent::handle($args); - common_server_error("API method under construction.", $code=501); + + $location = trim($this->arg('location')); + + if (!is_null($location) && strlen($location) > 255) { + + // XXX: Twitter just truncates and runs with it. + header('HTTP/1.1 406 Not Acceptable'); + print "That's too long. Max notice size is 255 chars.\n"; + exit(); + } + + $user = $apidata['user']; + $profile = $user->getProfile(); + + if (!$profile) { + common_server_error(_('User has no profile.')); + exit(); + } + + $orig_profile = clone($profile); + $profile->location = $location; + + common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__); + common_debug('New profile: ' . common_log_objstring($profile), __FILE__); + + $result = $profile->update($orig_profile); + + if (!$result) { + common_log_db_error($profile, 'UPDATE', __FILE__); + common_server_error(_('Couldn\'t save profile.')); + exit(); + } + + common_broadcast_profile($profile); + + $apidata['api_arg'] = $user->id; + $this->show($args, $apidata); + exit(); } - + + function update_delivery_device($args, $apidata) { parent::handle($args); common_server_error("API method under construction.", $code=501); -- cgit v1.2.3-54-g00ecf