From 191ab04b2e7f75a14160ed89da2227ddf40405f0 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Sun, 9 May 2010 14:53:27 +0200 Subject: new role to handle error and set content type --- lib/presque/Role/Error.pm | 22 ++++++++++++++++++++++ lib/presque/Role/Response.pm | 26 ++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 lib/presque/Role/Error.pm create mode 100644 lib/presque/Role/Response.pm (limited to 'lib') diff --git a/lib/presque/Role/Error.pm b/lib/presque/Role/Error.pm new file mode 100644 index 0000000..8f95776 --- /dev/null +++ b/lib/presque/Role/Error.pm @@ -0,0 +1,22 @@ +package presque::Role::Error; + +use Moose::Role; + +sub http_error { + my ( $self, $msg, $code ) = @_; + $self->response->code( $code || 400 ); + $self->finish( JSON::encode_json { error => $msg } ); +} + +sub http_error_queue { + my $self = shift; + $self->http_error( 'queue name is missing', 404 ); +} + +sub http_error_content_type { + my $self = shift; + $self->http_error('content-type must be set to application/json'); +} + +1; + diff --git a/lib/presque/Role/Response.pm b/lib/presque/Role/Response.pm new file mode 100644 index 0000000..4f0960f --- /dev/null +++ b/lib/presque/Role/Response.pm @@ -0,0 +1,26 @@ +package presque::Role::Response; + +use Moose::Role; + +before get => sub { + (shift)->_set_response_content_type; +}; + +before put => sub { + (shift)->_set_response_content_type; +}; + +before post => sub { + (shift)->_set_response_content_type; +}; + +before delete => sub { + (shift)->_set_response_content_type; +}; + +sub _set_response_content_type { + my $self = shift; + $self->response->header('Content-Type' => 'application/json'); +} + +1; -- cgit v1.2.3