1 package Newslash::Web::Controller::Search;
2 use Mojo::Base 'Mojolicious::Controller';
7 my $user = $c->stash('user');
8 my $config = $c->config->{Search} || {};
9 my $host = $config->{searchd_host};
10 my $port = $config->{searchd_port};
13 my $query = $c->param('q');
14 my $start = $c->param('start') || 0;
16 my $item_per_page = 10;
19 # no query, show search top page
25 my $url = "$scheme://$host:$port/";
26 # Non-blocking request
27 my $ua = Mojo::UserAgent->new;
30 my $req= { query => $query,
31 limit => $item_per_page,
34 $ua->post($url => {Accept => 'application/json'} => json => $req => sub {
38 # $ua must exist when this callback is called,
41 $message = "some_error_occured";
42 $c->render(query_words => $query,
54 $c->app->log->error("searchd error: $err->{message}");
56 my $code = $tx->result->code == 400 ? 400 : 500;
58 my $rs = $tx->result->json;
59 if (defined $rs && $rs->{error} && $rs->{error}->{message}) {
60 $message = $rs->{error}->{message};
63 $message = $err->{message};
66 $c->render(query_words => $query,
75 my $result = $tx->result->json;
76 if (!defined $result) {
77 $c->app->log->error("searchd Error: receive invalid message");
78 $message = "searchd_error";
79 $c->render(query_words => $query,
88 $c->render(query_words => $query,
93 item_per_page => $item_per_page,