package com.github.dreamhead.moco.parser.deserializer;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.github.dreamhead.moco.parser.model.CookieContainer;
import com.github.dreamhead.moco.parser.model.LatencyContainer;
import java.io.IOException;
import static com.github.dreamhead.moco.util.StringUtil.strip;
public class CookieContainerDeserializer extends JsonDeserializer<CookieContainer> {
@Override
public CookieContainer deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException {
JsonToken currentToken = jp.getCurrentToken();
if (currentToken == JsonToken.VALUE_STRING) {
return CookieContainer.newContainer(strip(jp.getText()));
}
if (currentToken == JsonToken.START_OBJECT) {
jp.nextToken();
InternalCookieContainer container = jp.readValueAs(InternalCookieContainer.class);
return container.toContainer();
}
return (CookieContainer) ctxt.handleUnexpectedToken(CookieContainer.class, jp);
}
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public static class InternalCookieContainer {
private String value;
private String path;
private String domain;
private LatencyContainer maxAge;
private boolean secure;
private boolean httpOnly;
private String template;
public CookieContainer toContainer() {
return CookieContainer.newContainer(value, path, domain, maxAge, secure, httpOnly, template);
}
}
}