diff options
-rw-r--r-- | lib/intentioncloud/Model/Search.pm | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/intentioncloud/Model/Search.pm b/lib/intentioncloud/Model/Search.pm new file mode 100644 index 0000000..a3a36c8 --- /dev/null +++ b/lib/intentioncloud/Model/Search.pm @@ -0,0 +1,58 @@ +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; |