|
Revision 926
(checked in by miyagawa, 3 years ago)
|
first cut of Plagger::Rule::Deduped
|
| Line | |
|---|
| 1 |
package Plagger::Rule::Deduped::DB_File; |
|---|
| 2 |
use strict; |
|---|
| 3 |
use base qw( Plagger::Rule::Deduped::Base ); |
|---|
| 4 |
|
|---|
| 5 |
use DB_File; |
|---|
| 6 |
|
|---|
| 7 |
sub init { |
|---|
| 8 |
my($self, $rule) = @_; |
|---|
| 9 |
$self->{path} = $rule->{path} || Plagger->context->cache->path_to('Deduped.db'); |
|---|
| 10 |
$self->{db} = tie my %cache, 'DB_File', $self->{path}, O_RDWR|O_CREAT, 0666, $DB_HASH |
|---|
| 11 |
or Plagger->context->error("Can't open DB_File $self->{path}: $!"); |
|---|
| 12 |
} |
|---|
| 13 |
|
|---|
| 14 |
sub find_entry { |
|---|
| 15 |
my($self, $url) = @_; |
|---|
| 16 |
|
|---|
| 17 |
my $status = $self->{db}->get($url, my $value); |
|---|
| 18 |
return if $status == 1; |
|---|
| 19 |
|
|---|
| 20 |
return $value; |
|---|
| 21 |
} |
|---|
| 22 |
|
|---|
| 23 |
sub create_entry { |
|---|
| 24 |
my($self, $url, $digest) = @_; |
|---|
| 25 |
$self->{db}->put($url, $digest); |
|---|
| 26 |
} |
|---|
| 27 |
|
|---|
| 28 |
1; |
|---|