remove 'path' param from URLFilter.canHandle

This commit is contained in:
yushijinhun 2020-08-22 16:37:42 +08:00
parent 1ba5bbb678
commit 20224ede05
No known key found for this signature in database
GPG key ID: 5BC167F73EA558E4
5 changed files with 11 additions and 16 deletions

View file

@ -52,7 +52,7 @@ public class LegacySkinAPIFilter implements URLFilter {
} }
@Override @Override
public boolean canHandle(String domain, String path) { public boolean canHandle(String domain) {
return domain.equals("skins.minecraft.net"); return domain.equals("skins.minecraft.net");
} }

View file

@ -46,7 +46,7 @@ public class QueryProfileFilter implements URLFilter {
} }
@Override @Override
public boolean canHandle(String domain, String path) { public boolean canHandle(String domain) {
return domain.equals("sessionserver.mojang.com"); return domain.equals("sessionserver.mojang.com");
} }

View file

@ -48,7 +48,7 @@ public class QueryUUIDsFilter implements URLFilter {
} }
@Override @Override
public boolean canHandle(String domain, String path) { public boolean canHandle(String domain) {
return domain.equals("api.mojang.com"); return domain.equals("api.mojang.com");
} }

View file

@ -23,24 +23,19 @@ import moe.yushi.authlibinjector.internal.fi.iki.elonen.IHTTPSession;
import moe.yushi.authlibinjector.internal.fi.iki.elonen.Response; import moe.yushi.authlibinjector.internal.fi.iki.elonen.Response;
/** /**
* A URLFilter filters the URLs in the bytecode, and intercepts those he is interested in. * A URLFilter filters the URLs in the bytecode, and intercepts those it is interested in.
*/ */
public interface URLFilter { public interface URLFilter {
/** /**
* Returns true if the filter MAY be interested in the given URL. * Returns true if the filter MAY be interested in the given domain.
* *
* The URL is grabbed from the bytecode, and it may be different from the URL being used at runtime. * If this method returns true, the domain will be intercepted.
* Therefore, the URLs may be incomplete or malformed, or contain some template symbols. eg: * And when a request is sent to this domain, handle() will be invoked.
* https://api.mojang.com/profiles/ (the actual one being used is https://api.mojang.com/profiles/minecraft)
* https://sessionserver.mojang.com/session/minecraft/profile/<uuid> (template symbols)
*
* If this method returns true for the given URL, the URL will be intercepted.
* And when a request is sent to this URL, handle() will be invoked.
* If it turns out that the filter doesn't really want to intercept the URL (handle() returns empty), * If it turns out that the filter doesn't really want to intercept the URL (handle() returns empty),
* the request will be reverse-proxied to the original URL, as if nothing happened. * the request will be reverse-proxied to the original URL, as if nothing has happened.
*/ */
boolean canHandle(String domain, String path); boolean canHandle(String domain);
Optional<Response> handle(String domain, String path, IHTTPSession session) throws IOException; Optional<Response> handle(String domain, String path, IHTTPSession session) throws IOException;
} }

View file

@ -84,7 +84,7 @@ public class URLProcessor {
private Optional<String> transform(String protocol, String domain, String path) { private Optional<String> transform(String protocol, String domain, String path) {
boolean handleLocally = false; boolean handleLocally = false;
for (URLFilter filter : filters) { for (URLFilter filter : filters) {
if (filter.canHandle(domain, path)) { if (filter.canHandle(domain)) {
handleLocally = true; handleLocally = true;
break; break;
} }
@ -125,7 +125,7 @@ public class URLProcessor {
String domain = matcher.group("domain"); String domain = matcher.group("domain");
String path = matcher.group("path"); String path = matcher.group("path");
for (URLFilter filter : filters) { for (URLFilter filter : filters) {
if (filter.canHandle(domain, path)) { if (filter.canHandle(domain)) {
Optional<Response> result; Optional<Response> result;
try { try {
result = filter.handle(domain, path, session); result = filter.handle(domain, path, session);