package Dancer::Serializer::Abstract; use strict; use warnings; use Carp; use base 'Dancer::Engine'; sub serialize { confess 'must be implemented' } sub deserialize { confess 'must be implemented' } # must be implemented to delcare if the serializer can be used or not # most of the time, just use : # Dancer::ModuleLoader->load('Your::Serializer::Deps'); sub loaded {0} # should be implemented, fallback to text/plain if not sub content_type {'text/plain'} # most serializer don't have to overload this one sub support_content_type { my ($self, $ct) = @_; return unless $ct; my @toks = split ';', $ct; $ct = lc($toks[0]); return $ct eq $self->content_type; } 1;