phex.utils.URLUtil.java Source code

Java tutorial

Introduction

Here is the source code for phex.utils.URLUtil.java

Source

/*
 *  PHEX - The pure-java Gnutella-servent.
 *  Copyright (C) 2001 - 2006 Phex Development Group
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
package phex.utils;

import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.URIException;

import phex.common.URN;
import phex.common.address.DestAddress;
import phex.download.RemoteFile;
import phex.http.GnutellaRequest;

public class URLUtil {

    /**
     * Returns a url to look up a URN over bitzi.com.
     * @param urn the URN to look up.
     * @return the bitzi url.
     */
    public static String buildBitziLookupURL(URN urn) {
        String url = "http://bitzi.com/lookup/" + urn.getNamespaceSpecificString() + "?detail&ref=phex";
        return url;
    }

    /**
     * Returns a magnet URL in the format:
     * magnet:?xt=urn:sha1:<sha1NSS>&dn=<filename>
     * @param sha1NSS the sha1 of the file.
     * @param filename the filename
     * @return the magnet URL string.
     */
    public static String buildMagnetURL(String sha1NSS, String filename) {
        String url = "magnet:?xt=urn:sha1:" + sha1NSS + "&dn=" + URLCodecUtils.encodeURL(filename);
        return url;
    }

    public static String buildMagnetURLWithXS(String sha1NSS, String filename, DestAddress ha) {
        String url = "magnet:?xt=urn:sha1:" + sha1NSS + "&dn=" + URLCodecUtils.encodeURL(filename) + "&xs="
                + buildHostURL(ha) + GnutellaRequest.GNUTELLA_URI_RES_PREFIX + "urn:sha1:" + sha1NSS;
        return url;
    }

    public static String buildFileURL(RemoteFile file) {
        return "http://" + file.getHostAddress().getFullHostName() + "/get/" + file.getFileIndex() + "/"
                + URLCodecUtils.encodeURL(file.getFilename());
    }

    public static String buildName2ResourceURL(URN urn) {
        return GnutellaRequest.GNUTELLA_URI_RES_PREFIX + urn.getAsString();
    }

    public static String buildName2ResThexURL(URN urn, String tigerTreeRoot) {
        return GnutellaRequest.GNUTELLA_URI_RES_THEX_PREFIX + urn.getAsString() + ";" + tigerTreeRoot;
    }

    public static String buildFullName2ResourceURL(DestAddress ha, URN urn) {
        return buildHostURL(ha) + GnutellaRequest.GNUTELLA_URI_RES_PREFIX + urn.getAsString();
    }

    public static String buildHostURL(DestAddress address) {
        return "http://" + address.getFullHostName();
    }

    public static String getFileNameFromUri(URI uri) throws URIException {
        String path;
        path = uri.getPath();
        if (path == null) {
            return uri.getHost();
        }
        int at = path.lastIndexOf("/");
        int to = path.length();
        return (at >= 0) ? path.substring(at + 1, to) : path;
    }

    public static String getPathQueryFromUri(URI uri) throws URIException {
        String path;
        String query;
        path = uri.getPath();
        query = uri.getQuery();

        uri.getCurrentHierPath();

        if (query != null && query.length() > 0) {
            return path + "?" + query;
        }

        if (path == null) {
            return "/";
        } else {
            return path;
        }
    }

    /**
     * Tries to identify a URN in the query part of the uri.
     * @param uri
     * @return the urn if found otherwise null
     * @throws URIException
     */
    public static URN getQueryURN(URI uri) throws URIException {
        String query = uri.getQuery();
        if (query != null && query.length() > 0) {
            if (URN.isValidURN(query)) {
                return new URN(query);
            }
        }
        return null;
    }
}