summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2011-06-13 17:18:21 +0200
committerfranck cuny <franck@lumberjaph.net>2011-06-13 17:18:21 +0200
commit738500c2fa8c724a2c513ef84ebcba908311671b (patch)
tree10a8deb05c4ac9412c0d9f32c72d70440b20590c
parentmakefile (diff)
downloadstargit-738500c2fa8c724a2c513ef84ebcba908311671b.tar.gz
add memcached; check if login exists else return 404
Signed-off-by: franck cuny <franck@lumberjaph.net>
-rw-r--r--Makefile.PL1
-rw-r--r--lib/StarGit.pm6
-rw-r--r--lib/StarGit/Graph.pm9
3 files changed, 16 insertions, 0 deletions
diff --git a/Makefile.PL b/Makefile.PL
index f357e6f..f868404 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -26,6 +26,7 @@ WriteMakefile(
'MooseX::ConfigFromFile' => 0.03,
'Log::Dispatchouli' => 2.005,
'Net::HTTP::Spore' => 0,
+ 'Cache::Memcached' => 0,
},
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
clean => { FILES => 'StarGit-*' },
diff --git a/lib/StarGit.pm b/lib/StarGit.pm
index 72933da..6483a73 100644
--- a/lib/StarGit.pm
+++ b/lib/StarGit.pm
@@ -2,6 +2,7 @@ package StarGit;
use Dancer ':syntax';
use StarGit::Graph;
+use Cache::Memcached; # don't use it yet
our $VERSION = '0.1';
@@ -15,12 +16,17 @@ get '/graph/local/:name' => sub {
my $name = params->{'name'};
my $graph = StarGit::Graph->new( name => $name );
+
+ return send_error( "user " . $name . " doesn't exists", 404 )
+ unless $graph->exists($name);
+
$graph->neighbors( $name, 1 );
$graph->remove_leaves();
return _finalize($graph);
};
+# XXX do we already use this one ?
get '/graph/query' => sub {
my $language = params->{language};
diff --git a/lib/StarGit/Graph.pm b/lib/StarGit/Graph.pm
index 1b9dd0a..488d07d 100644
--- a/lib/StarGit/Graph.pm
+++ b/lib/StarGit/Graph.pm
@@ -19,6 +19,12 @@ has name => (
isa => 'Str',
);
+sub exists {
+ my ($self, $name) = @_;
+ my $info = $self->db_profiles->find_one( { login => $name } );
+ $info;
+}
+
sub neighbors {
my ($self, $name) = @_;
@@ -130,6 +136,9 @@ sub _create_edge {
sub _get_info_from_login {
my ($self, $login) = @_;
my $info = $self->db_profiles->find_one( { login => $login } );
+
+ return undef if (!defined $info);
+
my $country = $info->{country} || 'null';
my $language = $info->{language} || 'null';
return ($country, $language);