package org.netmelody.cieye.spies.teamcity;
import java.text.SimpleDateFormat;
import org.netmelody.cieye.core.domain.CiServerType;
import org.netmelody.cieye.core.domain.Feature;
import org.netmelody.cieye.core.observation.CiSpy;
import org.netmelody.cieye.core.observation.CodeBook;
import org.netmelody.cieye.core.observation.CommunicationNetwork;
import org.netmelody.cieye.core.observation.KnownOffendersDirectory;
import org.netmelody.cieye.core.observation.ObservationAgency;
import com.google.common.base.Function;
public final class TeamCityObservationAgency implements ObservationAgency {
@Override
public CiSpy provideSpyFor(Feature feature, CommunicationNetwork network, KnownOffendersDirectory directory) {
final CodeBook codeBook = new CodeBook(new SimpleDateFormat("yyyyMMdd'T'HHmmssZ"))
.withCredentials(feature.username(), feature.password())
.withRawContentMunger(new Function<String, String>() {
@Override public String apply(String input) {
return input.replace("\"@", "\"");
}
});
return new TeamCitySpy(feature.endpoint(), directory, network.makeContact(codeBook));
}
@Override
public boolean canProvideSpyFor(CiServerType type) {
return "TEAMCITY".equals(type.name());
}
}