New method Proxy#create.

master
Sutra Zhou 2020-06-24 13:43:16 +08:00
parent 6d3f2d9b64
commit 48bc73fbff
2 changed files with 88 additions and 33 deletions

View File

@ -20,6 +20,21 @@ public class Proxy {
private String password; private String password;
public static Proxy create(final URI uri) {
Proxy proxy = new Proxy(uri.getHost(), uri.getPort(), uri.getScheme());
String userInfo = uri.getUserInfo();
if (userInfo != null) {
String[] up = userInfo.split(":");
if (up.length == 1) {
proxy.username = up[0].isEmpty() ? null : up[0];
} else {
proxy.username = up[0].isEmpty() ? null : up[0];
proxy.password = up[1].isEmpty() ? null : up[1];
}
}
return proxy;
}
public Proxy(String host, int port) { public Proxy(String host, int port) {
this(host, port, null); this(host, port, null);
} }

View File

@ -1,7 +1,9 @@
package us.codecraft.webmagic.proxy; package us.codecraft.webmagic.proxy;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -45,6 +47,44 @@ public class ProxyTest {
} }
} }
@Test
public void testCreate() {
Proxy proxy = Proxy.create(URI.create("//127.0.0.1:8080"));
assertNull(proxy.getScheme());
assertNull(proxy.getUsername());
assertNull(proxy.getPassword());
assertEquals("127.0.0.1", proxy.getHost());
assertEquals(8080, proxy.getPort());
proxy = Proxy.create(URI.create("http://127.0.0.1:8080"));
assertEquals("http", proxy.getScheme());
assertNull(proxy.getUsername());
assertNull(proxy.getPassword());
assertEquals("127.0.0.1", proxy.getHost());
assertEquals(8080, proxy.getPort());
proxy = Proxy.create(URI.create("//username:password@127.0.0.1:8080"));
assertNull(proxy.getScheme());
assertEquals("username", proxy.getUsername());
assertEquals("password", proxy.getPassword());
assertEquals("127.0.0.1", proxy.getHost());
assertEquals(8080, proxy.getPort());
proxy = Proxy.create(URI.create("//username@127.0.0.1:8080"));
assertNull(proxy.getScheme());
assertEquals("username", proxy.getUsername());
assertNull(proxy.getPassword());
assertEquals("127.0.0.1", proxy.getHost());
assertEquals(8080, proxy.getPort());
proxy = Proxy.create(URI.create("//:password@127.0.0.1:8080"));
assertNull(proxy.getScheme());
assertNull(proxy.getUsername());
assertEquals("password", proxy.getPassword());
assertEquals("127.0.0.1", proxy.getHost());
assertEquals(8080, proxy.getPort());
}
@Test @Test
public void testToString() { public void testToString() {
assertEquals("//127.0.0.1:8080", new Proxy("127.0.0.1", 8080).toString()); assertEquals("//127.0.0.1:8080", new Proxy("127.0.0.1", 8080).toString());