summary refs log tree commit diff
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2009-04-05 16:37:18 +0200
committerfranck cuny <franck@lumberjaph.net>2009-04-05 16:37:18 +0200
commite9cfc32406d0ff8b71f0e7d5f9671171cbf2c825 (patch)
tree531756439e7836ec992609b3175d82c89e4de67d
parentadd engine, remote hack for last cloud (diff)
downloadintention-cloud-e9cfc32406d0ff8b71f0e7d5f9671171cbf2c825.tar.gz
save in database search
-rw-r--r--lib/intentioncloud/Model/Search.pm58
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;