}
sub user_dir {
- my ( $self,$user, $dir ) = @_;
+ my ( $self, $user, $dir ) = @_;
$user = $self->user_info($user) unless ref $user eq 'HASH';
my $path;
if ( exists $user->{dir} ) {
sub usage {
my ( $self, $user ) = @_;
$user = $self->user_info($user) unless ref $user eq 'HASH';
+
+ my $usage_path = $user->{dir} . '/.meta/files.usage';
+ if ( -e $usage_path ) {
+ warn "# usage $usage_path missing";
+ $self->list_files($user);
+ }
+
+ open(my $fh, '<', $usage_path);
+ my $size = <$fh>;
+ chomp $size;
+
+ warn "# usage $user->{login} usage: $size\n";
+ return $size;
+
+=for slow and broken
+
my $path = $self->user_dir( $user => 'usage');
my $sum;
open(my $fh, '<', $path);
$sum->{_quota} = $quota;
warn "## usage ",dump($user, $sum), $/;
return $sum;
+
+=cut
+
}
sub send_file {
$user = $self->user_info($user) unless ref $user eq 'HASH';
+ die "no dir for ",dump($user) unless exists $user->{dir};
+
my $files = $user->{dir} . '/.meta/files';
if ( -e $files && -s $files > 0) {
local $/ = undef;
return $list;
}
- my $path = $user->{dir};
- open(my $pipe, '-|', qq|find -L $path -printf "%y %s %p\n"|);
+ my $dir = $user->{dir};
+ open(my $pipe, '-|', qq|find -L $dir -printf "%y %s %p\n"|);
open(my $fh, '>', "$files.new");
my $total_usage = 0;
my $list_txt;
while(<$pipe>) {
chomp;
my ( $type, $size, $name ) = split(/\s/, $_);
- $name =~ s{$path}{./};
+ $name =~ s{$dir}{./};
$name =~ s{//+}{/}g;
my $line = "$type $size $name\n";
print $fh $line;
close($usage);
rename "$files.usage.new", "$files.usage";
- warn "# list_files $path usage: $total_usage\n";
+ warn "# list_files $dir usage: $total_usage\n";
return $list_txt;
}
sub user_usage : Job : Decode(chomp_work) : MaxProcesses(40) {
my ( $self, $job, $work ) = @_;
- warn "# usage [$work]\n";
- my $usage = $api->usage( $work );
- return $usage->{_usage};
+ warn "# user_usage [$work]\n";
+# my $usage = $api->usage( $work );
+# return $usage->{_usage};
+ $api->usage($work);
+}
+
+=head2 list_files ~u2001/
+
+FIXME: path is not supported
+
+=cut
+
+sub list_files : Job : Decode(chomp_work) : MaxProcesses(10) {
+ my ( $self, $job, $work ) = @_;
+ warn "# list_files [$work]\n";
+ my $login = $1 if $work =~ s{~(\w+)}{};
+ $api->list_files($login);
}
1;