mirror of https://github.com/shred/acme4j
Add postasget parameter to generic acme URI
parent
01398e1bbc
commit
33db1c2186
|
@ -16,9 +16,12 @@ package org.shredzone.acme4j.provider;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
|
||||||
|
import org.shredzone.acme4j.connector.Connection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A generic {@link AcmeProvider}. It should be working for all ACME servers complying to
|
* A generic {@link AcmeProvider}. It should be working for all ACME servers complying to
|
||||||
* the ACME specifications.
|
* the ACME specifications.
|
||||||
|
@ -28,6 +31,9 @@ import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
@ParametersAreNonnullByDefault
|
@ParametersAreNonnullByDefault
|
||||||
public class GenericAcmeProvider extends AbstractAcmeProvider {
|
public class GenericAcmeProvider extends AbstractAcmeProvider {
|
||||||
|
|
||||||
|
private static final Pattern PARAM_POST_AS_GET =
|
||||||
|
Pattern.compile("(^|.*?&)postasget=false(&.*|$)");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean accepts(URI serverUri) {
|
public boolean accepts(URI serverUri) {
|
||||||
return "http".equals(serverUri.getScheme())
|
return "http".equals(serverUri.getScheme())
|
||||||
|
@ -37,10 +43,21 @@ public class GenericAcmeProvider extends AbstractAcmeProvider {
|
||||||
@Override
|
@Override
|
||||||
public URL resolve(URI serverUri) {
|
public URL resolve(URI serverUri) {
|
||||||
try {
|
try {
|
||||||
return serverUri.toURL();
|
return new URL(serverUri.getScheme(), serverUri.getHost(), serverUri.getPort(), serverUri.getPath());
|
||||||
} catch (MalformedURLException ex) {
|
} catch (MalformedURLException ex) {
|
||||||
throw new IllegalArgumentException("Bad generic server URI", ex);
|
throw new IllegalArgumentException("Bad generic server URI", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
public Connection connect(URI serverUri) {
|
||||||
|
String query = serverUri.getQuery();
|
||||||
|
if (query != null && PARAM_POST_AS_GET.matcher(query).matches()) {
|
||||||
|
return new org.shredzone.acme4j.connector.PreDraft15Connection(createHttpConnector());
|
||||||
|
} else {
|
||||||
|
return super.connect(serverUri);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,8 @@ import java.net.URISyntaxException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.shredzone.acme4j.connector.Connection;
|
||||||
|
import org.shredzone.acme4j.connector.DefaultConnection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for {@link GenericAcmeProvider}.
|
* Unit tests for {@link GenericAcmeProvider}.
|
||||||
|
@ -50,6 +52,27 @@ public class GenericAcmeProviderTest {
|
||||||
|
|
||||||
URL resolvedUrl = provider.resolve(serverUri);
|
URL resolvedUrl = provider.resolve(serverUri);
|
||||||
assertThat(resolvedUrl.toString(), is(equalTo(serverUri.toString())));
|
assertThat(resolvedUrl.toString(), is(equalTo(serverUri.toString())));
|
||||||
|
|
||||||
|
Connection connection = provider.connect(serverUri);
|
||||||
|
assertThat(connection, is(instanceOf(DefaultConnection.class)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the postasget parameter is accepted.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
public void testPostAsGet() throws URISyntaxException {
|
||||||
|
URI serverUri = new URI("http://example.com/acme?postasget=false");
|
||||||
|
URI serverUriWithoutQuery = new URI("http://example.com/acme");
|
||||||
|
|
||||||
|
GenericAcmeProvider provider = new GenericAcmeProvider();
|
||||||
|
|
||||||
|
URL resolvedUrl = provider.resolve(serverUri);
|
||||||
|
assertThat(resolvedUrl.toString(), is(equalTo(serverUriWithoutQuery.toString())));
|
||||||
|
|
||||||
|
Connection connection = provider.connect(serverUri);
|
||||||
|
assertThat(connection, is(instanceOf(org.shredzone.acme4j.connector.PreDraft15Connection.class)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue