1 package CloudStore::Gearman::API;
2 use base qw(Gearman::Driver::Worker);
11 use Data::Dump qw(dump);
14 use lib '/srv/cloudstore/lib';
19 use base qw(Gearman::Driver::Worker);
21 sub prefix { '' } # don't prefix methods with package
24 my ( $self, $orig, $job_name ) = @_;
25 warn "# process_name $orig $job_name\n";
26 return "$orig ($job_name)";
30 my ($self,$work) = @_;
35 our $api = CloudStore::API->new;
37 =head2 create_user "user_id password quota"
41 sub create_user : Job : Decode(chomp_work) : MinProcesses(1) : MaxProcesses(1) {
42 my ( $self, $job, $work ) = @_;
44 warn "# create_user [$work]\n";
45 my ( $email, $password, $quota ) = split(/\s+/,$work,3);
46 $quota ||= 200000 && warn "default quota";
47 $api->create_user( $email, $password, $quota );
50 =head2 send_file ~u2001/from.txt#~u2003/dir/new to.txt
54 sub send_file : Job : Decode(chomp_work) : MaxProcesses(2) {
55 my ( $self, $job, $work ) = @_;
57 warn "# send_file [$work]\n";
59 my ( $from, $to ) = split(/#/,$work,2);
61 my $f_uid = $1 if $from =~ s{~(\w+)/}{};
62 my $t_uid = $1 if $to =~ s{~(\w+)/}{};
64 warn "send_file $f_uid $from -> $t_uid $to\n";
66 $api->send_file( $f_uid => $from, $t_uid => $to );
69 =head2 rename_file ~u2001/old.txt#new.txt
73 sub rename_file : Job : Decode(chomp_work) : MaxProcesses(2) {
74 my ( $self, $job, $work ) = @_;
76 warn "# rename_file [$work]\n";
78 my ( $from, $to ) = split(/#/,$work,2);
79 my $login = $1 if $from =~ s{~(\w+)/}{};
80 $api->rename_file( $login, $from, $to );
83 =head2 delete ~u2001/file_or_dir
87 sub delete : Job : Decode(chomp_work) : MaxProcesses(2) {
88 my ( $self, $job, $work ) = @_;
90 warn "# delete [$work]\n";
92 my $login = $1 if $work =~ s{~(\w+)}{};
93 $api->delete( $login, $work );
97 =head2 file_size ~u2001/foo.txt
101 sub file_size : Job : Decode(chomp_work) : MaxProcesses(40) {
102 my ( $self, $job, $work ) = @_;
104 warn "# file_size [$work]\n";
106 my $login = $1 if $work =~ s{~(\w+)}{};
107 $api->file_size( $login, $work );
110 =head2 user_usage u2001
114 sub user_usage : Job : Decode(chomp_work) : MaxProcesses(40) {
115 my ( $self, $job, $work ) = @_;
116 warn "# usage [$work]\n";
117 my $usage = $api->usage( $work );
118 return $usage->{_usage};