[Bps-public-commit] r17604 - in Net-Google-Code/trunk: lib/Net/Google/Code t/sample

fayland at bestpractical.com fayland at bestpractical.com
Wed Jan 7 00:35:05 EST 2009


Author: fayland
Date: Wed Jan  7 00:35:05 2009
New Revision: 17604

Added:
   Net-Google-Code/trunk/t/sample/
   Net-Google-Code/trunk/t/sample/10.download.html
   Net-Google-Code/trunk/t/sample/10.download.xml
Modified:
   Net-Google-Code/trunk/lib/Net/Google/Code/Downloads.pm
   Net-Google-Code/trunk/t/10.downloads.t

Log:
cleanup, and add sub entry in Downloads.pm

Modified: Net-Google-Code/trunk/lib/Net/Google/Code/Downloads.pm
==============================================================================
--- Net-Google-Code/trunk/lib/Net/Google/Code/Downloads.pm	(original)
+++ Net-Google-Code/trunk/lib/Net/Google/Code/Downloads.pm	Wed Jan  7 00:35:05 2009
@@ -16,7 +16,7 @@
 	
 	my $connection = $self->connection;
 	my $project    = $connection->project;
-	my $feed_url   = "http://code.google.com//feeds/p/$project/downloads/basic";
+	my $feed_url   = "http://code.google.com/feeds/p/$project/downloads/basic";
 	
 	my $content = $connection->_fetch( $feed_url );
 	my $feed = XML::Atom::Feed->new( \$content );
@@ -40,6 +40,22 @@
 	return wantarray ? @dentries : \@dentries;
 }
 
+sub entry {
+	my $self = shift;
+	
+	my ($filename) = validate_pos( @_, { type => SCALAR } );
+	
+	# http://code.google.com/p/net-google-code/downloads/detail?name=Net-Google-Code-0.01.tar.gz
+	
+	my $connection = $self->connection;
+	my $project    = $connection->project;
+	
+	my $url = "http://code.google.com/p/$project/downloads/detail?name=$filename";
+	my $content = $connection->_fetch( $url );
+	
+	
+}
+
 no Moose;
 __PACKAGE__->meta->make_immutable;
 

Modified: Net-Google-Code/trunk/t/10.downloads.t
==============================================================================
--- Net-Google-Code/trunk/t/10.downloads.t	(original)
+++ Net-Google-Code/trunk/t/10.downloads.t	Wed Jan  7 00:35:05 2009
@@ -1,28 +1,44 @@
+#!/usr/bin/perl
+
 use strict;
 use warnings;
 
-use Test::More tests => 6;
+use Test::More tests => 9;
 use Test::MockModule;
+use FindBin qw/$Bin/;
+
+# http://code.google.com/feeds/p/net-google-code/downloads/basic
 
-# $content is a real page: http://code.google.com/feeds/p/net-google-code/downloads/basic
-# we faked something to meet some situations, which are commented below
+my $feed_file = "$Bin/sample/10.download.xml";
+my $down_file = "$Bin/sample/10.download.html";
 
-my $content;
-{
-        local $/;
-        $content = <DATA>;
+sub read_file {
+	open(my $fh, '<', shift) or die $!;
+	local $/;
+	my $t = <$fh>;
+	close($fh);
+	return $t;
 }
 
+my $feed_content = read_file($feed_file);
+my $download_content = read_file($down_file);
 
 my $mock_connection = Test::MockModule->new('Net::Google::Code::Connection');
 $mock_connection->mock(
     '_fetch',
-    sub { $content }
+    sub {
+    	( undef, my $uri ) = @_;
+    	if ( $uri eq 'http://code.google.com/feeds/p/net-google-code/downloads/basic' ) {
+    		return $feed_content;
+    	} elsif ( $uri eq 'http://code.google.com/p/net-google-code/downloads/detail?name=Net-Google-Code-0.01.tar.gz#makechanges' ) {
+    		return $download_content;
+    	}
+    }
 );
 
 use_ok('Net::Google::Code::Connection');
 use_ok('Net::Google::Code::Downloads');
-my $connection = Net::Google::Code::Connection->new( project => 'test' );
+my $connection = Net::Google::Code::Connection->new( project => 'net-google-code' );
 my $downloads = Net::Google::Code::Downloads->new( connection => $connection );
 isa_ok( $downloads, 'Net::Google::Code::Downloads' );
 isa_ok( $downloads->connection, 'Net::Google::Code::Connection', '$ticket->connection' );
@@ -30,36 +46,11 @@
 my @entries = $downloads->all_entries;
 is( scalar @entries, 1 );
 is $entries[0]->{filename}, 'Net-Google-Code-0.01.tar.gz';
+is $entries[0]->{author}, 'sunnavy';
+is $entries[0]->{size}, '37.4 KB';
+is $entries[0]->{link}, 'http://code.google.com/p/net-google-code/downloads/detail?name=Net-Google-Code-0.01.tar.gz';
 
-__DATA__
-<?xml version="1.0"?>
+my $entry = $downloads->entry( 'Net-Google-Code-0.01.tar.gz' );
 
-<feed xmlns="http://www.w3.org/2005/Atom">
- <updated>2009-01-06T08:16:06Z</updated>
- <id>http://code.google.com/feeds/p/net-google-code/downloads/basic</id>
- <title>Downloads for project net-google-code on Google Code</title>
- <link rel="self" type="application/atom+xml;type=feed" href="http://code.google.com/feeds/p/net-google-code/downloads/basic"/>
- <link rel="alternate" type="text/html" href="http://code.google.com/p/net-google-code/downloads/list"/>
- 
- <entry>
- <updated>2009-01-06T08:16:06Z</updated>
- <id>http://code.google.com/feeds/p/net-google-code/downloads/basic/Net-Google-Code-0.01.tar.gz</id>
- <link rel="alternate" type="text/html" href="http://code.google.com/p/net-google-code/downloads/detail?name=Net-Google-Code-0.01.tar.gz" />
- <title>
- Net-Google-Code-0.01.tar.gz (37.4 KB)
- </title>
- <author>
- <name>sunnavy</name>
- </author>
- <content type="html">
-
-<pre>
-Net-Google-Code-0.01
-
-<a href="http://net-google-code.googlecode.com/files/Net-Google-Code-0.01.tar.gz">Download</a>
-</pre>
- </content>
-</entry>
 
- 
-</feed>
+1;
\ No newline at end of file

Added: Net-Google-Code/trunk/t/sample/10.download.html
==============================================================================
--- (empty file)
+++ Net-Google-Code/trunk/t/sample/10.download.html	Wed Jan  7 00:35:05 2009
@@ -0,0 +1,499 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+ 
+ <title>Net-Google-Code-0.01.tar.gz - 
+ net-google-code -
+ 
+ Google Code - Net-Google-Code-0.01</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
+ 
+ <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/3596478537346627501/css/d_20081117.css">
+ 
+ 
+ 
+<!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/3596478537346627501/css/d_ie.css" >
+<![endif]-->
+</head>
+<body class="t2">
+ <div id="gaia">
+
+  <font size="-1">
+ 
+ <b>fayland at gmail.com</b>
+ 
+ | <a href="/p/support/wiki/WhatsNew" style="color:#a03">What's new?</a>
+ | <a href="/u/fayland/">Profile</a>
+ | <a href="/hosting/settings">Settings</a>
+
+ | <a href="/p/support/">Help</a>
+ | <a href="http://www.google.com/accounts/Logout?continue=http%3A%2F%2Fcode.google.com%2Fp%2Fnet-google-code%2Fdownloads%2Fdetail%3Fname%3DNet-Google-Code-0.01.tar.gz">Sign out</a>
+ 
+ </font> 
+
+ </div>
+ <div class="gbh" style="left: 0pt;"></div>
+ <div class="gbh" style="right: 0pt;"></div>
+ 
+ 
+ <div style="height: 1px"></div>
+
+ <table style="padding:0px; margin: 20px 0px 0px 0px; width:100%" cellpadding="0" cellspacing="0">
+ <tr>
+ <td style="width:153px"><a href="/"><img src="http://www.gstatic.com/codesite/ph/images/code_sm.png" width="153" height="55" alt="Google"></a></td>
+ <td style="padding-left: 0.8em">
+ 
+ <div id="pname" style="margin: 0px 0px -3px 0px">
+ <a href="/p/net-google-code/" style="text-decoration:none; color:#000">net-google-code</a>
+ </div>
+ <div id="psum">
+
+ <i><a href="/p/net-google-code/" style="text-decoration:none; color:#000">a simple client library for google code</a></i>
+ </div>
+ 
+ </td>
+ <td style="white-space:nowrap; text-align:right">
+ 
+ <form action="/hosting/search">
+ <input size="30" name="q" value="">
+ <input type="submit" name="projectsearch" value="Search Projects" >
+ </form>
+
+ 
+ </tr>
+ </table>
+
+
+<table id="mt" cellspacing="0" cellpadding="0" width="100%" border="0">
+ <tr>
+ <th onclick="if (!cancelBubble) _go('/p/net-google-code/');">
+ <div class="tab inactive">
+ <div class="round4"></div>
+ <div class="round2"></div>
+
+ <div class="round1"></div>
+ <div class="box-inner">
+ <a onclick="cancelBubble=true;" href="/p/net-google-code/">Project Home</a>
+ </div>
+ </div>
+ </th><td>  </td>
+ 
+ 
+ 
+ 
+ <th onclick="if (!cancelBubble) _go('/p/net-google-code/downloads/list');">
+ <div class="tab active">
+
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+ <a onclick="cancelBubble=true;" href="/p/net-google-code/downloads/list">Downloads</a>
+ </div>
+ </div>
+ </th><td>  </td>
+
+ 
+ 
+ 
+ 
+ 
+ <th onclick="if (!cancelBubble) _go('/p/net-google-code/w/list');">
+ <div class="tab inactive">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+ <a onclick="cancelBubble=true;" href="/p/net-google-code/w/list">Wiki</a>
+ </div>
+
+ </div>
+ </th><td>  </td>
+ 
+ 
+ 
+ 
+ 
+ <th onclick="if (!cancelBubble) _go('/p/net-google-code/issues/list');">
+ <div class="tab inactive">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+ <a onclick="cancelBubble=true;" href="/p/net-google-code/issues/list">Issues</a>
+
+ </div>
+ </div>
+ </th><td>  </td>
+ 
+ 
+ 
+ 
+ 
+ <th onclick="if (!cancelBubble) _go('/p/net-google-code/source/list');">
+ <div class="tab inactive">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+
+ <a onclick="cancelBubble=true;" href="/p/net-google-code/source/list">Source</a>
+ </div>
+ </div>
+ </th><td>  </td>
+ 
+ 
+ <td width="100%"> </td>
+ </tr>
+</table>
+<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0" class="st">
+ <tr>
+
+ 
+ 
+ 
+ 
+ <td>
+ <div class="issueDetail">
+<div class="isf">
+ 
+ 
+ 
+ <span class="inIssueEntry"> 
+ <a href="entry">New Download</a>
+ </span> |
+ 
+ 
+ <span class="inIssueList"> 
+ <span>Search</span>
+ <form action="list" method="GET" style="display:inline">
+
+ <select id="can" name="can" style="font-size:92%">
+ <option disabled="disabled">Search Within:</option>
+ 
+ <option value="1" > All Downloads</option>
+ <option value="3" > Featured Downloads</option>
+ <option value="2" selected="selected"> Current Downloads</option>
+ 
+ 
+ <option value="4" > Deprecated Downloads</option>
+
+ 
+ </select>
+ <span>for</span>
+ <input type="text" size="32" id="q" name="q" value="" style="font-size:92%" >
+ 
+ 
+ <input type="submit" value="Search" style="font-size:92%" >
+ </form>
+ </span>
+
+ 
+ 
+ | <a class="inItemDelete" href="delete?filename=Net-Google-Code-0.01.tar.gz">Delete</a>
+
+ 
+ 
+
+</div>
+</div>
+
+ </td>
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ <td height="4" align="right" valign="top" class="bevel-right">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ </td>
+ </tr>
+
+</table>
+<script type="text/javascript">
+ var cancelBubble = false;
+ function _go(url) { document.location = url; }
+</script>
+
+<div id="maincol">
+<!-- IE -->
+
+
+
+<div id="issueheader">
+<table cellpadding="0" cellspacing="0" width="100%"><tbody>
+ <tr>
+ <td class="vt h3" nowrap="nowrap">  Download:
+ 
+ </td>
+
+ <td width="90%" class="vt">
+ 
+ <span class="h3" >Net-Google-Code-0.01</span>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td nowrap="nowrap">
+ 
+  
+
+ 
+ </td>
+ </tr>
+</tbody></table>
+</div><table width="100%" cellpadding="0" cellspacing="0" border="0" class="issuepage">
+<tbody class="opened expand">
+ <tr>
+ <td id="issuemeta" rowspan="1000"> 
+ <table cellspacing="0" cellpadding="0">
+ <tr><th align="left">Uploaded by: </th><td width="100%">
+ <a href="/u/sunnavy/">sunnavy</a>
+
+ </td></tr>
+ <tr><th align="left">Uploaded: </th><td>
+ <span class="date" style="white-space:nowrap" title="Tue Jan  6 00:16:06 2009">Yesterday (21 hours ago)</span>
+ </td></tr>
+ <tr><th align="left">Downloads: </th><td>1</td></tr>
+ 
+ </table>
+<br>
+
+<br>
+<br>
+ </td>
+ <td class="vt issuedescription" width="100%" style="padding:16px">
+ <table><tr><td>
+ <div style="background:#ddf8cc; margin-bottom: 5px">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+
+ <a 
+ href="http://net-google-code.googlecode.com/files/Net-Google-Code-0.01.tar.gz"><img src="http://www.gstatic.com/codesite/ph/images/dl_arrow.gif" ></a> 
+ <a style="font-size: 140%"
+ 
+ href="http://net-google-code.googlecode.com/files/Net-Google-Code-0.01.tar.gz">Net-Google-Code-0.01.tar.gz</a>   37.4 KB
+ </div>
+ <div class="round1"></div>
+ <div class="round2"></div>
+ <div class="round4"></div>
+ </div>
+ </td></tr></table>
+
+ <span style="white-space:nowrap">SHA1 Checksum: 5073de2276f916cf5d74d7abfd78a463e15674a1</span><br>
+ <b>Tip:</b> Use the SHA1 checksum shown to verify file integrity. 
+ </td>
+ </tr>
+</tbody>
+</table>
+<br>
+<br>
+<br>
+<script type="text/javascript" src="http://www.gstatic.com/codesite/ph/3596478537346627501/js/dit_scripts_20081013.js"></script>
+
+
+ 
+ <div id="makechanges">
+ 
+ <div class="h4" style="margin-bottom: 0">Edit Download</div>
+ <div id="makechangesarea" style="margin-top:0; padding:5px">
+ <form action="update.do" method="POST" enctype="multipart/form-data" autocomplete="off">
+ <input type="hidden" name="_charset_" value="" >
+ <input type="hidden" name="projectname" value="net-google-code" >
+ <input type="hidden" name="token" value="58569824635a4975b8fe5f1717c31147" >
+
+ <input type="hidden" name="filename" value="Net-Google-Code-0.01.tar.gz" >
+ <input type="hidden" name="pagegen" value="1231305542955690" >
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="vt">
+ <table cellspacing="2" cellpadding="2" border="0" class="rowmajor" width="100%">
+ <tr><th style="width: 1em">Summary:</th><td class="inplace" colspan="2">
+ <input onfocus="_acof(event)"
+ onkeyup="_dirty(); return true;" id="addCommentTextArea"
+ name="summary" value="Net-Google-Code-0.01" /></td>
+
+ </tr>
+ <tr><th class="vt">Labels:<br>
+ </th>
+ <td class="labelediting" colspan="2">
+ <div id="editrow1">
+ <input onfocus="_acof(event)" id="labeledit0" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" />
+ <input onfocus="_acof(event)" id="labeledit1" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" />
+ <input onfocus="_acof(event)" id="labeledit2" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" /> <u id="addrow1" class="fakelink" onclick="_acrob(null);_showID('editrow2'); _hideEl(this)">Add a row</u>
+
+ </div>
+ <div id="editrow2" style="display:none; white-space:nowrap">
+ <input onfocus="_acof(event)" id="labeledit3" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" />
+ <input onfocus="_acof(event)" id="labeledit4" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" />
+ <input onfocus="_acof(event)" id="labeledit5" size="20"
+ onkeyup="_dirty(); if (this.value){_showID('editrow3');_hideID('addrow2');} return _vallab(this)"
+ onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" /> <u id="addrow2" class="fakelink" onclick="_acrob(null);_showID('editrow3'); _hideEl(this)">Add a row</u>
+ </div>
+ <div id="editrow3" style="display:none; white-space:nowrap">
+ <input onfocus="_acof(event)" id="labeledit6" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" />
+
+ <input onfocus="_acof(event)" id="labeledit7" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" />
+ <input onfocus="_acof(event)" id="labeledit8" size="20"
+ onkeyup="_dirty(); if (this.value){_showID('editrow4');_hideID('addrow3');} return _vallab(this)"
+ onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" /> <u id="addrow3" class="fakelink" onclick="_acrob(null);_showID('editrow4'); _hideEl(this)">Add a row</u>
+ </div>
+ <div id="editrow4" style="display:none; white-space:nowrap">
+ <input onfocus="_acof(event)" id="labeledit9" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" />
+ <input onfocus="_acof(event)" id="labeledit10" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" />
+ <input onfocus="_acof(event)" id="labeledit11" size="20"
+ onkeyup="_dirty(); if (this.value){_showID('editrow5');_hideID('addrow4');} return _vallab(this)"
+ onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" /> <u id="addrow4" class="fakelink" onclick="_acrob(null);_showID('editrow5'); _hideEl(this)">Add a row</u>
+ </div>
+
+ <div id="editrow5" style="display:none; white-space:nowrap">
+ <input onfocus="_acof(event)" id="labeledit12" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" />
+ <input onfocus="_acof(event)" id="labeledit13" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" />
+ <input onfocus="_acof(event)" id="labeledit14" size="20"
+ onkeyup="_dirty(); return _vallab(this)" onblur="_vallab(this); _RC(this,'hasfocus')"
+ name="label" value="" />
+ </div>
+ </td>
+ </tr>
+ 
+ <tr>
+ <td colspan="3"><span id="confirmarea" class="novel" style="padding-top:5px; margin:0">
+
+ <span id="confirmmsg"></span> 
+ 
+ </span>
+ </td>
+ </tr>
+ </table>
+ <input type="submit" id="submit" name="btn" value="Submit Changes" onfocus="_acrob(null)" >
+ <input type="button" id="discard" onclick="_acrob(null);_confirmDiscardUpdate(this); return false;" name="nobtn" value="Discard" onfocus="_acrob(null)" >
+ </td>
+ <td class="vt">
+
+ <div class="tip">
+ <div class="round4"></div>
+ <div class="round2"></div>
+ <div class="round1"></div>
+ <div class="box-inner">
+ <b>Important:</b> You cannot change the content of this download. If
+ you have a new file to publish, it must be published as a new download
+ with a distinct file name.<br><br>
+ <b>Tip:</b> Files can also be posted using command-line tools. <a
+ href="http://code.google.com/p/support/wiki/ScriptedUploads">Learn
+ more</a>
+
+ </div>
+ <div class="round1"></div>
+ <div class="round2"></div>
+ <div class="round4"></div>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </form>
+
+ </div>
+</div>
+
+<script type="text/javascript">
+ _exposeExistingLabelFields('edit');
+ _lfidprefix = 'labeledit';
+ _openIssueUpdateForm('net-google-code', 'downloadOptions')
+ var submit = document.getElementById('submit');
+ var cg = document.getElementById('cg');
+ if (cg != undefined) { submit.disabled='disabled'; }
+ function checksubmit() {
+ submit.disabled='disabled';
+ if (cg == undefined || cg.value.length > 1) {
+ submit.disabled='';
+ }
+ }
+</script>
+
+
+ <script type="text/javascript">
+ _onload();
+ </script>
+ 
+
+ 
+ <script type="text/javascript" src="http://www.gstatic.com/codesite/ph/3596478537346627501/js/core_scripts_20081103.js"></script>
+ 
+ 
+ 
+ </div>
+<div id="footer" dir="ltr">
+
+ 
+ <div class="text">
+ 
+ ©2008 Google -
+ <a href="/">Code Home</a> -
+ <a href="/tos.html">Terms of Service</a> -
+ <a href="http://www.google.com/privacy.html">Privacy Policy</a> -
+ <a href="/more/">Site Directory</a>
+ 
+ </div>
+
+</div>
+<script type="text/javascript">
+/**
+ * Reports analytics.
+ * It checks for the analytics functionality (window._gat) every 100ms
+ * until the analytics script is fully loaded in order to invoke siteTracker.
+ */
+function _CS_reportAnalytics() {
+ window.setTimeout(function() {
+ if (window._gat) {
+ var siteTracker = _gat._getTracker("UA-18071-1");
+ siteTracker._initData();
+ siteTracker._trackPageview();
+ 
+ } else {
+ _CS_reportAnalytics();
+ }
+ }, 100);
+}
+</script>
+
+ 
+ 
+
+
+ 
+ </body>
+</html>
+

Added: Net-Google-Code/trunk/t/sample/10.download.xml
==============================================================================
--- (empty file)
+++ Net-Google-Code/trunk/t/sample/10.download.xml	Wed Jan  7 00:35:05 2009
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+
+<feed xmlns="http://www.w3.org/2005/Atom">
+ <updated>2009-01-06T08:16:06Z</updated>
+ <id>http://code.google.com/feeds/p/net-google-code/downloads/basic</id>
+ <title>Downloads for project net-google-code on Google Code</title>
+ <link rel="self" type="application/atom+xml;type=feed" href="http://code.google.com/feeds/p/net-google-code/downloads/basic"/>
+ <link rel="alternate" type="text/html" href="http://code.google.com/p/net-google-code/downloads/list"/>
+ 
+ <entry>
+ <updated>2009-01-06T08:16:06Z</updated>
+ <id>http://code.google.com/feeds/p/net-google-code/downloads/basic/Net-Google-Code-0.01.tar.gz</id>
+ <link rel="alternate" type="text/html" href="http://code.google.com/p/net-google-code/downloads/detail?name=Net-Google-Code-0.01.tar.gz" />
+ <title>
+ Net-Google-Code-0.01.tar.gz (37.4 KB)
+ </title>
+ <author>
+ <name>sunnavy</name>
+ </author>
+ <content type="html">
+
+<pre>
+Net-Google-Code-0.01
+
+<a href="http://net-google-code.googlecode.com/files/Net-Google-Code-0.01.tar.gz">Download</a>
+</pre>
+ </content>
+</entry>
+
+ 
+</feed>
\ No newline at end of file



More information about the Bps-public-commit mailing list