Bot-BasicBot-Pluggable-Module-Notes/bin/notesapp.pl
#!/usr/local/bin/perl5.10.0
use Web::Simple 'Bot::BasicBot::Pluggable::Module::Notes::App';
{
package Bot::BasicBot::Pluggable::Module::Notes::App;
use lib '/usr/src/perl/Bot-BasicBot-Pluggable-Module-Notes/lib';
use Bot::BasicBot::Pluggable::Module::Notes::Store::SQLite;
use File::Spec::Functions;
use JSON ();
my $store = Bot::BasicBot::Pluggable::Module::Notes::Store::SQLite
->new( "/home/castaway/public_html/notesbot/brane.db" );
default_config ( file_dir => q{/usr/src/perl/Bot-BasicBot-Pluggable-Module-Notes/root/},
# dsn => '/home/castaway/public_html/notesbot/brane.db'
);
sub static_file {
my ($self, $file, $type) = @_;
open my $fh, '<', catfile($self->config->{file_dir}, "$file") or return [ 404, [ 'Content-type', 'text/html' ], [ 'file not found']];
local $/ = undef;
my $file_content = <$fh>;
close $fh or return [ 500, [ 'Content-type', 'text/html' ], [ 'Internal Server Error'] ];
return [ 200, [ 'Content-type' => $type ], [ $file_content ] ];
}
sub notes_json {
my ($self, %params) = @_;
# my @checkedparams{ qw(date time channel name notes) } = @{$params->{qw(date time channel name notes)}};
## arrayref of hashrefs
# id, date, time, channel, name, notes
# extract date/time fields
my $db_notes = $store->get_notes(%params);
warn Data::Dumper::Dumper($db_notes);
my $rows = [ map { {
id => $_->{id},
cell => [ @{$_}{qw/id date time channel name notes/} ]
}
} @$db_notes ];
my $notes = {
total => 1,
page => 1,
records => scalar @$db_notes,
rows => $rows,
};
return [ 200, [ 'Content-type' => 'application/json' ], [ JSON::encode_json($notes) ] ];
}
dispatch {
sub (/) {
return $self->static_file('index.html')
},
sub (/js/**) {
my $file=$_[1];
return $self->static_file("js/$file", "text/javascript");
},
sub (/css/**) {
my $file=$_[1];
return $self->static_file("css/$file", "text/css");
},
# sub (/json + ?:date~&:time~&:channel~&:name~&:notes~) {
## Add page and rows args.
sub (/json + ?id~&date~&time~&channel~&name~¬es~&page=&rows=&sidx=&sord=) {
# my ($self, $params) = @_;
my ($self, $id, $date, $time, $channel, $name, $notes, $page, $rows, $order_ind, $sort_order) = @_;
return $self->notes_json(id => $id,
date => $date,
time => $time,
channel => $channel,
name => $name,
notes => $notes,
page => $page,
rows => $rows,
order_ind => $order_ind,
sort_order => $sort_order,
);
}
};
}
Bot::BasicBot::Pluggable::Module::Notes::App->run_if_script;