101 lines
3.4 KiB
Java
101 lines
3.4 KiB
Java
package ctbrec.sites.cam4;
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import static ctbrec.io.HttpConstants.*;
|
|
import static java.nio.charset.StandardCharsets.*;
|
|
|
|
import java.io.IOException;
|
|
import java.util.Locale;
|
|
|
|
import org.json.JSONObject;
|
|
import ctbrec.Config;
|
|
import ctbrec.io.HttpClient;
|
|
import okhttp3.MediaType;
|
|
import okhttp3.Request;
|
|
import okhttp3.RequestBody;
|
|
import okhttp3.Response;
|
|
|
|
@Slf4j
|
|
public class Cam4HttpClient extends HttpClient {
|
|
public Cam4HttpClient(Config config) {
|
|
super("cam4", config);
|
|
}
|
|
|
|
@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;
|
|
}
|
|
|
|
String url = Cam4.BASE_URI + "/rest/v2.0/login";
|
|
log.debug("Logging in {}", url);
|
|
JSONObject bodyJson = new JSONObject();
|
|
bodyJson.put("username", config.getSettings().cam4Username);
|
|
bodyJson.put("password", config.getSettings().cam4Password);
|
|
RequestBody requestBody = RequestBody.create(bodyJson.toString().getBytes(UTF_8), MediaType.parse(MIMETYPE_APPLICATION_JSON));
|
|
Request req = new Request.Builder()
|
|
.url(url)
|
|
.header(USER_AGENT, config.getSettings().httpUserAgent)
|
|
.header(ACCEPT, MIMETYPE_APPLICATION_JSON)
|
|
.header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
|
|
.header(ORIGIN, Cam4.BASE_URI)
|
|
.header(REFERER, Cam4.BASE_URI)
|
|
.post(requestBody)
|
|
.build();
|
|
try (Response response = execute(req)) {
|
|
String body = response.body().string();
|
|
log.debug("Response: {} {}", response.code(), body);
|
|
if (response.isSuccessful()) {
|
|
JSONObject json = new JSONObject(body);
|
|
return json.optInt("userId") != 0;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* check, if the login worked by requesting unchecked mail
|
|
* @throws IOException
|
|
*/
|
|
public boolean checkLoginSuccess() throws IOException {
|
|
String url = Cam4.BASE_URI + "/rest/v2.0/login/user";
|
|
//String url = "http://login.cam4.com:1234/rest/v2.0/login/user";
|
|
log.debug("Checkin login success by calling {}", url);
|
|
Request req = new Request.Builder()
|
|
.url(url)
|
|
.header(USER_AGENT, config.getSettings().httpUserAgent)
|
|
//.header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
|
|
.header(REFERER, Cam4.BASE_URI + "/library")
|
|
.header(ACCEPT, MIMETYPE_APPLICATION_JSON)
|
|
.header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
|
|
.build();
|
|
try (Response response = execute(req)) {
|
|
String body = response.body().string();
|
|
log.debug("Response: {} {}", response.code(), body);
|
|
if (response.isSuccessful()) {
|
|
JSONObject json = new JSONObject(body);
|
|
return json.optInt("userId") != 0;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected double getTokenBalance() throws IOException {
|
|
if(!loggedIn) {
|
|
login();
|
|
}
|
|
|
|
throw new RuntimeException("Not implemented, yet");
|
|
}
|
|
}
|