com.github.dreamhead.moco.internal.ActualHttpServer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of moco-core Show documentation
Show all versions of moco-core Show documentation
Moco is an easy setup stub framework, mainly focusing on testing and integration.
package com.github.dreamhead.moco.internal;
import com.github.dreamhead.moco.HttpsCertificate;
import com.github.dreamhead.moco.MocoConfig;
import com.github.dreamhead.moco.MocoMonitor;
import com.github.dreamhead.moco.RequestMatcher;
import com.github.dreamhead.moco.dumper.HttpRequestDumper;
import com.github.dreamhead.moco.dumper.HttpResponseDumper;
import com.github.dreamhead.moco.monitor.QuietMonitor;
import com.github.dreamhead.moco.monitor.Slf4jMonitor;
import com.github.dreamhead.moco.monitor.ThreadSafeMonitor;
import com.github.dreamhead.moco.setting.HttpSetting;
import com.google.common.base.Optional;
import static com.google.common.base.Optional.of;
public class ActualHttpServer extends HttpConfiguration {
private final Optional certificate;
protected ActualHttpServer(final Optional port,
final Optional certificate,
final MocoMonitor monitor, final MocoConfig... configs) {
super(port, monitor, configs);
this.certificate = certificate;
}
public boolean isSecure() {
return certificate.isPresent();
}
public Optional getCertificate() {
return certificate;
}
protected ActualHttpServer createMergeServer(final ActualHttpServer thatServer) {
return newBaseServer(this.getPort().or(thatServer.getPort()), this.certificate.or(thatServer.certificate));
}
private ActualHttpServer newBaseServer(final Optional port, final Optional certificate) {
if (certificate.isPresent()) {
return createHttpsLogServer(port, certificate.get());
}
return createLogServer(port);
}
public static ActualHttpServer createHttpServerWithMonitor(final Optional port,
final MocoMonitor monitor,
final MocoConfig... configs) {
return new ActualHttpServer(port, Optional.absent(),
new ThreadSafeMonitor(monitor), configs);
}
public static ActualHttpServer createLogServer(final Optional port, final MocoConfig... configs) {
return createHttpServerWithMonitor(port,
new Slf4jMonitor(new HttpRequestDumper(), new HttpResponseDumper()), configs);
}
public static ActualHttpServer createQuietServer(final Optional port, final MocoConfig... configs) {
return createHttpServerWithMonitor(port, new QuietMonitor(), configs);
}
public static ActualHttpServer createHttpsServerWithMonitor(final Optional port,
final HttpsCertificate certificate,
final MocoMonitor monitor,
final MocoConfig... configs) {
return new ActualHttpServer(port, of(certificate), monitor, configs);
}
public static ActualHttpServer createHttpsLogServer(final Optional port,
final HttpsCertificate certificate,
final MocoConfig... configs) {
return createHttpsServerWithMonitor(port, certificate,
new Slf4jMonitor(new HttpRequestDumper(), new HttpResponseDumper()), configs);
}
public static ActualHttpServer createHttpsQuietServer(final Optional port,
final HttpsCertificate certificate,
final MocoConfig... configs) {
return ActualHttpServer.createHttpsServerWithMonitor(port, certificate, new QuietMonitor(), configs);
}
@Override
protected HttpSetting newSetting(final RequestMatcher matcher) {
return new HttpSetting(matcher);
}
}