Net::FluidDB::Permission - FluidDB permissions


Net-FluidDB documentation Contained in the Net-FluidDB distribution.

Index


Code Index:

NAME

Top

Net::FluidDB::Permission - FluidDB permissions

SYNOPSIS

Top

 use Net::FluidDB::Permission;

 # get
 $permission = Net::FluidDB::Permission->get($fdb, $category, $path, $action);
 $permission->policy;
 $permission->exceptions;

 # update
 $permission->policy('closed');
 $permission->exceptions($exceptions);
 $permission->update;

DESCRIPTION

Top

Net::FluidDB::Permission models FluidDB permissions.

USAGE

Top

Inheritance

Net::FluidDB::Permission is a subclass of Net::FluidDB::ACL.

Class methods

Net::FluidDB::Permission->get($fdb, $category, $path, $action)

Retrieves the permission on action $action, for the category $category and path $path.

Net::FluidDB provides a convenience shortcut for this method.

Instance Methods

$tag->update

Updates the permission in FluidDB.

$tag->category

Returns the category the permission is about.

$tag->path

Returns the path of the category the permission is about.

$tag->action

Returns the action the permission is about.

FLUIDDB DOCUMENTATION

Top

FluidDB high-level description

http://doc.fluidinfo.com/fluidDB/permissions.html

FluidDB API documentation

http://doc.fluidinfo.com/fluidDB/api/http.html#authentication-and-authorization

FluidDB API specification

http://api.fluidinfo.com/fluidDB/api/*/permissions/*

AUTHOR

Top

Xavier Noria (FXN), <fxn@cpan.org>

COPYRIGHT AND LICENSE

Top


Net-FluidDB documentation Contained in the Net-FluidDB distribution.

package Net::FluidDB::Permission;
use Moose;
extends 'Net::FluidDB::ACL';

has category => (is => 'ro', isa => 'Str');
has path     => (is => 'ro', isa => 'Str');
has action   => (is => 'ro', isa => 'Str');

sub get {
    my ($class, $fdb, $category, $path, $action) = @_;

    $fdb->get(
        path       => $class->abs_path('permissions', $category, $path),
        query      => { action => $action },
        headers    => $fdb->accept_header_for_json,
        on_success => sub {
            my $response = shift;
            my $h = $class->json->decode($response->content);
            $class->new(
                fdb      => $fdb,
                category => $category,
                path     => $path,
                action   => $action,
                %$h
            );
        }
    );
}

sub update {
    my $self = shift;

    my $payload = $self->json->encode({policy => $self->policy, exceptions => $self->exceptions});
    $self->fdb->put(
        path    => $self->abs_path('permissions', $self->category, $self->path),
        query   => { action => $self->action },
        headers => $self->fdb->headers_for_json,
        payload => $payload
    );
}

no Moose;
__PACKAGE__->meta->make_immutable;

1;

__END__