initial
This commit is contained in:
commit
db5736ca98
126
umbrella.pl
Normal file
126
umbrella.pl
Normal file
@ -0,0 +1,126 @@
|
||||
# Copyright © 2015-2016 Difrex <difrex.punk@gmail.com>
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Plack::Builder;
|
||||
use Plack::Request;
|
||||
use Plack::Response;
|
||||
|
||||
use Template;
|
||||
|
||||
use Search::Elasticsearch;
|
||||
use II::Config;
|
||||
|
||||
use Encode qw(decode encode);
|
||||
|
||||
my $config = II::Config->new()->load();
|
||||
|
||||
# Connect to localhost:9200:
|
||||
my $e = Search::Elasticsearch->new(
|
||||
nodes => [$config->{elastic_host}]
|
||||
);
|
||||
|
||||
# Template::Toolkit
|
||||
my $tt = Template->new({
|
||||
INCLUDE_PATH => 't',
|
||||
EVAL_PERL => 1,
|
||||
}) || die $Template::ERROR, "\n";
|
||||
|
||||
# Debug
|
||||
use Data::Dumper;
|
||||
|
||||
my $root = sub {
|
||||
my $env = shift;
|
||||
|
||||
my $req = Plack::Request->new($env);
|
||||
my $query = $req->param('query');
|
||||
|
||||
my $vars = {};
|
||||
|
||||
my $b = '';
|
||||
my $body = '';
|
||||
if ($query) {
|
||||
$vars->{query} = $query;
|
||||
my @messages = search($query);
|
||||
foreach my $hit (@messages) {
|
||||
$vars->{score} = $hit->{_score};
|
||||
$vars->{message} = $hit->{_source}->{message};
|
||||
$vars->{msgid} = $hit->{_source}->{msgid};
|
||||
$vars->{author} = $hit->{_source}->{author};
|
||||
$vars->{to} = $hit->{_source}->{to};
|
||||
$vars->{subg} = $hit->{_source}->{subg};
|
||||
$vars->{echo} = $hit->{_source}->{echo};
|
||||
$vars->{time} = gmtime($hit->{_source}->{date});
|
||||
|
||||
$tt->process('body.tpl', $vars, \$b);
|
||||
$body .= $b;
|
||||
$b = '';
|
||||
}
|
||||
|
||||
print Dumper @messages;
|
||||
}
|
||||
|
||||
|
||||
my $h = '';
|
||||
my $form = '';
|
||||
my $f = '';
|
||||
$body = encode("UTF-8", $body);
|
||||
$tt->process('header.tpl', $vars, \$h);
|
||||
$tt->process('footer.tpl', $vars, \$f);
|
||||
$tt->process('form.tpl', $vars, \$form);
|
||||
return [ 200, [ 'Content-type' => 'text/html' ], [$h.$form.$body.$f], ];
|
||||
};
|
||||
|
||||
# Mountpoints
|
||||
# ###########
|
||||
builder {
|
||||
mount '/' => $root;
|
||||
};
|
||||
|
||||
|
||||
# Functions
|
||||
# #########
|
||||
sub search {
|
||||
my $req = shift;
|
||||
|
||||
my $orig_req = $req;
|
||||
$req = decode('UTF-8', $req);
|
||||
my $results = $e->search(
|
||||
index => $config->{elastic_index},
|
||||
type => 'post',
|
||||
body => {
|
||||
query => {
|
||||
match => { _all => "$req" }
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
my @m;
|
||||
foreach my $h ($results->{hits}->{hits}) {
|
||||
foreach my $hit (@$h) {
|
||||
print Dumper $hit;
|
||||
$hit->{_source}->{message} =~ s/\n/<br>\n/g;
|
||||
$hit->{_source}->{message} =~ s/^$/<br>\n/g;
|
||||
|
||||
if ( $hit->{_score} <= 1 ) {
|
||||
$hit->{_score} = '<font color="green">★</font>';
|
||||
}
|
||||
elsif ( $hit->{_score} >= 1 and $hit->{_score} < 1.5 ) {
|
||||
$hit->{_score} = '<font color="green">★★</font>';
|
||||
}
|
||||
elsif ( $hit->{_score} >= 1.5 ) {
|
||||
$hit->{_score} = '<font color ="green">★★★</font>';
|
||||
}
|
||||
foreach my $keyword (split / /, $req) {
|
||||
$hit->{_source}->{post} =~ s/$keyword/<font color='red'>$keyword<\/font>/g;
|
||||
$hit->{_source}->{message} =~ s/$keyword/<font color='red'>$keyword<\/font>/g;
|
||||
$hit->{_source}->{subg} =~ s/$keyword/<font color='red'>$keyword<\/font>/g;
|
||||
}
|
||||
push @m, $hit;
|
||||
}
|
||||
}
|
||||
|
||||
return @m;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user