git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCHv8 6/7] gitweb: picon avatar provider

From
Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Date
Jun 29, 2009, 22:00 UTC
Message-ID
<1246312854-3365-7-git-send-email-giuseppe.bilotta@gmail.com>
In-Reply-To
<1246312854-3365-6-git-send-email-giuseppe.bilotta@gmail.com>

Simple implementation of picon that only relies on the indiana.edu database.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
---
 gitweb/gitweb.perl |   34 +++++++++++++++++++++++++++-------
 1 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 4d7e4ff..862ea99 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -378,15 +378,18 @@ our %feature = (
 	# shortlog or commit will display an avatar associated with
 	# the email of the committer(s) and/or author(s).
 
-	# Currently only the gravatar provider is available, and it
-	# depends on Digest::MD5. If an unknown provider is specified,
-	# the feature is disabled.
+	# Currently available providers are gravatar and picon.
+	# If an unknown provider is specified, the feature is disabled.
+
+	# Gravatar depends on Digest::MD5.
+	# Picon currently relies on the indiana.edu database.
 
 	# To enable system wide have in $GITWEB_CONFIG
-	# $feature{'avatar'}{'default'} = ['gravatar'];
+	# $feature{'avatar'}{'default'} = ['<provider>'];
+	# where <provider> is either gravatar or picon.
 	# To have project specific config enable override in $GITWEB_CONFIG
 	# $feature{'avatar'}{'override'} = 1;
-	# and in project config gitweb.avatar = gravatar;
+	# and in project config gitweb.avatar = <provider>;
 	'avatar' => {
 		'sub' => \&feature_avatar,
 		'override' => 0,
@@ -853,6 +856,8 @@ our @snapshot_fmts = gitweb_get_feature('snapshot');
 our ($git_avatar) = gitweb_get_feature('avatar');
 if ($git_avatar eq 'gravatar') {
 	$git_avatar = '' unless (eval { require Digest::MD5; 1; });
+} elsif ($git_avatar eq 'picon') {
+	# no dependencies
 } else {
 	$git_avatar = '';
 }
@@ -1520,6 +1525,20 @@ sub format_subject_html {
 # given page, there's no risk for cache conflicts.
 our %avatar_cache = ();
 
+# Compute the picon url for a given email, by using the picon search service over at
+# http://www.cs.indiana.edu/picons/search.html
+sub picon_url {
+	my $email = lc shift;
+	if (!$avatar_cache{$email}) {
+		my ($user, $domain) = split('@', $email);
+		$avatar_cache{$email} =
+			"http://www.cs.indiana.edu/cgi-pub/kinzler/piconsearch.cgi/" .
+			"$domain/$user/" .
+			"users+domains+unknown/up/single";
+	}
+	return $avatar_cache{$email};
+}
+
 # Compute the gravatar url for a given email, if it's not in the cache already.
 # Gravatar stores only the part of the URL before the size, since that's the
 # one computationally more expensive. This also allows reuse of the cache for
@@ -1544,9 +1563,10 @@ sub git_get_avatar {
 	my $url = "";
 	if ($git_avatar eq 'gravatar') {
 		$url = gravatar_url($email, $size);
+	} elsif ($git_avatar eq 'picon') {
+		$url = picon_url($email);
 	}
-	# Currently only gravatars are supported, but other forms such as
-	# picons can be added by putting an else up here and defining $url
+	# Other providers can be added by extending the if chain, defining $url
 	# as needed. If no variant puts something in $url, we assume avatars
 	# are completely disabled/unavailable.
 	if ($url) {
-- 
1.6.3.rc1.192.gdbfcb
Previous: Giuseppe BilottaNext: Giuseppe Bilotta
Message 7 of 22 in “[PATCHv8 0/7] gitweb: avatar support”
  1. Giuseppe BilottaJun 29, 2009
  2. 1/7 gitweb: refactor author name insertionGiuseppe Bilotta, Jun 29, 2009
  3. 2/7 gitweb: uniform author info for commit and commitdiffGiuseppe Bilotta, Jun 29, 2009
  4. 3/7 gitweb: use git_print_authorship_rows in 'tag' view tooGiuseppe Bilotta, Jun 29, 2009
  5. 4/7 gitweb: (gr)avatar supportGiuseppe Bilotta, Jun 29, 2009
  6. 5/7 gitweb: gravatar url cacheGiuseppe Bilotta, Jun 29, 2009
  7. 6/7 gitweb: picon avatar providerGiuseppe Bilotta, Jun 29, 2009
  8. 7/7 gitweb: add empty alt text to avatar imgGiuseppe Bilotta, Jun 29, 2009
  9. Jakub NarebskiJun 30, 2009
  10. Jakub NarebskiJun 30, 2009
  11. Giuseppe BilottaJun 30, 2009
  12. Jakub NarebskiJun 30, 2009
  13. Junio C HamanoJun 30, 2009
  14. Giuseppe BilottaJun 30, 2009
  15. Jakub NarebskiJun 30, 2009
  16. Jakub NarebskiJun 30, 2009
  17. Jakub NarebskiJun 30, 2009
  18. Jakub NarebskiJun 30, 2009
  19. Giuseppe BilottaJun 30, 2009
  20. Jakub NarebskiJun 30, 2009
  21. Giuseppe BilottaJun 30, 2009
  22. Jakub NarebskiJul 1, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.