/
Shrtr.pm
61 lines (48 loc) · 1.12 KB
/
Shrtr.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package Shrtr;
use Dancer ':syntax';
use Dancer::Plugin::DBIC;
our $VERSION = '0.1';
my $url_rs = schema->resultset('Url');
get '/' => sub {
template 'index';
};
get '/register' => sub {
template 'register';
};
get '/submit' => sub {
template 'submit';
};
post '/submit' => sub {
if (my $url = param('url') and my $code = param('code')) {
my $new_url = $url_rs->create({
url => $url,
code => $code,
});
template 'saved', { url => $new_url };
}
};
get qr{ /(\w+)\+ }x => sub {
my ($code) = splat;
if (my $url = $url_rs->find({code => $code})) {
template 'url', {
url => $url,
};
}
};
get qr{ /(\w+) }x => sub {
my ($code) = splat;
if (my $url = $url_rs->find({code => $code})) {
my $req = request;
$url->add_to_clicks({
user_agent => $req->user_agent,
referrer => $req->referer,
ip_address => $req->remote_address,
});
template 'frame', {
url => $url,
}, {
layout => undef,
}
};
};
true;