package org.geogebra.web.web.move.ggtapi.models;
import org.geogebra.common.move.ggtapi.models.ClientInfo;
import org.geogebra.common.move.ggtapi.models.Material;
import org.geogebra.common.move.ggtapi.models.Request;
import org.geogebra.common.move.ggtapi.models.json.JSONObject;
import org.geogebra.common.util.debug.Log;
public class AnimGifRequest implements Request {
private final static String API = "1.0.0";
private final static String TYPE = "convertGGBToGIF";
private String sliderName;
private int timing;
private boolean isLoop;
private String base64;
/**
* @param app
* AppW
* @param material
* {@link Material}
*/
AnimGifRequest(String base64, String sliderName, int timing, boolean isLoop) {
this.base64 = base64;
this.sliderName = sliderName;
this.timing = timing;
this.isLoop = isLoop;
}
@Override
public String toJSONString(ClientInfo client) {
JSONObject request = new JSONObject();
JSONObject api = new JSONObject();
StringBuilder params = new StringBuilder();
try {
api.put("-api", AnimGifRequest.API);
// login
// JSONObject login = new JSONObject();
// login.put("-type", new JSONString(this.TYPE));
// login.put("-token", new JSONString(client.getModel()
// .getLoggedInUser().getLoginToken()));
// api.put("login", login);
// task
JSONObject task = new JSONObject();
JSONObject ggbBase64 = new JSONObject();
ggbBase64.put("-base64", base64);
task.put("-type", TYPE);
task.put("file", ggbBase64);
params.append("--slider=");
params.append(sliderName);
params.append(" --loop=");
params.append(isLoop);
params.append(" --delay=");
params.append(timing);
task.put("params", params.toString());
api.put("task", task);
request.put("request", api);
return request.toString();
} catch (Exception e) {
Log.debug("problem building request: " + e.getMessage());
return null;
}
}
/**
* @param app
* AppW
* @param sliderName
* The slider of animation steps
* @return AnimGifRequest
*/
public static AnimGifRequest getRequestElement(String base64,
String sliderName,
int timing, boolean isLoop) {
return new AnimGifRequest(base64, sliderName, timing, isLoop);
}
}