line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package App::mojopaste::Backend::Mongo; |
2
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
69109
|
use strict; |
|
1
|
|
|
|
|
10
|
|
|
1
|
|
|
|
|
29
|
|
4
|
1
|
|
|
1
|
|
28
|
use 5.008_005; |
|
1
|
|
|
|
|
3
|
|
5
|
|
|
|
|
|
|
our $VERSION = '0.03'; |
6
|
|
|
|
|
|
|
|
7
|
1
|
|
|
1
|
|
561
|
use Mojo::Base 'Mojolicious::Plugin'; |
|
1
|
|
|
|
|
190133
|
|
|
1
|
|
|
|
|
7
|
|
8
|
1
|
|
|
1
|
|
1426
|
use Mojo::Promise; |
|
1
|
|
|
|
|
172653
|
|
|
1
|
|
|
|
|
8
|
|
9
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
my $ID = 0; |
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
sub register { |
13
|
0
|
|
|
0
|
1
|
|
my ($self, $app, $config) = @_; |
14
|
|
|
|
|
|
|
|
15
|
0
|
|
0
|
|
|
|
my $mongo_uri = $ENV{MONGO_URI} || 'mongodb://mongo:27017/paste'; |
16
|
0
|
|
|
|
|
|
$app->plugin( 'Mango', { |
17
|
|
|
|
|
|
|
mango => $mongo_uri, |
18
|
|
|
|
|
|
|
helper => 'db', |
19
|
|
|
|
|
|
|
default_db => 'mojopaste', |
20
|
|
|
|
|
|
|
}); |
21
|
|
|
|
|
|
|
|
22
|
0
|
|
|
0
|
|
|
$app->helper('paste.load_p' => sub { _load_p(@_) }); |
|
0
|
|
|
|
|
|
|
23
|
0
|
|
|
0
|
|
|
$app->helper('paste.save_p' => sub { _save_p(@_) }); |
|
0
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
} |
25
|
|
|
|
|
|
|
|
26
|
|
|
|
|
|
|
sub _load_p { |
27
|
0
|
|
|
0
|
|
|
my ($c, $id) = @_; |
28
|
|
|
|
|
|
|
|
29
|
|
|
|
|
|
|
eval { |
30
|
|
|
|
|
|
|
|
31
|
0
|
|
|
|
|
|
my $promise = Mojo::Promise->new; |
32
|
|
|
|
|
|
|
$c->collection('docs')->find_one({id => $id}, { _id => 0 } => sub { |
33
|
0
|
|
|
0
|
|
|
my ($collection, $err, $doc) = @_; |
34
|
|
|
|
|
|
|
|
35
|
0
|
0
|
|
|
|
|
return $err ? $promise->reject($err) : $promise->resolve($doc->{body}); |
36
|
0
|
|
|
|
|
|
}); |
37
|
|
|
|
|
|
|
|
38
|
0
|
|
|
|
|
|
return $promise; |
39
|
0
|
0
|
|
|
|
|
} or do { |
40
|
0
|
|
0
|
|
|
|
return Mojo::Promise->new->reject($@ || 'Paste not found'); |
41
|
|
|
|
|
|
|
}; |
42
|
|
|
|
|
|
|
} |
43
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
sub _save_p { |
45
|
0
|
|
|
0
|
|
|
my ($c, $text) = @_; |
46
|
0
|
|
|
|
|
|
my $id = substr Mojo::Util::md5_sum($$ . time . $ID++), 0, 12; |
47
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
eval { |
49
|
0
|
|
|
|
|
|
my $promise = Mojo::Promise->new; |
50
|
|
|
|
|
|
|
$c->collection('docs')->insert({ id => $id, body => $text } => sub { |
51
|
0
|
|
|
0
|
|
|
my ($collection, $err, $oid) = @_; |
52
|
|
|
|
|
|
|
|
53
|
0
|
0
|
|
|
|
|
return $err ? $promise->reject( $err ) : $promise->resolve( $id ); |
54
|
0
|
|
|
|
|
|
}); |
55
|
|
|
|
|
|
|
|
56
|
0
|
|
|
|
|
|
return $promise; |
57
|
0
|
0
|
|
|
|
|
} or do { |
58
|
0
|
|
0
|
|
|
|
return Mojo::Promise->new->reject($@ || 'Unknown error'); |
59
|
|
|
|
|
|
|
}; |
60
|
|
|
|
|
|
|
} |
61
|
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
1; |
63
|
|
|
|
|
|
|
__END__ |