Mojo-SlackRTM
view release on metacpan or search on metacpan
lib/Mojo/SlackRTM.pm view on Meta::CPAN
package Mojo::SlackRTM;
use Mojo::Base 'Mojo::EventEmitter';
use IO::Socket::SSL;
use Mojo::IOLoop;
use Mojo::JSON ();
use Mojo::Log;
use Mojo::UserAgent;
use Scalar::Util ();
use constant DEBUG => $ENV{MOJO_SLACKRTM_DEBUG};
our $VERSION = '0.04';
has ioloop => sub { Mojo::IOLoop->singleton };
has ua => sub { Mojo::UserAgent->new };
has log => sub { Mojo::Log->new };
has "token";
has "pinger";
has 'ws';
has 'auto_reconnect' => 1;
our $SLACK_URL = "https://slack.com/api";
sub _dump {
shift;
require Data::Dumper;
local $Data::Dumper::Sortkeys = 1;
local $Data::Dumper::Indent = 1;
local $Data::Dumper::Terse = 1;
my $dump = Data::Dumper::Dumper(@_);
if (-t STDOUT) {
warn " \e[33m$_\e[m\n" for split /\n/, $dump;
} else {
warn " $_\n" for split /\n/, $dump;
}
}
my $TX_ERROR = sub {
my $tx = shift;
return if $tx->success and $tx->res->json("/ok");
if ($tx->success) {
my $error = $tx->res->json("/error") || "Unknown error";
return $error;
} else {
my $error = $tx->error;
return $error->{code} ? "$error->{code} $error->{message}" : $error->{message};
}
};
sub metadata {
my $self = shift;
return $self->{_metadata} unless @_;
my $metadata = shift;
$self->{_metadata} = $metadata;
unless ($metadata) {
$self->{$_} = undef for qw(_users _channels);
return;
}
$self->{_users} = [
+{ map { ($_->{id}, $_->{name}) } @{$metadata->{users}} },
+{ map { ($_->{name}, $_->{id}) } @{$metadata->{users}} },
];
$self->{_channels} = [
( run in 1.885 second using v1.01-cache-2.11-cpan-39bf76dae61 )