All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.itextpdf.io.util.UrlUtil Maven / Gradle / Ivy

There is a newer version: 9.0.0
Show newest version
/*
    This file is part of the iText (R) project.
    Copyright (c) 1998-2023 Apryse Group NV
    Authors: Apryse Software.

    This program is offered under a commercial and under the AGPL license.
    For commercial licensing, contact us at https://itextpdf.com/sales.  For AGPL licensing, see below.

    AGPL licensing:
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
    the Free Software Foundation, either version 3 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 Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see .
 */
package com.itextpdf.io.util;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;

/**
 * This file is a helper class for internal usage only.
 * Be aware that its API and functionality may be changed in future.
 */
public final class UrlUtil {

    private UrlUtil() {
    }

    /**
     * This method makes a valid URL from a given filename.
     * 

* This method makes the conversion of this library from the JAVA 2 platform * to a JDK1.1.x-version easier. * @param filename a given filename * @return a valid URL * @throws java.net.MalformedURLException */ public static URL toURL(String filename) throws MalformedURLException { URL url; try { url = new URL(filename); } catch (MalformedURLException e) { url = new File(filename).toURI().toURL(); } return url; } /** * This method makes a normalized URI from a given filename. * @param filename a given filename * @return a valid URI */ public static URI toNormalizedURI(String filename) { return toNormalizedURI(new File(filename)); } /** * This method makes a normalized URI from a given file. * @param file a given filename * @return a valid URI */ public static URI toNormalizedURI(File file) { return file.toURI().normalize(); } public static InputStream openStream(URL url) throws IOException { return url.openStream(); } /** * This method gets uri string from a file. * @param filename a given filename * @return a uri string */ public static String getFileUriString(String filename) throws MalformedURLException { return new File(filename).toURI().toURL().toExternalForm(); } /** * This method gets normalized uri string from a file. * @param filename a given filename * @return a normalized uri string */ public static String getNormalizedFileUriString(String filename) { return "file://" + UrlUtil.toNormalizedURI(filename).getPath(); } /** * Gets the input stream of connection related to last redirected url. You should manually close input stream after * calling this method to not hold any open resources. * * @param initialUrl an initial URL. * * @return an input stream of connection related to the last redirected url. * * @throws IOException signals that an I/O exception has occurred. */ public static InputStream getInputStreamOfFinalConnection(URL initialUrl) throws IOException { final URLConnection finalConnection = getFinalConnection(initialUrl); return finalConnection.getInputStream(); } /** * Gets the connection related to the last redirected url. You should close connection manually after calling * this method, to not hold any open resources. * * @param initialUrl an initial URL. * * @return connection related to the last redirected url. * * @throws IOException signals that an I/O exception has occurred. */ static URLConnection getFinalConnection(URL initialUrl) throws IOException { URL nextUrl = initialUrl; URLConnection connection = null; while (nextUrl != null) { connection = nextUrl.openConnection(); final String location = connection.getHeaderField("location"); nextUrl = location == null ? null : new URL(location); if (nextUrl != null) { // close input stream deliberately to close the handle which is created during getHeaderField invocation connection.getInputStream().close(); } } return connection; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy