diff options
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; |