App-HistHub
    
    
  
  
  
view release on metacpan or search on metacpan
lib/App/HistHub.pm view on Meta::CPAN
    isa     => 'Int',
    default => sub { 5 },
);
has update_queue => (
    is      => 'rw',
    isa     => 'ArrayRef',
    default => sub { [] },
);
has api_endpoint => (
    is       => 'rw',
    isa      => 'Str',
    required => 1,
);
has api_uid => (
    is  => 'rw',
    isa => 'Str',
);
=head1 NAME
App::HistHub - Sync shell history between multiple PC.
=head1 SYNOPSIS
    use App::HistHub;
    
    my $hh = App::HistHub->new(
        hist_file    => 'path to your history file',
        api_endpoint => 'http://localhost:3000/',
    );
    $hh->run;
=head1 DESCRIPTION
App::HistHub is an application that enables you to sync shell history between multiple computers.
This application consists of two modules: client module (histhubd.pl) and server module (histhub_server.pl).
You need one histhub server. To bootup the server, type following command:
lib/App/HistHub.pm view on Meta::CPAN
Create HistHub object.
Available obtions are:
=over 4
=item hist_file
History file path to watch update
=item api_endpoint
Update API URL.
=back
=head2 spawn
Create POE session and return session object.
=cut
lib/App/HistHub.pm view on Meta::CPAN
    $hh->uri_for( $path )
Build api url
=cut
sub uri_for {
    my ($self, $path) = @_;
    (my $url = $self->api_endpoint) =~ s!/+$!!;
    $url . $path;
}
=head2 append_history
    $hh->append_history( $session, $api_response );
Update history file
=cut
lib/App/HistHub.pm view on Meta::CPAN
=head1 POE METHODS
=head2 poe__start
=cut
sub poe__start {
    my ($self, $kernel, $session) = @_[OBJECT, KERNEL, SESSION];
    my $d = $self->ua->request( GET $self->api_endpoint . '/api/init' );
    $d->addCallback(sub {
        my $res = shift;
        my $json = $self->json_driver->decode($res->content);
        if ($json->{error}) {
            die 'api response error: ' . $json->{error};
        }
        else {
            $self->api_uid( $json->{result}{uid} );
            $kernel->post( $session->ID, 'init' );
script/histhubd.pl view on Meta::CPAN
GetOptions(
    \my %option,
    qw/help histfile=s server=s/,
);
pod2usage(0) if $option{help};
pod2usage(1) unless $option{histfile} and $option{server};
my $hh = App::HistHub->new(
    hist_file    => $option{histfile},
    api_endpoint => $option{server},
);
$hh->run;
=head1 NAME
histhubd.pl - histhub history update script
=head1 SYNOPSIS
    histhubd.pl --histfile=~/.zhistory --server=http://localhost:3000
( run in 0.420 second using v1.01-cache-2.11-cpan-5dc5da66d9d )