- my ($self,$login) = @_;
- $login = $login->{login} if ref $login;
- my $user = $self->json_get( 'users', $login );
- $user->{usage} = $self->usage( $login );
- $user->{status} = $self->status( $login );
- warn "## user ",dump($user) if $ENV{DEBUG};
- return $user;
-}
-
-sub status {
- my ($self,$login,$message) = @_;
- $login = $login->{login} if ref $login;
- if ( $message ) {
- $self->{session}->set( "$login:status" => $message );
- return $message;
- } else {
- $self->{session}->get( "$login:status" );
- }
-}
-
-sub usage_decr {
- my ($self,$data) = @_;
- $self->{session}->decr( $data->{login} . ':usage' => $data->{size} );
-}
-
-sub usage_incr {
- my ($self,$data) = @_;
- $self->{session}->incr( $data->{login} . ':usage' => $data->{size} );
-}
-
-sub usage {
- my ($self,$login) = @_;
- $login = $login->{login} if ref $login;
- $self->{session}->get( $login . ':usage' );
-}
-
-sub couchdb {
- my $self = shift @_;
- my $fmt = shift @_;
- my $url = sprintf $fmt, @_;
-
- warn "# couchdb $url\n";
- if ( my $json = get $url ) {
- warn "## $url $json\n";
- my $r = decode_json $json;
- return $r;
- }
-}
-
-sub usage_init {
- my ($self,$login) = @_;
- $login = $login->{login} if ref $login;
-
- my $usage = 0;
-
- if ( my $r = $self->couchdb(
- 'http://localhost:5984/files/_design/files/_view/login_usage?group=true&connection_timeout=60000&limit=1&skip=0&start_key="%s"&end_key="%s"&stale=update_after'
- , $login
- , $login
- )) {
-
- $usage = $r->{rows}->[0]->{value};
- $usage = 0 unless defined $usage;
- }
-
- $self->{session}->set( $login . ':usage' => $usage );
-}
-
-sub _file_key {
- my $data = shift;
- #md5_base64( $data->{login} . '/' . $data->{file} );
- $data->{login} . ':' . $data->{file};
-}
-
-sub file_set {
- my ($self,$data) = @_;
- $self->json_set( 'files', _file_key($data), $data );
-}
-
-sub file_get {
- my ($self,$data) = @_;
- $self->json_get( 'files', _file_key($data) );