/[pxelator]/lib/PXElator/CouchDB.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /lib/PXElator/CouchDB.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 205 by dpavlin, Wed Aug 12 19:49:36 2009 UTC revision 209 by dpavlin, Thu Aug 13 00:06:48 2009 UTC
# Line 8  use warnings; Line 8  use warnings;
8  use LWP::UserAgent;  use LWP::UserAgent;
9  use JSON;  use JSON;
10  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
11    use Time::HiRes qw/time/;
12    use Data::Structure::Util qw(unbless);
13    use Scalar::Util qw/blessed/;
14    use Storable qw/dclone/;
15    
16  sub new {  sub new {
17          my ($class, $host, $port, $options) = @_;          my ($class, $host, $port, $options) = @_;
# Line 65  sub delete { Line 69  sub delete {
69  sub get {  sub get {
70          my ($self, $url) = @_;          my ($self, $url) = @_;
71    
72          from_json $self->request(GET => $url);          JSON->new->utf8->decode( $self->request(GET => $url) );
73  }  }
74    
75  sub put {  sub put {
76          my ($self, $url, $json) = @_;          my ($self, $url, $json) = @_;
         warn "put $url ",dump($json);  
77    
78          $rev->{$url} ||= eval { $self->get( $url )->{_rev} };          if ( ! defined $json->{_rev} ) {
79                    my $old = eval { $self->get( $url )->{_rev} };
80                    $rev->{$url} = $json->{_rev} = $old if defined $old;
81            }
82    
83          $json->{_rev} = $rev->{$url} if $rev->{$url};          $json = unbless dclone $json if blessed $json;
84    
85          $json = to_json $json if $json;          $json = JSON->new->utf8->encode( $json ) if $json;
86    
87          $self->request(PUT => $url, $json);          $self->request(PUT => $url, $json);
88  }  }
# Line 87  sub post { Line 93  sub post {
93          $self->request(POST => $url, $json);          $self->request(POST => $url, $json);
94  }  }
95    
96    our $audit = __PACKAGE__->new;
97    
98    sub audit {
99            my $data = pop @_;
100    
101            my $url = join(' ', @_);
102            $url =~ s/\s+-\S+//g;   # remove command line options
103            $url =~ s/\W+/-/g;
104    
105            my ( $package, $file, $line, $sub ) = caller(1);
106            ( $package, undef, $line ) = caller(0) if $package eq 'main';
107    
108            my $time = time();
109    
110            $data->{$_} = eval '$' . $_ foreach ( qw/time package line sub/ );
111    
112            warn 'audit ', dump($data), "at $file +$line\n";
113    
114            $time = int($time); # reduce granularity
115            $audit->put( "pxelator/$time.$package.$url", $data );
116    }
117    
118  1;  1;

Legend:
Removed from v.205  
changed lines
  Added in v.209

  ViewVC Help
Powered by ViewVC 1.1.26