From c55a169ead9beb27436144923255c254d215158f Mon Sep 17 00:00:00 2001 From: franck cuny Date: Wed, 10 Feb 2010 11:07:41 +0100 Subject: update to create graph --- lib/githubexplorer.pm | 12 +++++++++++- lib/githubexplorer/Repository.pm | 1 - lib/githubexplorer/Schema/Result/Fork.pm | 17 +++++------------ 3 files changed, 16 insertions(+), 14 deletions(-) (limited to 'lib') diff --git a/lib/githubexplorer.pm b/lib/githubexplorer.pm index 67e9e25..4fc5aa5 100644 --- a/lib/githubexplorer.pm +++ b/lib/githubexplorer.pm @@ -6,7 +6,8 @@ use githubexplorer::Schema; use githubexplorer::Gexf; use IO::All; -with qw/githubexplorer::Profile githubexplorer::Repository/; +with qw/githubexplorer::Profile githubexplorer::Repository +githubexplorer::Network/; has seed => ( isa => 'ArrayRef', @@ -72,4 +73,13 @@ sub gen_graph { $xml > io('crawl.gexf'); } +sub graph_repo { + my $self = shift; + $self->_connect unless $self->has_schema; + my $repos = $self->schema->resultset('Repositories')->search({fork => 0}); + while ( my $r = $repos->next ) { + $self->fetch_network($r); + } +} + 1; diff --git a/lib/githubexplorer/Repository.pm b/lib/githubexplorer/Repository.pm index 664d727..035450a 100644 --- a/lib/githubexplorer/Repository.pm +++ b/lib/githubexplorer/Repository.pm @@ -2,7 +2,6 @@ package githubexplorer::Repository; use 5.010; use Moose::Role; use Net::GitHub::V2::Repositories; -use YAML::Syck; sub fetch_repositories { my ( $self, $profile ) = @_; diff --git a/lib/githubexplorer/Schema/Result/Fork.pm b/lib/githubexplorer/Schema/Result/Fork.pm index 195c1f9..2a798eb 100644 --- a/lib/githubexplorer/Schema/Result/Fork.pm +++ b/lib/githubexplorer/Schema/Result/Fork.pm @@ -6,23 +6,16 @@ __PACKAGE__->load_components(qw/Core/); __PACKAGE__->table('fork'); __PACKAGE__->add_columns( - profile_origin => { data_type => 'int', }, - profile_dest => { data_type => 'int' }, - repo_origin => { data_type => 'int' }, - repo_dest => { data_type => 'int' }, + profile => { data_type => 'int', }, + repos => { data_type => 'int' }, ); -__PACKAGE__->set_primary_key( - qw/repo_origin repo_dest profile_origin profile_dest/ ); +__PACKAGE__->set_primary_key(qw/repos profile/); -__PACKAGE__->belongs_to( 'profile_origin', - 'githubexplorer::Schema::Result::Profiles' ); -__PACKAGE__->belongs_to( 'profile_dest', +__PACKAGE__->belongs_to( 'profile', 'githubexplorer::Schema::Result::Profiles' ); -__PACKAGE__->belongs_to( 'repo_origin', - 'githubexplorer::Schema::Result::Repositories' ); -__PACKAGE__->belongs_to( 'repo_dest', +__PACKAGE__->belongs_to( 'repos', 'githubexplorer::Schema::Result::Repositories' ); 1; -- cgit 1.4.1 From 3db726a7164632f3f6814f463c46cc5493164270 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Wed, 10 Feb 2010 11:07:46 +0100 Subject: update to create graph --- lib/githubexplorer/Network.pm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lib/githubexplorer/Network.pm (limited to 'lib') diff --git a/lib/githubexplorer/Network.pm b/lib/githubexplorer/Network.pm new file mode 100644 index 0000000..e3c4765 --- /dev/null +++ b/lib/githubexplorer/Network.pm @@ -0,0 +1,34 @@ +package githubexplorer::Network; +use 5.010; +use Moose::Role; +use Net::GitHub::V2::Repositories; +use YAML::Syck; + +sub fetch_network { + my ( $self, $repos ) = @_; + + my $api_repos = Net::GitHub::V2::Repositories->new( + owner => $repos->id_profile->login, + repo => $repos->name, + login => $self->api_login, + token => $self->api_token, + ); + + my $edges = $api_repos->network(); + foreach my $edge (@$network) { + next if $edge->{owner} eq $repos->id_profile->login; + my $profile = $self->schema->resultset('Profiles') + ->find( { login => $edge->{owner} } ); + next if !$profile; + + my $relation = $self->schema->resultset('Fork')->find_or_create( + { + profile => $profile->id, + repos => $repos->id + } + ); + } + sleep(1); +} + +1; -- cgit 1.4.1