summaryrefslogtreecommitdiff
path: root/modules/rest/helpers
diff options
context:
space:
mode:
authorNathan Kinkade <nkinkade@nkinka.de>2010-08-19 23:29:35 +0000
committerNathan Kinkade <nkinkade@nkinka.de>2010-08-19 23:29:35 +0000
commit45b6d344b4a5431e7cf11fde5808c63bf7553676 (patch)
tree33a5bd2ee0124553c4d35f4152e607296479a551 /modules/rest/helpers
parentd1475ec40ebda6404baab45b5b2482c651e657f9 (diff)
parent21a0f832b66eaba902b09e2a88ece52c76e4a0c3 (diff)
Merge branch 'master' of git://github.com/gallery/gallery3
Diffstat (limited to 'modules/rest/helpers')
-rw-r--r--modules/rest/helpers/registry_rest.php30
-rw-r--r--modules/rest/helpers/rest.php40
-rw-r--r--modules/rest/helpers/rest_event.php9
3 files changed, 67 insertions, 12 deletions
diff --git a/modules/rest/helpers/registry_rest.php b/modules/rest/helpers/registry_rest.php
new file mode 100644
index 00000000..e9c8b955
--- /dev/null
+++ b/modules/rest/helpers/registry_rest.php
@@ -0,0 +1,30 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2010 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class registry_rest_Core {
+ static function get($request) {
+ $results = array();
+ foreach (module::active() as $module) {
+ foreach (glob(MODPATH . "{$module->name}/helpers/*_rest.php") as $filename) {
+ $results[] = str_replace("_rest.php", "", basename($filename));
+ }
+ }
+ return array_unique($results);
+ }
+}
diff --git a/modules/rest/helpers/rest.php b/modules/rest/helpers/rest.php
index 644779da..d5ed0452 100644
--- a/modules/rest/helpers/rest.php
+++ b/modules/rest/helpers/rest.php
@@ -24,8 +24,28 @@ class rest_Core {
Session::instance()->abort_save();
header("X-Gallery-API-Version: " . rest::API_VERSION);
- if (Input::instance()->get("output") == "html") {
- header("Content-type: text/html");
+ switch (Input::instance()->get("output", "json")) {
+ case "json":
+ json::reply($data);
+ break;
+
+ case "jsonp":
+ if (!($callback = Input::instance()->get("callback", ""))) {
+ throw new Rest_Exception(
+ "Bad Request", 400, array("errors" => array("callback" => "missing")));
+ }
+
+ if (preg_match('/^[$A-Za-z_][0-9A-Za-z_]*$/', $callback) == 1) {
+ header("Content-type: application/javascript; charset=UTF-8");
+ print "$callback(" . json_encode($data) . ")";
+ } else {
+ throw new Rest_Exception(
+ "Bad Request", 400, array("errors" => array("callback" => "invalid")));
+ }
+ break;
+
+ case "html":
+ header("Content-type: text/html; charset=UTF-8");
if ($data) {
$html = preg_replace(
"#([\w]+?://[\w]+[^ \'\"\n\r\t<]*)#ise", "'<a href=\"\\1\" >\\1</a>'",
@@ -34,8 +54,10 @@ class rest_Core {
$html = t("Empty response");
}
print "<pre>$html</pre>";
- } else {
- json::reply($data);
+ break;
+
+ default:
+ throw new Rest_Exception("Bad Request", 400);
}
}
@@ -65,6 +87,16 @@ class rest_Core {
identity::set_active_user($user);
}
+ static function reset_access_key() {
+ $key = ORM::factory("user_access_key")
+ ->where("user_id", "=", identity::active_user()->id)
+ ->find();
+ if ($key->loaded()) {
+ $key->delete();
+ }
+ return rest::access_key();
+ }
+
static function access_key() {
$key = ORM::factory("user_access_key")
->where("user_id", "=", identity::active_user()->id)
diff --git a/modules/rest/helpers/rest_event.php b/modules/rest/helpers/rest_event.php
index f23b9a58..d8c69e94 100644
--- a/modules/rest/helpers/rest_event.php
+++ b/modules/rest/helpers/rest_event.php
@@ -55,13 +55,6 @@ class rest_event {
}
/**
- * Called when user is editing their own form
- */
- static function user_edit_form($user, $form) {
- self::_get_access_key_form($user, $form);
- }
-
- /**
* Get the form fields for user edit
*/
static function _get_access_key_form($user, $form) {
@@ -104,6 +97,6 @@ class rest_event {
$key->save();
}
$view->rest_key = $key->access_key;
- $data->content[] = (object)array("title" => t("REST api"), "view" => $view);
+ $data->content[] = (object)array("title" => t("REST API"), "view" => $view);
}
}