Buckets:
NaTo1000/termux-app-bucket / termux-shared /src /main /java /com /termux /shared /net /url /UrlUtils.java
| package com.termux.shared.net.url; | |
| import androidx.annotation.Nullable; | |
| import com.termux.shared.data.DataUtils; | |
| import com.termux.shared.logger.Logger; | |
| import java.net.MalformedURLException; | |
| import java.net.URL; | |
| public class UrlUtils { | |
| /** The parts of a {@link URL}. */ | |
| public enum UrlPart { | |
| AUTHORITY, | |
| FILE, | |
| HOST, | |
| REF, | |
| FRAGMENT, | |
| PATH, | |
| PORT, | |
| PROTOCOL, | |
| QUERY, | |
| USER_INFO | |
| } | |
| private static final String LOG_TAG = "UrlUtils"; | |
| /** | |
| * Join a url base and destination. | |
| * | |
| * @param base The base url to open. | |
| * @param destination The destination url to open. | |
| * @param logError If an error message should be logged. | |
| * @return Returns the joined {@link String} Url, otherwise {@code null}. | |
| */ | |
| public static String joinUrl(final String base, String destination, boolean logError) { | |
| if (DataUtils.isNullOrEmpty(base)) return null; | |
| try { | |
| return new URL(new URL(base), destination).toString(); | |
| } catch (MalformedURLException e) { | |
| if (logError) | |
| Logger.logError(LOG_TAG, "Failed to join url base \"" + base + "\" and destination \"" + destination + "\": " + e.getMessage()); | |
| return null; | |
| } | |
| } | |
| /** | |
| * Get {@link URL} from url string. | |
| * | |
| * @param urlString The urlString string. | |
| * @return Returns the {@link URL} if a valid urlString, otherwise {@code null}. | |
| */ | |
| public static URL getUrl(String urlString) { | |
| if (DataUtils.isNullOrEmpty(urlString)) return null; | |
| try { | |
| return new URL(urlString); | |
| } catch (MalformedURLException e) { | |
| return null; | |
| } | |
| } | |
| /** | |
| * Get a {@link URL} part from url string. | |
| * | |
| * @param urlString The urlString string. | |
| * @param urlPart The part to get. | |
| * @return Returns the {@link URL} part if a valid urlString and part, otherwise {@code null}. | |
| */ | |
| public static String getUrlPart(String urlString, UrlPart urlPart) { | |
| URL url = getUrl(urlString); | |
| if (url == null) return null; | |
| switch (urlPart) { | |
| case AUTHORITY: | |
| return url.getAuthority(); | |
| case FILE: | |
| return url.getFile(); | |
| case HOST: | |
| return url.getHost(); | |
| case REF: | |
| case FRAGMENT: | |
| return url.getRef(); | |
| case PATH: | |
| return url.getPath(); | |
| case PORT: | |
| return String.valueOf(url.getPort()); | |
| case PROTOCOL: | |
| return url.getProtocol(); | |
| case QUERY: | |
| return url.getQuery(); | |
| case USER_INFO: | |
| return url.getUserInfo(); | |
| default: | |
| return null; | |
| } | |
| } | |
| /** Remove "https://www.", "https://", "www.", etc */ | |
| public static String removeProtocol(String urlString) { | |
| if (urlString == null) return null; | |
| return urlString.replaceFirst("^(http[s]?://www\\.|http[s]?://|www\\.)",""); | |
| } | |
| public static boolean areUrlsEqual(String url1, String url2) { | |
| if (url1 == null && url2 == null) return true; | |
| if (url1 == null || url2 == null) return false; | |
| return UrlUtils.removeProtocol(url1).replaceAll("/+$", "").equals(UrlUtils.removeProtocol(url2).replaceAll("/+$", "")); | |
| } | |
| } | |
Xet Storage Details
- Size:
- 3.48 kB
- Xet hash:
- d54be662499b953c6a166f83af4f706e1203e7425f8706f6debe105d441e708a
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.