rename changes to actions
[MojoFacets.git] / lib / MojoFacets.pm
1 package MojoFacets;
2
3 use strict;
4 use warnings;
5
6 our $VERSION = '0.0001';
7
8 use base 'Mojolicious';
9
10 use Data::Dump qw(dump);
11 use Storable;
12 use Time::HiRes qw(time);
13
14
15 sub save_tx {
16         my ($self,$tx) = @_;
17 #       warn "## before_dispatch req ",dump($tx->req->url, $tx->req->params);
18         my $parts = $tx->req->url->path->parts;
19         warn "# parts ",dump( $parts );
20         if ( $parts->[0] eq 'data' ) {
21                 if ( my $params = $tx->req->params ) {
22
23                         warn "# params ",dump($params);
24
25                         my $time = time();
26                         if ( my $time_travel = $params->param('time') ) {
27                                 warn "# time-travel to $time_travel from ", $tx->remote_address;
28                                 $time = $time_travel;
29                         }
30
31                         my $path = '/tmp/actions/';
32                         mkdir $path unless -e $path;
33                         $path .= sprintf '%.4f.%s', $time, join('.', @$parts);
34
35                         store $params, $path;
36                         warn "$path ", -s $path, " bytes\n";
37                 }
38         }
39 }
40
41
42 # This method will run once at server start
43 sub startup {
44     my $self = shift;
45
46     # Routes
47     my $r = $self->routes;
48
49     # Default route
50     $r->route('/:controller/:action/:id')->to('data#index', id => 1);
51
52 #       $self->plugin( 'request_timer' );
53
54         $self->plugins->add_hook(
55                         before_dispatch => sub {
56                                 my ($self, $c) = @_;
57                                 my $tx = $c->tx;
58                                 save_tx( $self, $tx );
59                         }
60         );
61 }
62
63
64
65 1;