test send_file with spaces in both arguments
[cloudstore.git] / gearman / send_file.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 =head1 NAME
6
7 Filesystem Gearman Worker
8
9 =cut
10
11
12 use Data::Dump qw(dump);
13
14 use lib '/srv/cloudstore/lib';
15 use CloudStore::API;
16 use WarnColor;
17
18 my $api = CloudStore::API->new('s1');
19
20 use Gearman::Worker;
21 my $worker = Gearman::Worker->new;
22 $worker->job_servers('127.0.0.1:4730');
23
24 =head2 create_user
25
26 =cut
27
28 $worker->register_function( create_user => sub {
29         my ($job) = @_;
30
31         my $work = $job->arg;
32         chomp $work;
33         warn "# create_user [$work]\n";
34         my ( $email, $password, $quota ) = split(/\s+/,$work,3);
35         $quota ||= 200000 && warn "default quota";
36         $api->create_user( $email, $password, $quota );
37 });
38
39 =head2 send_file ~u2001/from.txt#~u2003/dir/new to.txt
40
41 =cut
42
43 $worker->register_function( send_file => sub {
44         my ($job) = @_;
45
46         my $work = $job->arg;
47         chomp $work;
48         warn "# send_file [$work]\n";
49
50         my ( $from, $to ) = split(/#/,$work,2);
51         
52         my $f_uid = $1 if $from =~ s{~(\w+)/}{};
53         my $t_uid = $1 if $to   =~ s{~(\w+)/}{};
54
55         warn "send_file $f_uid $from -> $t_uid $to\n";
56
57         $api->send_file( $f_uid => $from, $t_uid => $to );
58 });
59
60 =head2 rename_file ~u2001/old.txt#new.txt
61
62 =cut
63
64 $worker->register_function( rename_file => sub {
65         my ($job) = @_;
66
67         my $work = $job->arg;
68         chomp $work;
69         warn "# rename_file [$work]\n";
70
71         my ( $from, $to ) = split(/#/,$work,2);
72         my $login = $1 if $from =~ s{~(\w+)/}{};
73         $api->rename_file( $login, $from, $to );
74 });
75
76 =head2 delete ~u2001/file_or_dir
77
78 =cut
79
80 $worker->register_function( delete => sub {
81         my ($job) = @_;
82         my $work = $job->arg;
83         chomp $work;
84         warn "# delete [$work]\n";
85
86         my $login = $1 if $work =~ s{~(\w+)}{};
87         $api->delete( $login, $work );
88
89 });
90
91 =head2 file_size ~u2001/foo.txt
92
93 =cut
94
95 $worker->register_function( file_size => sub {
96         my ($job) = @_;
97         my $work = $job->arg;
98         chomp $work;
99         warn "# file_size [$work]\n";
100
101         my $login = $1 if $work =~ s{~(\w+)}{};
102         $api->file_size( $login, $work );
103 });
104
105 =head2 user_usage u2001
106
107 =cut
108
109 $worker->register_function( user_usage => sub {
110         my ($job) = @_;
111         my $work = $job->arg;
112         chomp $work;
113         warn "# usage [$work]\n";
114         my $usage = $api->usage( $work );
115         return $usage->{_usage};
116 });
117
118 warn "$0 pid $$ waitng for jobs\n";
119
120 $worker->work while 1;
121