CallBackery
view release on metacpan or search on metacpan
lib/CallBackery.pm view on Meta::CPAN
use Mojo::URL;
use Mojo::JSON;
use Mojo::Util qw(hmac_sha1_sum);
use Mojo::File qw(path);
use File::Basename;
use CallBackery::Config;
use CallBackery::Plugin::Doc;
use CallBackery::Database;
use CallBackery::User;
use Scalar::Util qw(weaken);
our $VERSION = '0.57.0';
=head2 config
A hash pointer to the configuration object. See L<CallBackery::Config> for details.
The default configuration file is located in etc/callbackery.cfg. You can override the
path by setting the C<CALLBACKERY_CONF> environment variable.
The config property is set automatically on startup.
=cut
has 'config' => sub {
my $app = shift;
my $conf = CallBackery::Config->new(
app => $app,
file => $ENV{CALLBACKERY_CONF} || $app->home->child('etc','callbackery.cfg')
);
};
=head2 database
An instance of L<CallBackery::Database> or a module with the same API.
=cut
has database => sub {
CallBackery::Database->new(app=>shift);
};
has userObject => sub {
my $app = shift;
my $ obj = CallBackery::User->new(app=>$app,log=>$app->log);
$obj->{prototype} = 1;
return $obj;
};
=head2 securityHeaders
A hash of headers to set on every response to ask the webbrowser to
help us fight the bad guys.
=cut
has securityHeaders => sub { {
# prevent click jacking
'X-Frame-Options' => 'SAMEORIGIN',
# some magic browser based anti xss action
'X-XSS-Protection' => '1; mode=block',
# the browser should obej the servers settings regarding content-type
'X-Content-Type-Options' => 'nosniff',
# do not store our data ever
'Pragma' => 'private',
}};
=head2 rpcServiceNamespace
our rpc service namespace
=cut
has rpcServiceNamespace => 'CallBackery';
=head2 rpcServiceController
our rpc service controller
=cut
has rpcServiceController => 'Controller::RpcService';
=head2 docIndex
initial document to be presented on the doc link
=cut
has docIndex => __PACKAGE__ . '::Index';
=head1 METHODS
All the methods of L<Mojolicious> as well as:
=cut
=head2 startup
Mojolicious calls the startup method at initialization time.
=cut
sub startup {
my $app = shift;
# having a non-C locale for number will wreck all sorts of havoc
# when things get converted to string and back
setlocale(LC_NUMERIC, "C");
setlocale(LC_TIME, "C");
weaken($app);
$app->config->postProcessCfg();
my $gcfg = $app->config->cfgHash->{BACKEND};
if ($gcfg->{log_file}){
if (open my $file, '>>', $gcfg->{log_file}){
$app->log->handle($file);
}
else {
$app->log->debug("Opening $gcfg->{log_file}: $!");
}
}
## commands
( run in 0.923 second using v1.01-cache-2.11-cpan-524268b4103 )