001: // IResourceInfo.java
002: // -------------------------------------
003: // part of YACY
004: // (C) by Michael Peter Christen; mc@anomic.de
005: // first published on http://www.anomic.de
006: // Frankfurt, Germany, 2006
007: //
008: // This file ist contributed by Martin Thelian
009: //
010: // $LastChangedDate: 2006-02-20 23:57:42 +0100 (Mo, 20 Feb 2006) $
011: // $LastChangedRevision: 1715 $
012: // $LastChangedBy: theli $
013: //
014: // This program is free software; you can redistribute it and/or modify
015: // it under the terms of the GNU General Public License as published by
016: // the Free Software Foundation; either version 2 of the License, or
017: // (at your option) any later version.
018: //
019: // This program is distributed in the hope that it will be useful,
020: // but WITHOUT ANY WARRANTY; without even the implied warranty of
021: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
022: // GNU General Public License for more details.
023: //
024: // You should have received a copy of the GNU General Public License
025: // along with this program; if not, write to the Free Software
026: // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
027: //
028: // Using this software in any meaning (reading, learning, copying, compiling,
029: // running) means that you agree that the Author(s) is (are) not responsible
030: // for cost, loss of data or any harm that may be caused directly or indirectly
031: // by usage of this softare or this documentation. The usage of this software
032: // is on your own risk. The installation and usage (starting/running) of this
033: // software may allow other people or application to access your computer and
034: // any attached devices and is highly dependent on the configuration of the
035: // software which must be done by the user of the software; the author(s) is
036: // (are) also not responsible for proper configuration and usage of the
037: // software, even if provoked by documentation provided together with
038: // the software.
039: //
040: // Any changes to this file according to the GPL as documented in the file
041: // gpl.txt aside this file in the shipment you received can be done to the
042: // lines that follows this copyright notice here, but changes must not be
043: // done inside the copyright notive above. A re-distribution must contain
044: // the intact and unchanged copyright notice.
045: // Contributions and changes to the program code must be marked as such.
046:
047: package de.anomic.plasma.cache;
048:
049: import java.util.Date;
050: import java.util.TreeMap;
051:
052: import de.anomic.yacy.yacyURL;
053:
054: /**
055: * A class containing metadata about a downloaded resource
056: */
057: public interface IResourceInfo {
058:
059: /**
060: * @return the resource information
061: */
062: public TreeMap<String, String> getMap();
063:
064: /**
065: * @return the URL of this content
066: */
067: public yacyURL getUrl();
068:
069: /**
070: * Returns the referer URL of this URL
071: * @return referer URL
072: */
073: public yacyURL getRefererUrl();
074:
075: /**
076: * Returns the mimetype of the cached object
077: * @return mimetype
078: */
079: public String getMimeType();
080:
081: /**
082: * Returns the charset of the resource
083: * @return returns the name of the charset or <code>null</code> if unknown
084: */
085: public String getCharacterEncoding();
086:
087: /**
088: * Returns the modification date of the cached object
089: * @return the modifiaction date
090: */
091: public Date getModificationDate();
092:
093: /**
094: * Specifies if the resource was requested with a
095: * if modified since date
096: * @return the <code>Modified since</code>-header field or <code>null</code>
097: * if the request didn't contain this field
098: */
099: public Date ifModifiedSince();
100:
101: /**
102: * Specifies if the resource was requested with
103: * client specific information (e.g. cookies for http)
104: * @return whether additional client specific information were passed
105: * along the reuqest for this resource
106: */
107: public boolean requestWithCookie();
108:
109: /**
110: * Specifies if the request prohibits indexing
111: * @return whether indexing is proibited by this request
112: */
113: public boolean requestProhibitsIndexing();
114:
115: /**
116: * Determines if a resource that was downloaded by the crawler
117: * is allowed to be indexed.
118: *
119: * @return an error string describing the reason why the
120: * resourse should not be indexed or null if indexing is allowed
121: */
122: public String shallIndexCacheForCrawler();
123:
124: /**
125: * Determines if a resource that was downloaded by the proxy
126: * is allowed to be indexed.
127: *
128: * @return an error string describing the reason why the
129: * resourse should not be indexed or null if indexing is allowed
130: */
131: public String shallIndexCacheForProxy();
132:
133: public String shallStoreCacheForProxy();
134:
135: public boolean shallUseCacheForProxy();
136:
137: public boolean validResponseStatus(String responseStatus);
138: }
|