package com.kickstarter.services;
import android.net.Uri;
import android.support.annotation.NonNull;
import com.kickstarter.libs.utils.Secrets;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class KSUri {
private KSUri() {}
public static boolean isAndroidPayUri(@NonNull final Uri uri, @NonNull final String webEndpoint) {
return isKickstarterUri(uri, webEndpoint)
&& (Secrets.RegExpPattern.ANDROID_PAY_1.matcher(uri.getPath()).matches()
|| Secrets.RegExpPattern.ANDROID_PAY_2.matcher(uri.getPath()).matches());
}
public static boolean isApiUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return isKickstarterUri(uri, webEndpoint) && Secrets.RegExpPattern.API.matcher(uri.getHost()).matches();
}
public static boolean isDiscoverCategoriesPath(final @NonNull String path) {
return DISCOVER_CATEGORIES_PATTERN.matcher(path).matches();
}
public static boolean isDiscoverScopePath(final @NonNull String path, final @NonNull String scope) {
final Matcher matcher = DISCOVER_SCOPE_PATTERN.matcher(path);
return matcher.matches() && scope.equals(matcher.group(1));
}
public static boolean isDiscoverPlacesPath(final @NonNull String path) {
return DISCOVER_PLACES_PATTERN.matcher(path).matches();
}
public static boolean isHivequeenUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return isKickstarterUri(uri, webEndpoint) && Secrets.RegExpPattern.HIVEQUEEN.matcher(uri.getHost()).matches();
}
public static boolean isKickstarterUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return uri.getHost().equals(Uri.parse(webEndpoint).getHost());
}
public static boolean isProjectUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return isKickstarterUri(uri, webEndpoint) && PROJECT_PATTERN.matcher(uri.getPath()).matches();
}
public static boolean isSignupUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return isKickstarterUri(uri, webEndpoint) && uri.getPath().equals("/signup");
}
public static boolean isStagingUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return isKickstarterUri(uri, webEndpoint) && Secrets.RegExpPattern.STAGING.matcher(uri.getHost()).matches();
}
public static boolean isCheckoutThanksUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return isKickstarterUri(uri, webEndpoint) && CHECKOUT_THANKS_PATTERN.matcher(uri.getPath()).matches();
}
public static boolean isModalUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return isKickstarterUri(uri, webEndpoint) && uri.getQueryParameter("modal") != null && uri.getQueryParameter("modal").equals("true");
}
public static boolean isProjectUpdateCommentsUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return isKickstarterUri(uri, webEndpoint) && PROJECT_UPDATE_COMMENTS_PATTERN.matcher(uri.getPath()).matches();
}
public static boolean isProjectUpdateUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return isKickstarterUri(uri, webEndpoint) && PROJECT_UPDATE_PATTERN.matcher(uri.getPath()).matches();
}
public static boolean isProjectUpdatesUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return isKickstarterUri(uri, webEndpoint) && PROJECT_UPDATES_PATTERN.matcher(uri.getPath()).matches();
}
public static boolean isWebUri(final @NonNull Uri uri, final @NonNull String webEndpoint) {
return isKickstarterUri(uri, webEndpoint) && !isApiUri(uri, webEndpoint);
}
// /discover/categories/param
private static final Pattern DISCOVER_CATEGORIES_PATTERN = Pattern.compile("\\A\\/discover\\/categories\\/.*");
// /discover/param
private static final Pattern DISCOVER_SCOPE_PATTERN = Pattern.compile("\\A\\/discover\\/([a-zA-Z0-9-_]+)\\z");
// /discover/places/param
private static final Pattern DISCOVER_PLACES_PATTERN = Pattern.compile("\\A\\/discover\\/places\\/[a-zA-Z0-9-_]+\\z");
// /projects/:creator_param/:project_param
private static final Pattern PROJECT_PATTERN = Pattern.compile(
"\\A\\/projects(\\/[a-zA-Z0-9_-]+)?\\/[a-zA-Z0-9_-]+\\/?\\z"
);
// /projects/:creator_param/:project_param/posts/:update_param/comments
private static final Pattern PROJECT_UPDATE_COMMENTS_PATTERN = Pattern.compile(
"\\A\\/projects(\\/[a-zA-Z0-9_-]+)?\\/[a-zA-Z0-9_-]+\\/posts\\/[a-zA-Z0-9-_]+\\/comments\\z"
);
// /projects/:creator_param/:project_param/posts/:update_param
private static final Pattern PROJECT_UPDATE_PATTERN = Pattern.compile(
"\\A\\/projects(\\/[a-zA-Z0-9_-]+)?\\/[a-zA-Z0-9_-]+\\/posts\\/[a-zA-Z0-9-_]+\\z"
);
// /projects/:creator_param/:project_param/posts
private static final Pattern PROJECT_UPDATES_PATTERN = Pattern.compile(
"\\A\\/projects(\\/[a-zA-Z0-9_-]+)?\\/[a-zA-Z0-9_-]+\\/posts\\z"
);
// /projects/:creator_param/:project_param/checkouts/1/thanks
private static final Pattern CHECKOUT_THANKS_PATTERN = Pattern.compile(
"\\A\\/projects(\\/[a-zA-Z0-9_-]+)?\\/[a-zA-Z0-9_-]+\\/checkouts\\/\\d+\\/thanks\\z"
);
}