package com.github.dreamhead.moco.handler.proxy;
import static com.github.dreamhead.moco.util.Preconditions.checkNotNullOrEmpty;
import static com.github.dreamhead.moco.util.URLs.join;
import static com.github.dreamhead.moco.util.URLs.toBase;
import static com.google.common.base.Strings.nullToEmpty;
public class ProxyConfig {
private final String localBase;
private final String remoteBase;
public ProxyConfig(final String localBase, final String remoteBase) {
this.localBase = localBase;
this.remoteBase = remoteBase;
}
public String localBase() {
return this.localBase;
}
public String remoteBase() {
return this.remoteBase;
}
public boolean canAccessedBy(final String uri) {
return uri.startsWith(localBase);
}
public String remoteUrl(final String uri) {
String relative = nullToEmpty(uri.replaceFirst(this.localBase, ""));
return join(remoteBase, relative);
}
public static Builder builder(final String localBase) {
return new Builder(localBase);
}
public static class Builder {
private final String localBase;
public Builder(final String localBase) {
this.localBase = localBase;
}
public ProxyConfig to(final String remoteBase) {
return new ProxyConfig(toBase(localBase),
toBase(checkNotNullOrEmpty(remoteBase, "Remote base should not be null")));
}
}
}