18c2e361fc9c69e665ca8413655734145b7b2be1
[engit/Iron-Munger.git] / lib / IronMunger / StatsSaver.pm
1 use MooseX::Declare;
2
3 class IronMunger::StatsSaver {
4
5   use MooseX::Types::Path::Class qw(Dir);
6
7   has dir => (is => 'ro', isa => Dir, required => 1, coerce => 1);
8
9   method _image_symlink_target (Str $type, Str $level) {
10     $self->dir->subdir('badges')->subdir($type)->file("${level}.png");
11   }
12
13   method _image_symlink_from (Str $user, Str $type) {
14     $self->dir->subdir('mybadge')->subdir($type)->file("${user}.png");
15   }
16
17   method _write_image_symlink (Str $user, Str $type, Str $level) {
18     my ($from, $target) = (
19       $self->_image_symlink_from($user, $type),
20       $self->_image_symlink_target($type, $level),
21     );
22     symlink($target, $from)
23       or confess "Couldn't symlink ${from} to ${target}: $!";
24     return;
25   }
26 }
27
28 1;