#!/usr/bin/env perl
package ShrinkURL::Model::ShrunkenURL;
use strict;
use warnings;
use Number::RecordLocator;
my $generator = Number::RecordLocator->new;
use Jifty::DBI::Schema;
use Jifty::Record schema {
column url =>
is distinct,
is varchar(1000);
};
# shrunken URL is just an encoding of ID
sub shrunken {
my $self = shift;
Jifty->web->url(path => $generator->encode($self->id));
}
# helper function so we can easily change the internal representation of
# shrunken URLs if we desire
sub load_by_shrunken {
my $self = shift;
my $shrunken = shift;
my $id = $generator->decode($shrunken);
return $self->load($id);
}
# prepend http:// if the scheme is not already there
sub canonicalize_url {
my $self = shift;
my $url = shift;
$url = "http://$url"
unless $url =~ m{^\w+://};
return $url;
}
1;