package WWW::JSON::Role::Authentication::Basic;
use Moo::Role;
use MIME::Base64;
requires 'authentication';
requires 'ua';


sub _validate_Basic {
    my ( $self, $auth ) = @_;
    for (qw/username password/) {
        die "Required parameter $_ missing for " . __PACKAGE__ . " authentication"
          unless exists( $auth->{$_} );
    }
}

sub _auth_Basic {
    my ( $self, $auth, $req ) = @_;
    $req->header( Authorization => 'Basic '
          . encode_base64( join( ':', @$auth{qw/username password/} ), '' ) );

}

1;