Skip to content
Extraits de code Groupes Projets
Valider c1782a0a rédigé par Alexandre Morignot's avatar Alexandre Morignot
Parcourir les fichiers

Channel configuration

For now only allowed sites.
parent c6b6e78f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -6,6 +6,7 @@ use warnings;
use Module::Pluggable sub_name => 'sites', search_path => ['PlayBot::sites'], require => 1;
use PlayBot::utils::db;
use PlayBot::utils::db::chan;
use PlayBot::utils::print;
use PlayBot::commands::parser;
......@@ -18,6 +19,8 @@ sub parse {
my ($kernel, $user, $chan, $msg) = @_;
my ($nick,$mask) = split(/!/,$user);
my $chan_conf = PlayBot::utils::db::chan->new($chan);
my %content;
my $id;
my $dbh = PlayBot::utils::db::main_session();
......@@ -28,6 +31,8 @@ sub parse {
# parsing
foreach my $site (__PACKAGE__->sites)
{
not grep { $site eq "PlayBot::sites::$_" } @{ $chan_conf->sites } and next;
if (my @args = ($msg =~ $site->regex))
{
eval { %content = $site->get(@args) };
......
package PlayBot::utils::db::chan;
use strict;
use warnings;
use JSON;
use Moose;
use PlayBot::utils::db;
has 'name' => (is => 'ro', isa => 'Str');
has 'sites' => (is => 'ro', isa => 'ArrayRef[Str]', writer => '_set_sites');
around 'BUILDARGS' => sub
{
my ($orig, $class, $name) = @_;
not $name and die "missing arg 'name'";
my $dbh = PlayBot::utils::db::main_session;
my $sth = $dbh->prepare('
select sites
from playbot_config
where name = ?
');
$sth->execute($name);
my $sites;
my $row = $sth->fetch;
if (not $row)
{
$sites = ['dailymotion', 'mixcloud', 'soundcloud', 'youtube'];
$sth = $dbh->prepare('
insert into playbot_config (name, sites)
values (?, ?)
');
$sth->execute($name, encode_json($sites));
}
else
{
eval
{
$sites = decode_json($row->[0]);
};
$@ and $sites = [];
}
$dbh->commit;
return $class->$orig(
name => $name,
sites => $sites,
);
};
sub add_site
{
my $self = shift;
my $site = shift;
my @new_sites = (@{ $self->sites }, $site);
$self->_update_db(\@new_sites);
$self->_set_sites(\@new_sites);
}
sub remove_site
{
my $self = shift;
my $site = shift;
my @new_sites = grep { $_ ne $site } @{ $self->sites };
$self->_update_db(\@new_sites);
$self->_set_sites(\@new_sites);
}
sub _update_db
{
my $self = shift;
my $sites = shift;
my $dbh = PlayBot::utils::db::main_session;
my $sth = $dbh->prepare('
update playbot_config
set site = ?
');
$sth->execute(encode_json($sites));
$dbh->commit;
}
1;
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter