burton 2004/09/30 12:27:38
Modified: feedparser/src/java/org/apache/commons/feedparser/locate
BlogService.java BlogServiceDiscovery.java
FeedLocator.java ProbeLocator.java
Log:
Fix for flickr... use HTTP 404 guys... ug
Revision Changes Path
1.4 +112 -32
jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/locate/BlogService.java
Index: BlogService.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/locate/BlogService.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BlogService.java 30 Sep 2004 18:00:32 -0000 1.3
+++ BlogService.java 30 Sep 2004 19:27:38 -0000 1.4
@@ -46,37 +46,6 @@
public static BlogService GREYMATTER = new BlogService(16, true);
public static BlogService TEXTAMERICA = new BlogService(17, false);
- public static BlogService YAHOOGROUPS = new BlogService(18, false) {
-
- public String getFeedResource( String resource ) {
-
-// * Input: http://groups.yahoo.com/group/aggregators/
-// *
-// * Output: http://rss.groups.yahoo.com/group/aggregators/rss
-
- if ( resource == null )
- return null;
-
- if ( resource.indexOf( "/group/" ) != -1 &&
- resource.indexOf( "groups.yahoo.com" ) != -1 ) {
-
- resource = "http://rss." +
- resource.substring( "http://".length(), resource.length() )
- ;
-
- if ( resource.endsWith( "/" ) ) {
- resource += "rss";
- } else {
- resource += "/rss";
- }
-
- }
-
- return resource;
- }
-
- };
-
/** The type of BlogService this is, such as BlogService.BLOSXOM. */
private int type;
@@ -122,7 +91,39 @@
public String getFeedResource( String resource ) {
return resource;
}
-
+
+ /**
+ * Set to true if getFeedResource() should be used.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Kevin A. Burton</a>
+ */
+ public boolean useCustomFeedResource() {
+ return false;
+ }
+
+ /**
+ * Return true when this BlogService supports this URL.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Kevin A. Burton</a>
+ */
+ public boolean accept( String resource, String content ) {
+ return false;
+ }
+
+ /**
+ * Required implementation when you want to perform a location map. The
+ * default implementation does nothing.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Kevin A. Burton</a>
+ */
+ public FeedReference[] getLocations() {
+
+ FeedReference[] locations = { new FeedReference( "",
FeedReference.RSS_MEDIA_TYPE) };
+
+ return locations;
+
+ }
+
public String toString() {
// use reflection to get the type string; useful so we don't have to
// maintain a list of types here. Since this is only used for debugging
@@ -164,4 +165,83 @@
public int hashCode() {
return type;
}
+
+ // **** custom BlogService impls ********************************************
+
+ public static BlogService YAHOOGROUPS = new BlogService( 18, false )
{
+
+ public String getFeedResource( String resource ) {
+
+ // * Input: http://groups.yahoo.com/group/aggregators/
+ // *
+ // * Output: http://rss.groups.yahoo.com/group/aggregators/rss
+
+ if ( resource == null )
+ return null;
+
+ if ( resource.indexOf( "/group/" ) != -1 &&
+ resource.indexOf( "groups.yahoo.com" ) != -1 ) {
+
+ resource = "http://rss." +
+ resource.substring( "http://".length(), resource.length() )
+ ;
+
+ if ( resource.endsWith( "/" ) ) {
+ resource += "rss";
+ } else {
+ resource += "/rss";
+ }
+
+ }
+
+ return resource;
+ }
+
+ public boolean useCustomFeedResource() {
+ return true;
+ }
+
+ };
+
+ public static BlogService FLICKR = new BlogService( 19, false )
{
+
+ public String getFeedResource( String resource ) {
+
+ // * Input: http://flickr.com/photos/tags/cats/
+ // *
+ // * Output:
http://flickr.com/services/feeds/photos_public.gne?tags=cats&format=atom_03
+
+ if ( resource == null )
+ return null;
+
+ int begin = resource.indexOf( "/tags/" );
+
+ //we can't continue here.
+ if ( begin == -1 )
+ return resource;
+
+ begin += 6;
+
+ int end = resource.lastIndexOf( "/" );
+ if ( end == -1 || end < begin )
+ end = resource.length();
+
+ String tag = resource.substring( begin, end );
+
+ return "http://flickr.com/services/feeds/photos_public.gne?tags=" +
+ tag +
+ "&format=atom_03";
+
+ }
+
+ public boolean useCustomFeedResource() {
+ return true;
+ }
+
+ public boolean accept( String resource, String content ) {
+ return resource.indexOf( "http://flickr.com" ) != -1;
+ }
+
+ };
+
}
1.4 +3 -0
jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/locate/BlogServiceDiscovery.java
Index: BlogServiceDiscovery.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/locate/BlogServiceDiscovery.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BlogServiceDiscovery.java 30 Sep 2004 18:00:32 -0000 1.3
+++ BlogServiceDiscovery.java 30 Sep 2004 19:27:38 -0000 1.4
@@ -121,6 +121,9 @@
else if ( isYahooGroups( resource, content ) ) {
return BlogService.YAHOOGROUPS;
}
+ else if ( BlogService.FLICKR.accept( resource, content ) ) {
+ return BlogService.FLICKR;
+ }
else {
return BlogService.UNKNOWN;
}
1.22 +1 -1
jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/locate/FeedLocator.java
Index: FeedLocator.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/locate/FeedLocator.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- FeedLocator.java 30 Sep 2004 18:00:32 -0000 1.21
+++ FeedLocator.java 30 Sep 2004 19:27:38 -0000 1.22
@@ -104,7 +104,7 @@
//String resource = "file:///projects/feedparser/tests/locate5.html";
//String resource = "file:///projects/feedparser/tests/locate6.html";
- String resource = "http://groups.yahoo.com/group/aggregators/";
+ String resource = "http://flickr.com/photos/tags/cat/";
//String resource = "file:///projects/feedparser/tests/locate8.html";
1.15 +11 -0
jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/locate/ProbeLocator.java
Index: ProbeLocator.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/locate/ProbeLocator.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- ProbeLocator.java 30 Sep 2004 18:00:32 -0000 1.14
+++ ProbeLocator.java 30 Sep 2004 19:27:38 -0000 1.15
@@ -174,7 +174,12 @@
probeMapping.put( BlogService.XANGA, xangaLocations);
probeMapping.put( BlogService.YAHOOGROUPS, yahooGroupsLocations);
+ //probeMapping.put( BlogService.YAHOOGROUPS, yahooGroupsLocations);
+
+ probeMapping.put( BlogService.FLICKR,
BlogService.FLICKR.getLocations() );
+
probeMapping.put( BlogService.UNKNOWN, unknownLocations );
+
probeMapping.put( BlogService.TEXTAMERICA, textAmericaLocations );
}
@@ -233,6 +238,12 @@
}
+ //right now this is ONLY for Flickr
+
+ if ( blogService.useCustomFeedResource() ) {
+ pathToTest = blogService.getFeedResource( resource );
+ }
+
log.info( "pathToTest = " + pathToTest );
if ( feedExists( pathToTest ) ) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]