ctbrec-5.3.2-experimental/common/src/main/java/ctbrec/sites/jasmin/LiveJasminHttpClient.java

99 lines
3.0 KiB
Java

package ctbrec.sites.jasmin;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException;
import java.util.Locale;
import java.util.NoSuchElementException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ctbrec.Config;
import ctbrec.io.HttpClient;
import okhttp3.Cookie;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class LiveJasminHttpClient extends HttpClient {
private static final Logger LOG = LoggerFactory.getLogger(LiveJasminHttpClient.class);
protected LiveJasminHttpClient(Config config) {
super("livejasmin", config);
// delete all cookies, if we are guests, because old guest sessions cause
// endless redirects
if(Config.getInstance().getSettings().livejasminUsername.isEmpty()) {
getCookieJar().clear();
}
}
@Override
public synchronized boolean login() throws IOException {
if (loggedIn) {
return true;
}
boolean cookiesWorked = checkLoginSuccess();
if (cookiesWorked) {
loggedIn = true;
LOG.debug("Logged in with cookies");
return true;
}
return false;
}
public synchronized boolean login(boolean renew) throws IOException {
if (loggedIn && !renew) {
return true;
}
boolean cookiesWorked = checkLoginSuccess();
if (cookiesWorked) {
loggedIn = true;
LOG.debug("Logged in with cookies");
return true;
}
return false;
}
public boolean checkLoginSuccess() throws IOException {
OkHttpClient temp = client.newBuilder()
.followRedirects(false)
.followSslRedirects(false)
.build();
String url = "https://m." + LiveJasmin.baseDomain + "/en/member/favourite/get-favourite-list?ajax=1";
Request request = new Request.Builder()
.url(url)
.addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgentMobile)
.addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader(REFERER, LiveJasmin.baseUrl)
.addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build();
try(Response response = temp.newCall(request).execute()) {
LOG.debug("Login Check {}: {} - {}", url, response.code(), response.message());
if(response.isSuccessful()) {
return true;
} else {
return false;
}
}
}
public String getSessionId() {
Cookie sessionCookie = getCookieJar().getCookie(HttpUrl.parse(LiveJasmin.baseUrl), "session");
if(sessionCookie != null) {
return sessionCookie.value();
} else {
throw new NoSuchElementException("session cookie not found");
}
}
}