123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package Cpanel::iContact::Provider::Slack;
- use strict;
- use warnings;
- use parent 'Cpanel::iContact::Provider';
- use Try::Tiny;
- =encoding utf-8
- =head1 NAME
- Cpanel::iContact::Provider::Slack - Backend for the Slack iContact module
- =head1 SYNOPSIS
- use Cpanel::iContact::Provider::Slack;
- my $notifier = Cpanel::iContact::Provider::Slack->new();
- $notifier->send();
- =head1 DESCRIPTION
- Provide backend accessor for the Slack iContact module.
- =cut
- =head2 send
- Sends off the notification over to your hipchat room/user
- =over 2
- =item Input
- =over 3
- None
- =back
- =item Output
- =over 3
- Truthy value on success, exception on failure.
- =back
- =back
- =cut
- sub send {
- my ($self) = @_;
- my $args_hr = $self->{'args'};
- my $contact_hr = $self->{'contact'};
- my @errs;
- require Cpanel::HTTP::Client;
- my $ua = Cpanel::HTTP::Client->new( 'default_headers' => { 'content-type' => 'application/json' } )->die_on_http_error();
- my $subject = $args_hr->{'subject'};
- my $message = ${ $args_hr->{'text_body'} };
- require Cpanel::AdminBin::Serializer;
- my $message_json = Cpanel::AdminBin::Serializer::Dump(
- {
- 'text' => $subject,
- 'attachments' => [ { "text" => $message } ],
- }
- );
- # Send it
- foreach my $destination ( @{ $args_hr->{'to'} } ) {
- try {
- my $res = $ua->request( 'POST', $destination, { 'content' => $message_json } );
- die( sprintf "Error %d: %s", $res->status(), $res->reason() ) if !$res->success();
- }
- catch {
- require Cpanel::Exception;
- push(
- @errs,
- Cpanel::Exception::create(
- 'ConnectionFailed',
- 'The system failed to send the message to “[_1]” due to an error: [_2]',
- [ $destination, $_ ]
- )
- );
- };
- }
- if (@errs) {
- # Module should already be loaded above
- die Cpanel::Exception::create( 'Collection', [ exceptions => \@errs ] );
- }
- return 1;
- }
- 1;
|