Untitled
unknown
java
10 months ago
4.2 kB
9
Indexable
@Service
public class HttpClientImpl implements IScheduleHttpClient
{
private final WebClient webClient;
private final IStateManager stateManager;
public HttpClientImpl(WebClient webClient, IStateManager stateManager)
{
this.webClient = webClient;
this.stateManager = stateManager;
}
public String getInitialPage()
{
try
{
String body = webClient.get().retrieve().bodyToMono(String.class).block();
stateManager.updateStates(body, true);
return changeDepartment();
}
catch (Exception e)
{
stateManager.clearState();
throw e;
}
}
public String makePostRequest(Map<String, String> params)
{
try
{
String formParams = buildFormParams(params, stateManager.getEmulatedStates());
String response = webClient.post().uri("/").header("Content-Type", "application/x-www-form-urlencoded")
.bodyValue(formParams).retrieve().bodyToMono(String.class).block();
if (response != null)
{
stateManager.updateStates(response, false);
return response.split("\\|")[7];
}
return null;
}
catch (Exception e)
{
stateManager.clearState();
throw e;
}
}
private String buildFormParams(Map<String, String> baseParams, Map<String, String> stateParams)
{
return Stream.concat(baseParams.entrySet().stream(), stateParams.entrySet().stream()).map(
entry -> URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8) + "=" + URLEncoder.encode(
entry.getValue(), StandardCharsets.UTF_8)).collect(Collectors.joining("&"));
}
public String getDetails(String id)
{
Map<String, String> params = Map.ofEntries(
Map.entry("RadScriptManager1", "RadToolTipManager1RTMPanel|RadToolTipManager1RTMPanel"),
Map.entry("__EVENTTARGET", "RadToolTipManager1RTMPanel"), Map.entry("__EVENTARGUMENT", ""),
Map.entry("RadToolTipManager1_ClientState",
"{\"AjaxTargetControl\":\"{html_id}\",\"Value\":\"{html_id}\"}".replace("{html_id}", id)));
return makePostRequest(params);
}
public String changeDepartment()
{
Map<String, String> params = Map.ofEntries(Map.entry("RadScriptManager1", "RadAjaxPanel1Panel|WydzialComboBox"),
Map.entry("__EVENTTARGET", "WydzialComboBox"),
Map.entry("__EVENTARGUMENT", "{\"Command\":\"Select\",\"Index\":1}"),
Map.entry("WydzialComboBox", "Gdańsk"), Map.entry("WydzialComboBox_ClientState",
"{\"logEntries\":[],\"value\":\"2\",\"text\":\"Gdańsk\",\"enabled\":true,\"checkedIndices\":[],\"checkedItemsTextOverflows\":false}"),
Map.entry("__ASYNCPOST", "true"), Map.entry("RadAJAXControlID", "RadAjaxPanel1"));
return makePostRequest(params);
}
public String changeDate(String targetDate)
{
Map<String, String> params = Map.ofEntries(Map.entry("RadScriptManager1", "RadAjaxPanel1Panel|DataPicker"),
Map.entry("__EVENTTARGET", "DataPicker"), Map.entry("__EVENTARGUMENT", ""),
Map.entry("DataPicker", targetDate), Map.entry("DataPicker$dateInput", targetDate),
Map.entry("DataPicker_ClientState", ""), Map.entry("DataPicker_dateInput_ClientState", String.format(
"{\"enabled\":true,\"emptyMessage\":\"\",\"validationText\":\"%s-00-00-00\",\"valueAsString\":\"%s-00-00-00\",\"minDateStr\":\"1980-01-01-00-00-00\",\"maxDateStr\":\"2099-12-31-00-00-00\",\"lastSetTextBoxValue\":\"%s\"}",
targetDate, targetDate, targetDate)), Map.entry("__ASYNCPOST", "true"),
Map.entry("RadAJAXControlID", "RadAjaxPanel1"));
return makePostRequest(params);
}
public boolean checkDate(String body, String targetDate)
{
Document document = Jsoup.parse(body);
Element dateElement = document.getElementById("DataPicker_dateInput");
if (dateElement == null)
return false;
return !(dateElement.attr("value").equals(targetDate));
}
}Editor is loading...
Leave a Comment