From 5638fc5fb60823544f1944bdf40705a19b7365f1 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Wed, 19 Nov 2008 04:20:35 +0000 Subject: Change the way that we do RESTful routing. 1) We now use __call() in REST_Controller to handle any requests to a controller that were not already handled. In the case of RESTful controllers, this should be the only entry point (although they're free to break the model and add other ones.. nothing stops them). This means that we can remove all the catch-all routes in routes.php which greatly simplifies it. 2) Move request_method() and output_format() out of REST_Controller and into the REST helper in core/helpers/rest.php 3) Experiment with letting the various subclasses check the output_format and deal with it themselves. This simplifies the API, but it might be a bad idea in that it might push too much work to the individual controllers. It's a balancing act, time will tell, I'm willing to change it back later. --- core/helpers/rest.php | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 core/helpers/rest.php (limited to 'core/helpers') diff --git a/core/helpers/rest.php b/core/helpers/rest.php new file mode 100644 index 00000000..154ef6f6 --- /dev/null +++ b/core/helpers/rest.php @@ -0,0 +1,55 @@ +post("_method", $input->get("_method"))) { + case "put": return "put"; + case "delete": return "delete"; + default: return "post"; + } + } + } + + /** + * Choose an output format based on what the client prefers to accept. + * @return string "html", "xml" or "json" + */ + public static function output_format() { + // Pick a format, but let it be overridden. + $input = Input::instance(); + return $input->get( + "_format", $input->post( + "_format", request::preferred_accept( + array("html", "xml", "json")))); + } +} -- cgit v1.2.3