NAME POE::Component::Client::Pastebot - Interact with Bot::Pastebot web services from POE. VERSION version 1.18 SYNOPSIS use strict; use POE qw(Component::Client::Pastebot); my $pastebot = 'http://sial.org/pbot/'; my $pbobj = POE::Component::Client::Pastebot->spawn( alias => 'pococpb' ); POE::Session->create( package_states => [ 'main' => [ qw(_start _got_paste _got_fetch) ], ], ); $poe_kernel->run(); exit 0; sub _start { seek( DATA, 0, 0 ); local $/; my $source = ; $poe_kernel->post( 'pococpb', 'paste', { event => '_got_paste', url => $pastebot, paste => $source, channel => '#perl', nick => 'pococpb', summary => 'POE::Component::Client::Pastebot synopsis', }, ); undef; } sub _got_paste { my ($kernel,$ref) = @_[KERNEL,ARG0]; if ( $ref->{pastelink} ) { print STDOUT $ref->{pastelink}, "\n"; $kernel->post( 'pococpb', 'fetch', { event => '_got_fetch', url => $ref->{pastelink} } ); return; } warn $ref->{error}, "\n"; $kernel->post( 'pococpb', 'shutdown' ); undef; } sub _got_fetch { my ($kernel,$ref) = @_[KERNEL,ARG0]; if ( $ref->{content} ) { print STDOUT $ref->{content}, "\n"; } else { warn $ref->{error}, "\n"; } $kernel->post( 'pococpb', 'shutdown' ); undef; } DESCRIPTION POE::Component::Client::Pastebot is a POE component that provides convenient mechanisms to paste and fetch pastes from Bot::Pastebot based web services. It was inspired by http://sial.org/ pbotutil. CONSTRUCTOR spawn Starts a new POE::Component::Client::Pastebot session and returns an object. Takes a number of arguments all are optional. 'alias', specify a POE Kernel alias for the component; 'options', a hashref of POE Session options to pass to the component's session; METHODS session_id Takes no arguments. Returns the POE Session ID of the component. shutdown Takes no arguments, terminates the component. INPUT EVENTS What POE events our component will accept. paste Sends a paste request to a pastebot url. Accepts either a hashref of the following values or a list of the same: 'event', the name of the event to send the reply to. ( Mandatory ); 'url', the URL of the pastebot to paste to. ( Mandatory ); 'paste', either a scalar or arrayref of data to paste, ( Mandatory ); 'channel', the channel to annouce to; 'nick', the nickname to annouce from; 'summary', brief description of the paste; You may also pass arbitary key/values in the hashref ( as demonstrated in the SYNOPSIS ). Arbitary keys should have an underscore prefix '_'. fetch Retrieves the text from a given paste url. Accepts either a hashref of the following values or a list of the same: 'event', the name of the event to send the reply to. ( Mandatory ); 'url', the paste URL to retrieve; You may also pass arbitary key/values in the hashref ( as demonstrated in the SYNOPSIS ). Arbitary keys should have an underscore prefix '_'. shutdown Takes no arguments, terminates the component. OUTPUT EVENTS The component will send an event in response to 'paste' and 'fetch' requests. ARG0 of the event will be a hashref containing the key/values of the original request ( including any arbitary key/values passed ). Both request types will have the following common keys: 'error', if something went wrong with the request, this key will be defined with a brief description of the error encountered; 'response', a HTTP::Response object as returned by LWP::UserAgent; The following additional key/values will be present depending on the type of request made: paste 'pastelink', the URL of the paste that was made; fetch 'content', the contents of the paste URL that was retrieved; SEE ALSO POE Bot::Pastebot HTTP::Response http://sial.org/code/perl/scripts/pbotutil.pl AUTHOR Chris Williams COPYRIGHT AND LICENSE This software is copyright (c) 2017 by Chris Williams. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.