Convert GalleryPageUrlParser to kotlin

This commit is contained in:
FooIbar authored and tarsin committed 2023-04-03 00:06:40 +08:00
1 parent e9699abc81
commit 09a403cb53
1 file changed
+23 -43
@@ -13,58 +13,38 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hippo.ehviewer.client.parser
package com.hippo.ehviewer.client.parser;
import androidx.annotation.Nullable;
import com.hippo.ehviewer.client.EhUrl;
import com.hippo.yorozuya.NumberUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.hippo.ehviewer.client.EhUrl
import com.hippo.yorozuya.NumberUtils
import java.util.regex.Pattern
/**
* Like http://exhentai.org/s/91ea4b6d89/901103-12
*/
public final class GalleryPageUrlParser {
object GalleryPageUrlParser {
private val URL_STRICT_PATTERN = Pattern.compile(
"https?://(?:" + EhUrl.DOMAIN_EX + "|" + EhUrl.DOMAIN_E + "|" + EhUrl.DOMAIN_LOFI + ")/s/([0-9a-f]{10})/(\\d+)-(\\d+)",
)
private val URL_PATTERN = Pattern.compile("([0-9a-f]{10})/(\\d+)-(\\d+)")
private static final Pattern URL_STRICT_PATTERN = Pattern.compile(
"https?://(?:" + EhUrl.DOMAIN_EX + "|" + EhUrl.DOMAIN_E + "|" + EhUrl.DOMAIN_LOFI + ")/s/([0-9a-f]{10})/(\\d+)-(\\d+)");
private static final Pattern URL_PATTERN = Pattern.compile(
"([0-9a-f]{10})/(\\d+)-(\\d+)");
@Nullable
public static Result parse(String url) {
return parse(url, true);
}
@Nullable
public static Result parse(String url, boolean strict) {
if (url == null) {
return null;
}
Pattern pattern = strict ? URL_STRICT_PATTERN : URL_PATTERN;
Matcher m = pattern.matcher(url);
if (m.find()) {
Result result = new Result();
result.gid = NumberUtils.parseLongSafely(m.group(2), -1L);
result.pToken = m.group(1);
result.page = NumberUtils.parseIntSafely(m.group(3), 0) - 1;
if (result.gid < 0 || result.page < 0) {
return null;
fun parse(url: String?, strict: Boolean = true): Result? {
url ?: return null
val pattern = if (strict) URL_STRICT_PATTERN else URL_PATTERN
val m = pattern.matcher(url)
return if (m.find()) {
val gid = NumberUtils.parseLongSafely(m.group(2), -1L)
val pToken = m.group(1)!!
val page = NumberUtils.parseIntSafely(m.group(3), 0) - 1
if (gid < 0 || page < 0) {
null
} else {
Result(gid, pToken, page)
}
return result;
} else {
return null;
null
}
}
public static class Result {
public long gid;
public String pToken;
public int page;
}
class Result(val gid: Long, val pToken: String, val page: Int)
}