AnySan-Provider-Slack
view release on metacpan or search on metacpan
lib/AnySan/Provider/Slack.pm view on Meta::CPAN
$rtm->on('message' => sub {
my ($rtm, $message) = @_;
my $metadata = $self->metadata or return;
if ($message->{subtype}) {
my $filter = $self->{config}{subtypes} || [];
return unless grep { $_ eq 'all' || $_ eq $message->{subtype} } @$filter;
}
# search user nickname
my $nickname = '';
my $user_id = encode_utf8($message->{user} || '');
my $user = $self->user($user_id);
my $bot = $self->bot($user_id);
$nickname = $user->{name} if $user;
$nickname = $bot->{name} if $bot;
my $receive; $receive = AnySan::Receive->new(
provider => 'slack',
event => 'message',
message => encode_utf8($message->{text} || ''),
nickname => encode_utf8($metadata->{self}{name} || ''),
from_nickname => $nickname,
attribute => {
channel => $message->{channel},
subtype => $message->{subtype},
user => $user,
bot => $bot,
},
cb => sub { $self->event_callback($receive, @_) },
);
AnySan->broadcast_message($receive);
lib/AnySan/Provider/Slack.pm view on Meta::CPAN
], sub {});
}
sub _call {
my ($self, $method, $params, $cb) = @_;
my $req = POST "https://slack.com/api/$method", [
token => $self->{config}{token},
@$params,
];
my %headers = map { $_ => $req->header($_), } $req->headers->header_field_names;
my $jd = $self->{json_driver} ||= JSON->new->utf8;
my $r;
$r = http_post $req->uri, $req->content, headers => \%headers, sub {
my $body = shift;
my $res = $jd->decode($body);
$cb->($res);
undef $r;
};
}
1;
( run in 0.667 second using v1.01-cache-2.11-cpan-49f99fa48dc )