blob: a3a36c835c492d65bb8b6c2832c7ddd52250db73 (
plain) (
tree)
|
|
package intentioncloud::Model::Search;
use WebService::Google::Suggest;
use HTML::TagCloud;
use YAML::Syck;
use DateTime;
use URI::Escape;
sub search {
my ( $self, $c ) = @_;
if ( $c->req->params->{ engine } eq 'google' ) {
$self->google_search( $c );
}
$self->save_search( $c ) if ( $c->stash->{ cloud } );
}
sub google_search {
my ( $self, $c ) = @_;
my $cloud = HTML::TagCloud->new();
my $suggest = WebService::Google::Suggest->new();
my $search = $c->req->params->{ q } . " ";
$c->stash( query => $search );
my $suggests = 0;
foreach ( $suggest->complete( $search ) ) {
$suggests++;
if ( $_->{ results } > 0 ) {
$cloud->add( $_->{ query }, 'blah', $_->{ results } );
}
}
if ( $suggests ) {
$c->stash( cloud => $cloud->html_and_css());
} else {
$c->stash( no_suggest => "no suggestions :(" );
}
}
sub save_search {
my ( $self, $c ) = @_;
my $dt = DateTime->now;
my $permalink
= $dt->ymd( '/' ) . '/'
. $c->req->params->{ engine } . '/'
. uri_escape( $c->req->params->{ q } );
$c->model( 'DB::Search' )->create(
{ engine => $c->req->params->{ engine },
cloud => $c->stash->{ suggest },
date_created => $dt,
query => $c->req->params->{ q },
permalink => $permalink,
}
);
}
1;
|