diff options
author | franck cuny <franck@lumberjaph.net> | 2010-05-09 14:53:27 +0200 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-05-09 14:53:27 +0200 |
commit | 191ab04b2e7f75a14160ed89da2227ddf40405f0 (patch) | |
tree | 339a79544d327778eba601a91bfe64912bb21154 /lib | |
parent | remove backend (diff) | |
download | presque-191ab04b2e7f75a14160ed89da2227ddf40405f0.tar.gz |
new role to handle error and set content type
Diffstat (limited to 'lib')
-rw-r--r-- | lib/presque/Role/Error.pm | 22 | ||||
-rw-r--r-- | lib/presque/Role/Response.pm | 26 |
2 files changed, 48 insertions, 0 deletions
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; |