summaryrefslogtreecommitdiff
path: root/modules/gallery
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gallery')
-rw-r--r--modules/gallery/helpers/gallery_rest.php28
-rw-r--r--modules/gallery/tests/Gallery_Rest_Helper_Test.php46
2 files changed, 30 insertions, 44 deletions
diff --git a/modules/gallery/helpers/gallery_rest.php b/modules/gallery/helpers/gallery_rest.php
index 827da122..5fd73a2e 100644
--- a/modules/gallery/helpers/gallery_rest.php
+++ b/modules/gallery/helpers/gallery_rest.php
@@ -17,25 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-
-// @todo Add logging
-
-// Validation questions
-//
-// We need to be able to properly validate anything we want to enter here. But all of our
-// validation currently happens at the controller / form level, and we're not using the same
-// controllers or forms.
-//
-// Possible solutions:
-// 1) Move validation into the model and use it both here and in the regular controllers. But
-// if we do that, how do we translate validation failures into a user-consumable output which
-// we need so that we can return proper error responses to form submissions?
-//
-// 2) Create some kind of validation helper that can validate every field. Wait, isn't this
-// just like #1 except in a helper instead of in the model?
-
class gallery_rest_Core {
-
/**
* For items that are collections, you can specify the following additional query parameters to
* query the collection. You can specify them in any combination.
@@ -90,7 +72,7 @@ class gallery_rest_Core {
$members = array();
foreach ($orm->find_all() as $child) {
- $members[] = url::abs_site("rest/gallery/" . $child->relative_url());
+ $members[] = rest::url("gallery", $child);
}
return array("resource" => $item->as_array(), "members" => $members);
@@ -114,7 +96,7 @@ class gallery_rest_Core {
}
$item->save();
- return array("url" => url::abs_site("/rest/gallery/" . $item->relative_url()));
+ return array("url" => rest::url("gallery", $item));
}
static function post($request) {
@@ -150,7 +132,7 @@ class gallery_rest_Core {
throw new Rest_Exception("Invalid type: $params->type", 400);
}
- return array("url" => url::abs_site("/rest/gallery/" . $item->relative_url()));
+ return array("url" => rest::url("gallery", $item));
}
static function delete($request) {
@@ -163,4 +145,8 @@ class gallery_rest_Core {
static function resolve($path) {
return url::get_item_from_uri($path);
}
+
+ static function url($item) {
+ return url::abs_site("rest/gallery/" . $item->relative_url());
+ }
}
diff --git a/modules/gallery/tests/Gallery_Rest_Helper_Test.php b/modules/gallery/tests/Gallery_Rest_Helper_Test.php
index 35fd0daf..dcd9a9db 100644
--- a/modules/gallery/tests/Gallery_Rest_Helper_Test.php
+++ b/modules/gallery/tests/Gallery_Rest_Helper_Test.php
@@ -28,7 +28,7 @@ class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
public function resolve_test() {
$album = test::random_album();
- $resolved = rest::resolve(rest::url("gallery", $album->relative_url()));
+ $resolved = rest::resolve(rest::url("gallery", $album));
$this->assert_equal($album->id, $resolved->id);
}
@@ -40,32 +40,32 @@ class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
$album1->reload();
// No scope is the same as "direct"
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
$request->params = new stdClass();
$this->assert_equal_array(
array("resource" => $album1->as_array(),
"members" => array(
- rest::url("gallery", $photo1->relative_url()),
- rest::url("gallery", $album2->relative_url()))),
+ rest::url("gallery", $photo1),
+ rest::url("gallery", $album2))),
gallery_rest::get($request));
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
$request->params->scope = "direct";
$this->assert_equal_array(
array("resource" => $album1->as_array(),
"members" => array(
- rest::url("gallery", $photo1->relative_url()),
- rest::url("gallery", $album2->relative_url()))),
+ rest::url("gallery", $photo1),
+ rest::url("gallery", $album2))),
gallery_rest::get($request));
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
$request->params->scope = "all";
$this->assert_equal_array(
array("resource" => $album1->as_array(),
"members" => array(
- rest::url("gallery", $photo1->relative_url()),
- rest::url("gallery", $album2->relative_url()),
- rest::url("gallery", $photo2->relative_url()))),
+ rest::url("gallery", $photo1),
+ rest::url("gallery", $album2),
+ rest::url("gallery", $photo2))),
gallery_rest::get($request));
}
@@ -77,12 +77,12 @@ class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
$photo2->save();
$album1->reload();
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
$request->params->name = "foo";
$this->assert_equal_array(
array("resource" => $album1->as_array(),
"members" => array(
- rest::url("gallery", $photo2->relative_url()))),
+ rest::url("gallery", $photo2))),
gallery_rest::get($request));
}
@@ -92,12 +92,12 @@ class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
$album2 = test::random_album($album1);
$album1->reload();
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
$request->params->type = "album";
$this->assert_equal_array(
array("resource" => $album1->as_array(),
"members" => array(
- rest::url("gallery", $album2->relative_url()))),
+ rest::url("gallery", $album2))),
gallery_rest::get($request));
}
@@ -105,11 +105,11 @@ class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
$album1 = test::random_album();
access::allow(identity::everybody(), "edit", $album1);
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
$request->params->title = "my new title";
$this->assert_equal_array(
- array("url" => rest::url("gallery", $album1->relative_url())),
+ array("url" => rest::url("gallery", $album1)),
gallery_rest::put($request));
$this->assert_equal("my new title", $album1->reload()->title);
}
@@ -118,7 +118,7 @@ class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
$album1 = test::random_album();
access::allow(identity::everybody(), "edit", $album1);
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
$request->params->title = "my new title";
$request->params->slug = "not url safe";
@@ -135,7 +135,7 @@ class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
$album1 = test::random_album();
access::allow(identity::everybody(), "edit", $album1);
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
$request->params->type = "album";
$request->params->name = "my album";
$request->params->title = "my album";
@@ -150,7 +150,7 @@ class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
$album1 = test::random_album();
access::allow(identity::everybody(), "edit", $album1);
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
$request->params->type = "album";
$request->params->name = "my album";
$request->params->title = "my album";
@@ -170,7 +170,7 @@ class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
$album1 = test::random_album();
access::allow(identity::everybody(), "edit", $album1);
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
$request->params->type = "photo";
$request->params->name = "my photo.jpg";
$request->file = MODPATH . "gallery/tests/test.jpg";
@@ -185,7 +185,7 @@ class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
$album1 = test::random_album();
access::allow(identity::everybody(), "edit", $album1);
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
gallery_rest::delete($request);
$album1->reload();
@@ -195,7 +195,7 @@ class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
public function delete_album_fails_without_permission_test() {
$album1 = test::random_album();
- $request->url = rest::url("gallery", $album1->relative_url());
+ $request->url = rest::url("gallery", $album1);
try {
gallery_rest::delete($request);
} catch (Exception $e) {