NAME

Metabase::Gateway - Manage Metabase fact submission

VERSION

version 1.002

SYNOPSIS

Creating a Gateway class

use strict;
use warnings;
package Custom::Metabase;

use Moose;
with 'Metabase::Gateway';

sub _build_fact_classes { ... }
sub _build_public_librarian { ... }
sub _build_private_librarian { ... }

Using a Gateway class

my $mg = Custom::Gateway->new( @args );
$mg->handle_submission( $fact_struct, $user_guid, $user_secret);

DESCRIPTION

The Metabase::Gateway role manages submissions to the Metabase. It provides fact and submitter validation or authorization before storing new facts in a Metabase.

USAGE

Required methods

The following builders must be provided by the class that applies this role. All three are lazy.

_build_fact_classes

This builder must return an array reference of Metabase::Fact subclasses.

_build_public_librarian

_build_private_librarian

These builders must return Metabase::Librarian objects.

Configurable attributes

disable_security

A boolean option. If true, submitter profiles will not be authenticated. (This is generally useful for testing, only.) Default is false.

allow_registration

A boolean option. If true, new submitter profiles and secrets may be stored. Default is true.

authentication_timeout

Number of seconds to cache user authentication data. Defaults to 600.

cache_options

A hash reference of constructor arguments for a CHI cache. Defaults to { driver => 'Memory' }.

Generated attributes

approved_types

Returns a list of approved fact types. Used for validating submitted facts.

A "type" is a class name with "::" converted to "-", so this attribute returns an arrayref of the fact_classes attribute converted to types.

fact_classes

Array reference containing a list of valid Metabase::Fact subclasses. Only facts from these classes may be added to the Metabase.

public_librarian

A librarian object to manage fact data.

private_librarian

A librarian object to manage user authentication data and possibly other facts that should be segregated from searchable and retrievable facts. This should not be the same as the public_librarian.

Methods provided

enqueue

$mg->enqueue( $fact );

Add a fact from a user (identified by a profile) via the public_librarian. Used internally by handle_submission.

handle_submission

$mg->handle_submission( $fact_struct, $user_guid, $user_secret);

Extract a fact a deserialized data structure and add it to the Metabase via the public_librarian. The fact is regenerated from the as_struct method.

handle_registration

$mg->handle_registration( $profile_struct, $secret_struct );

Extract a new user profile and secret from deserialized data structures and add them via the public_librarian and private_librarian, respectively.

AUTHORS

  • David Golden <dagolden@cpan.org>

  • Ricardo Signes <rjbs@cpan.org>

  • Leon Brocard <acme@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2013 by David Golden.

This is free software, licensed under:

The Apache License, Version 2.0, January 2004