Use constants from HttpConstants

This commit is contained in:
0xboobface 2019-12-27 15:14:55 +01:00
parent b91bfdc353
commit 87b0ce0d21
42 changed files with 472 additions and 348 deletions

View File

@ -1,5 +1,7 @@
package ctbrec.ui; package ctbrec.ui;
import static ctbrec.io.HttpConstants.*;
import java.io.EOFException; import java.io.EOFException;
import java.io.IOException; import java.io.IOException;
import java.util.Objects; import java.util.Objects;
@ -354,7 +356,7 @@ public class ThumbCell extends StackPane {
imageLoadingThreadPool.submit(() -> { imageLoadingThreadPool.submit(() -> {
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try(Response resp = CamrecApplication.httpClient.execute(req)) { try(Response resp = CamrecApplication.httpClient.execute(req)) {
if(resp.isSuccessful()) { if(resp.isSuccessful()) {

View File

@ -1,5 +1,6 @@
package ctbrec.ui.news; package ctbrec.ui.news;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
@ -42,7 +43,7 @@ public class NewsTab extends Tab implements TabSelectionListener {
Request request = new Request.Builder() Request request = new Request.Builder()
.url(URL) .url(URL)
.header("Authorization", "Bearer " + ACCESS_TOKEN) .header("Authorization", "Bearer " + ACCESS_TOKEN)
.header("User-Agent", "ctbrec " + CamrecApplication.getVersion().toString()) .header(USER_AGENT, "ctbrec " + CamrecApplication.getVersion().toString())
.build(); .build();
try(Response response = CamrecApplication.httpClient.execute(request)) { try(Response response = CamrecApplication.httpClient.execute(request)) {
if(response.isSuccessful()) { if(response.isSuccessful()) {

View File

@ -1,10 +1,12 @@
package ctbrec.ui.sites.bonga; package ctbrec.ui.sites.bonga;
import static ctbrec.Model.State.*; import static ctbrec.Model.State.*;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
@ -22,7 +24,7 @@ import okhttp3.Response;
public class BongaCamsUpdateService extends PaginatedScheduledService { public class BongaCamsUpdateService extends PaginatedScheduledService {
private static final transient Logger LOG = LoggerFactory.getLogger(BongaCamsUpdateService.class); private static final Logger LOG = LoggerFactory.getLogger(BongaCamsUpdateService.class);
private BongaCams bongaCams; private BongaCams bongaCams;
private String url; private String url;
@ -37,15 +39,15 @@ public class BongaCamsUpdateService extends PaginatedScheduledService {
return new Task<List<Model>>() { return new Task<List<Model>>() {
@Override @Override
public List<Model> call() throws IOException { public List<Model> call() throws IOException {
String _url = url + ((page-1) * 36); String pageUrl = url + ((page-1) * 36);
LOG.debug("Fetching page {}", _url); LOG.debug("Fetching page {}", pageUrl);
Request request = new Request.Builder() Request request = new Request.Builder()
.url(_url) .url(pageUrl)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT, Locale.ENGLISH.getLanguage())
.addHeader("Referer", bongaCams.getBaseUrl()) .addHeader(REFERER, bongaCams.getBaseUrl())
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
Response response = bongaCams.getHttpClient().execute(request); Response response = bongaCams.getHttpClient().execute(request);
if (response.isSuccessful()) { if (response.isSuccessful()) {
@ -53,9 +55,9 @@ public class BongaCamsUpdateService extends PaginatedScheduledService {
List<Model> models = new ArrayList<>(); List<Model> models = new ArrayList<>();
JSONObject json = new JSONObject(content); JSONObject json = new JSONObject(content);
if(json.optString("status").equals("success")) { if(json.optString("status").equals("success")) {
JSONArray _models = json.getJSONArray("models"); JSONArray jsonModels = json.getJSONArray("models");
for (int i = 0; i < _models.length(); i++) { for (int i = 0; i < jsonModels.length(); i++) {
JSONObject m = _models.getJSONObject(i); JSONObject m = jsonModels.getJSONObject(i);
String name = m.optString("username"); String name = m.optString("username");
if(name.isEmpty()) { if(name.isEmpty()) {
continue; continue;

View File

@ -1,5 +1,7 @@
package ctbrec.ui.sites.fc2live; package ctbrec.ui.sites.fc2live;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -7,6 +9,7 @@ import java.util.List;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
import ctbrec.Config;
import ctbrec.Model; import ctbrec.Model;
import ctbrec.io.HttpException; import ctbrec.io.HttpException;
import ctbrec.sites.fc2live.Fc2Live; import ctbrec.sites.fc2live.Fc2Live;
@ -41,7 +44,8 @@ public class Fc2FollowedUpdateService extends PaginatedScheduledService {
.build(); .build();
Request req = new Request.Builder() Request req = new Request.Builder()
.url(fc2live.getBaseUrl() + "/api/favoriteManager.php") .url(fc2live.getBaseUrl() + "/api/favoriteManager.php")
.header("Referer", fc2live.getBaseUrl()) .header(REFERER, fc2live.getBaseUrl())
.header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("Content-Type", "application/x-www-form-urlencoded") .header("Content-Type", "application/x-www-form-urlencoded")
.post(body) .post(body)
.build(); .build();

View File

@ -1,8 +1,11 @@
package ctbrec.ui.sites.fc2live; package ctbrec.ui.sites.fc2live;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.json.JSONArray; import org.json.JSONArray;
@ -22,7 +25,7 @@ import okhttp3.RequestBody;
import okhttp3.Response; import okhttp3.Response;
public class Fc2UpdateService extends PaginatedScheduledService { public class Fc2UpdateService extends PaginatedScheduledService {
private static final transient Logger LOG = LoggerFactory.getLogger(Fc2UpdateService.class); private static final Logger LOG = LoggerFactory.getLogger(Fc2UpdateService.class);
private String url; private String url;
private Fc2Live fc2live; private Fc2Live fc2live;
@ -42,11 +45,11 @@ public class Fc2UpdateService extends PaginatedScheduledService {
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.method("POST", body) .method("POST", body)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("Referer", Fc2Live.BASE_URL) .header(REFERER, Fc2Live.BASE_URL)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
LOG.debug("Fetching page {}", url); LOG.debug("Fetching page {}", url);
try(Response resp = fc2live.getHttpClient().execute(req)) { try(Response resp = fc2live.getHttpClient().execute(req)) {

View File

@ -1,8 +1,11 @@
package ctbrec.ui.sites.flirt4free; package ctbrec.ui.sites.flirt4free;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import org.jsoup.nodes.Element; import org.jsoup.nodes.Element;
@ -37,10 +40,10 @@ public class Flirt4FreeFavoritesUpdateService extends PaginatedScheduledService
SiteUiFactory.getUi(flirt4free).login(); SiteUiFactory.getUi(flirt4free).login();
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("Referer", flirt4free.getBaseUrl()) .header(REFERER, flirt4free.getBaseUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try (Response response = flirt4free.getHttpClient().execute(request)) { try (Response response = flirt4free.getHttpClient().execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
@ -58,7 +61,11 @@ public class Flirt4FreeFavoritesUpdateService extends PaginatedScheduledService
model.setOnline(modelHtml.contains("I'm Online")); model.setOnline(modelHtml.contains("I'm Online"));
try { try {
model.setOnlineState(model.isOnline() ? Model.State.ONLINE : Model.State.OFFLINE); model.setOnlineState(model.isOnline() ? Model.State.ONLINE : Model.State.OFFLINE);
} catch (ExecutionException | InterruptedException e) {} } catch (InterruptedException e) {
Thread.currentThread().interrupt();
} catch (ExecutionException e) {
// ignore
}
models.add(model); models.add(model);
} }
return models; return models;

View File

@ -1,5 +1,7 @@
package ctbrec.ui.sites.flirt4free; package ctbrec.ui.sites.flirt4free;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -42,7 +44,10 @@ public class Flirt4FreeUpdateService extends PaginatedScheduledService {
@Override @Override
public List<Model> call() throws IOException { public List<Model> call() throws IOException {
LOG.debug("Fetching page {}", url); LOG.debug("Fetching page {}", url);
Request request = new Request.Builder().url(url).addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent).build(); Request request = new Request.Builder()
.url(url)
.header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build();
try (Response response = flirt4Free.getHttpClient().execute(request)) { try (Response response = flirt4Free.getHttpClient().execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
return parseResponse(response); return parseResponse(response);

View File

@ -1,8 +1,11 @@
package ctbrec.ui.sites.jasmin; package ctbrec.ui.sites.jasmin;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
@ -22,7 +25,7 @@ import okhttp3.Response;
public class LiveJasminFollowedUpdateService extends PaginatedScheduledService { public class LiveJasminFollowedUpdateService extends PaginatedScheduledService {
private static final transient Logger LOG = LoggerFactory.getLogger(LiveJasminFollowedUpdateService.class); private static final Logger LOG = LoggerFactory.getLogger(LiveJasminFollowedUpdateService.class);
private LiveJasmin liveJasmin; private LiveJasmin liveJasmin;
private String url; private String url;
private boolean showOnline = true; private boolean showOnline = true;
@ -50,11 +53,11 @@ public class LiveJasminFollowedUpdateService extends PaginatedScheduledService {
//LOG.debug("Fetching page {}", url); //LOG.debug("Fetching page {}", url);
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("Referer", liveJasmin.getBaseUrl() + "/en/free/favorite") .header(REFERER, liveJasmin.getBaseUrl() + "/en/free/favorite")
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response response = liveJasmin.getHttpClient().execute(request)) { try (Response response = liveJasmin.getHttpClient().execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {

View File

@ -1,9 +1,12 @@
package ctbrec.ui.sites.jasmin; package ctbrec.ui.sites.jasmin;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Locale;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
@ -27,7 +30,7 @@ import okhttp3.Response;
public class LiveJasminUpdateService extends PaginatedScheduledService { public class LiveJasminUpdateService extends PaginatedScheduledService {
private static final transient Logger LOG = LoggerFactory.getLogger(LiveJasminUpdateService.class); private static final Logger LOG = LoggerFactory.getLogger(LiveJasminUpdateService.class);
private String url; private String url;
private LiveJasmin liveJasmin; private LiveJasmin liveJasmin;
@ -54,11 +57,11 @@ public class LiveJasminUpdateService extends PaginatedScheduledService {
LOG.debug("Fetching page {}", url); LOG.debug("Fetching page {}", url);
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", liveJasmin.getBaseUrl()) .addHeader(REFERER, liveJasmin.getBaseUrl())
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response response = liveJasmin.getHttpClient().execute(request)) { try (Response response = liveJasmin.getHttpClient().execute(request)) {
LOG.debug("Response {} {}", response.code(), response.message()); LOG.debug("Response {} {}", response.code(), response.message());

View File

@ -1,5 +1,7 @@
package ctbrec.ui.sites.myfreecams; package ctbrec.ui.sites.myfreecams;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -10,6 +12,7 @@ import org.json.JSONObject;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ctbrec.Config;
import ctbrec.Model; import ctbrec.Model;
import ctbrec.StringUtil; import ctbrec.StringUtil;
import ctbrec.sites.mfc.MyFreeCams; import ctbrec.sites.mfc.MyFreeCams;
@ -48,7 +51,10 @@ public class FriendsUpdateService extends PaginatedScheduledService {
List<MyFreeCamsModel> models = new ArrayList<>(); List<MyFreeCamsModel> models = new ArrayList<>();
SiteUiFactory.getUi(myFreeCams).login(); SiteUiFactory.getUi(myFreeCams).login();
String url = myFreeCams.getBaseUrl() + "/php/manage_lists2.php?passcode=&list_type=friends&data_mode=online&get_user_list=1"; String url = myFreeCams.getBaseUrl() + "/php/manage_lists2.php?passcode=&list_type=friends&data_mode=online&get_user_list=1";
Request req = new Request.Builder().url(url).header("Referer", myFreeCams.getBaseUrl()).build(); Request req = new Request.Builder().url(url)
.header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header(REFERER, myFreeCams.getBaseUrl())
.build();
try (Response resp = myFreeCams.getHttpClient().execute(req)) { try (Response resp = myFreeCams.getHttpClient().execute(req)) {
if (resp.isSuccessful()) { if (resp.isSuccessful()) {
String body = resp.body().string().substring(4); String body = resp.body().string().substring(4);

View File

@ -1,8 +1,11 @@
package ctbrec.ui.sites.streamate; package ctbrec.ui.sites.streamate;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.UUID; import java.util.UUID;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
@ -27,7 +30,7 @@ import okhttp3.Response;
public class StreamateFollowedService extends PaginatedScheduledService { public class StreamateFollowedService extends PaginatedScheduledService {
private static final transient Logger LOG = LoggerFactory.getLogger(StreamateFollowedService.class); private static final Logger LOG = LoggerFactory.getLogger(StreamateFollowedService.class);
private static final int MODELS_PER_PAGE = 16; private static final int MODELS_PER_PAGE = 16;
private Streamate streamate; private Streamate streamate;
@ -48,15 +51,15 @@ public class StreamateFollowedService extends PaginatedScheduledService {
public List<Model> call() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException { public List<Model> call() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException {
httpClient.login(); httpClient.login();
String saKey = httpClient.getSaKey(); String saKey = httpClient.getSaKey();
String _url = url + "&from=" + ((page - 1) * MODELS_PER_PAGE) + "&size=" + MODELS_PER_PAGE; String pageUrl = url + "&from=" + ((page - 1) * MODELS_PER_PAGE) + "&size=" + MODELS_PER_PAGE;
LOG.debug("Fetching page {}", _url); LOG.debug("Fetching page {}", pageUrl);
Request request = new Request.Builder() Request request = new Request.Builder()
.url(_url) .url(pageUrl)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("Accept", "application/json, */*") .header(ACCEPT, MIMETYPE_APPLICATION_JSON)
.header("Accept-Language", "en") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("Origin", streamate.getBaseUrl()) .header(ORIGIN, streamate.getBaseUrl())
.header("Referer", streamate.getBaseUrl() + "/view/favorites") .header(REFERER, streamate.getBaseUrl() + "/view/favorites")
.header("sakey", saKey) .header("sakey", saKey)
.header("platform", "SCP") .header("platform", "SCP")
.header("smtid", UUID.randomUUID().toString() + "G0211569057409") .header("smtid", UUID.randomUUID().toString() + "G0211569057409")

View File

@ -1,8 +1,11 @@
package ctbrec.ui.sites.streamate; package ctbrec.ui.sites.streamate;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathExpressionException;
@ -25,7 +28,7 @@ import okhttp3.Response;
public class StreamateUpdateService extends PaginatedScheduledService { public class StreamateUpdateService extends PaginatedScheduledService {
private static final transient Logger LOG = LoggerFactory.getLogger(StreamateUpdateService.class); private static final Logger LOG = LoggerFactory.getLogger(StreamateUpdateService.class);
private static final int MODELS_PER_PAGE = 48; private static final int MODELS_PER_PAGE = 48;
private Streamate streamate; private Streamate streamate;
@ -42,14 +45,14 @@ public class StreamateUpdateService extends PaginatedScheduledService {
@Override @Override
public List<Model> call() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException { public List<Model> call() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException {
int from = (page - 1) * MODELS_PER_PAGE; int from = (page - 1) * MODELS_PER_PAGE;
String _url = url + "&from=" + from + "&size=" + MODELS_PER_PAGE; String pageUrl = url + "&from=" + from + "&size=" + MODELS_PER_PAGE;
LOG.debug("Fetching page {}", _url); LOG.debug("Fetching page {}", pageUrl);
Request request = new Request.Builder() Request request = new Request.Builder()
.url(_url) .url(pageUrl)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", streamate.getBaseUrl()) .addHeader(REFERER, streamate.getBaseUrl())
.build(); .build();
try(Response response = streamate.getHttpClient().execute(request)) { try(Response response = streamate.getHttpClient().execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {

View File

@ -4,9 +4,10 @@ public class HttpConstants {
public static final String ACCEPT = "Accept"; public static final String ACCEPT = "Accept";
public static final String ACCEPT_LANGUAGE = "Accept-Language"; public static final String ACCEPT_LANGUAGE = "Accept-Language";
public static final String CONNECTION = "connection"; public static final String CONNECTION = "Connection";
public static final String KEEP_ALIVE = "keep-alive"; public static final String KEEP_ALIVE = "keep-alive";
public static final String MIMETYPE_APPLICATION_JSON = "application/json"; public static final String MIMETYPE_APPLICATION_JSON = "application/json";
public static final String ORIGIN = "Origin";
public static final String REFERER = "Referer"; public static final String REFERER = "Referer";
public static final String USER_AGENT = "User-Agent"; public static final String USER_AGENT = "User-Agent";
public static final String XML_HTTP_REQUEST = "XMLHttpRequest"; public static final String XML_HTTP_REQUEST = "XMLHttpRequest";

View File

@ -1,6 +1,7 @@
package ctbrec.recorder.download.dash; package ctbrec.recorder.download.dash;
import static ctbrec.Recording.State.*; import static ctbrec.Recording.State.*;
import static ctbrec.io.HttpConstants.*;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.File; import java.io.File;
@ -16,6 +17,7 @@ import java.time.Instant;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -76,12 +78,12 @@ public class DashDownload extends AbstractDownload {
// @formatter:off // @formatter:off
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("User-Agent", config.getSettings().httpUserAgent) .header(USER_AGENT, config.getSettings().httpUserAgent)
.header("Origin", model.getSite().getBaseUrl()) .header(ORIGIN, model.getSite().getBaseUrl())
.header("Referer", model.getSite().getBaseUrl()) .header(REFERER, model.getSite().getBaseUrl())
.header("Connection", "keep-alive") .header(CONNECTION, KEEP_ALIVE)
.build(); // @formatter:on .build(); // @formatter:on
LOG.trace("Loading manifest {}", url); LOG.trace("Loading manifest {}", url);
for (int tries = 1; tries <= 10; tries++) { for (int tries = 1; tries <= 10; tries++) {
@ -185,12 +187,12 @@ public class DashDownload extends AbstractDownload {
// @formatter:off // @formatter:off
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("User-Agent", config.getSettings().httpUserAgent) .header(USER_AGENT, config.getSettings().httpUserAgent)
.header("Origin", model.getSite().getBaseUrl()) .header(ORIGIN, model.getSite().getBaseUrl())
.header("Referer", model.getSite().getBaseUrl()) .header(REFERER, model.getSite().getBaseUrl())
.header("Connection", "keep-alive") .header(CONNECTION, KEEP_ALIVE)
.build(); // @formatter:on .build(); // @formatter:on
int tries = 1; int tries = 1;
while (tries <= 10) { while (tries <= 10) {

View File

@ -1,13 +1,17 @@
package ctbrec.recorder.download.hls; package ctbrec.recorder.download.hls;
import static ctbrec.io.HttpConstants.*;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
@ -73,12 +77,12 @@ public abstract class AbstractHlsDownload extends AbstractDownload {
URL segmentsUrl = new URL(segmentsURL); URL segmentsUrl = new URL(segmentsURL);
Request request = new Request.Builder() Request request = new Request.Builder()
.url(segmentsUrl) .url(segmentsUrl)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("Origin", model.getSite().getBaseUrl()) .header(ORIGIN, model.getSite().getBaseUrl())
.header("Referer", model.getSite().getBaseUrl()) .header(REFERER, model.getSite().getBaseUrl())
.header("Connection", "keep-alive") .header(CONNECTION, KEEP_ALIVE)
.build(); .build();
Exception lastException = null; Exception lastException = null;
for (int tries = 1; tries <= 10; tries++) { for (int tries = 1; tries <= 10; tries++) {
@ -90,7 +94,7 @@ public abstract class AbstractHlsDownload extends AbstractDownload {
return new SegmentPlaylist(segmentsURL); return new SegmentPlaylist(segmentsURL);
} }
InputStream inputStream = new ByteArrayInputStream(body.getBytes("utf-8")); InputStream inputStream = new ByteArrayInputStream(body.getBytes(StandardCharsets.UTF_8));
PlaylistParser parser = new PlaylistParser(inputStream, Format.EXT_M3U, Encoding.UTF_8, ParsingMode.LENIENT); PlaylistParser parser = new PlaylistParser(inputStream, Format.EXT_M3U, Encoding.UTF_8, ParsingMode.LENIENT);
Playlist playlist = parser.parse(); Playlist playlist = parser.parse();
if (playlist.hasMediaPlaylist()) { if (playlist.hasMediaPlaylist()) {

View File

@ -1,10 +1,13 @@
package ctbrec.sites.bonga; package ctbrec.sites.bonga;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -25,7 +28,7 @@ import okhttp3.Response;
public class BongaCams extends AbstractSite { public class BongaCams extends AbstractSite {
private static final transient Logger LOG = LoggerFactory.getLogger(BongaCams.class); private static final Logger LOG = LoggerFactory.getLogger(BongaCams.class);
public static String baseUrl = "https://bongacams.com"; public static String baseUrl = "https://bongacams.com";
@ -71,11 +74,11 @@ public class BongaCams extends AbstractSite {
.build(); .build();
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", BongaCams.baseUrl) .addHeader(REFERER, BongaCams.baseUrl)
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.post(body) .post(body)
.build(); .build();
try(Response response = getHttpClient().execute(request)) { try(Response response = getHttpClient().execute(request)) {
@ -143,11 +146,11 @@ public class BongaCams extends AbstractSite {
String url = baseUrl + "/tools/listing_v3.php?offset=0&model_search[display_name][text]=" + URLEncoder.encode(q, "utf-8"); String url = baseUrl + "/tools/listing_v3.php?offset=0&model_search[display_name][text]=" + URLEncoder.encode(q, "utf-8");
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", BongaCams.baseUrl) .addHeader(REFERER, BongaCams.baseUrl)
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try(Response response = getHttpClient().execute(req)) { try(Response response = getHttpClient().execute(req)) {
if(response.isSuccessful()) { if(response.isSuccessful()) {

View File

@ -1,8 +1,11 @@
package ctbrec.sites.bonga; package ctbrec.sites.bonga;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
@ -22,7 +25,7 @@ import okhttp3.Response;
public class BongaCamsHttpClient extends HttpClient { public class BongaCamsHttpClient extends HttpClient {
private static final transient Logger LOG = LoggerFactory.getLogger(BongaCamsHttpClient.class); private static final Logger LOG = LoggerFactory.getLogger(BongaCamsHttpClient.class);
private int userId = 0; private int userId = 0;
public BongaCamsHttpClient() { public BongaCamsHttpClient() {
@ -87,11 +90,11 @@ public class BongaCamsHttpClient extends HttpClient {
.build(); .build();
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", BongaCams.baseUrl) .addHeader(REFERER, BongaCams.baseUrl)
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.post(body) .post(body)
.build(); .build();
try(Response response = execute(request)) { try(Response response = execute(request)) {
@ -116,19 +119,19 @@ public class BongaCamsHttpClient extends HttpClient {
private String getAnyModelName() throws IOException { private String getAnyModelName() throws IOException {
Request request = new Request.Builder() Request request = new Request.Builder()
.url(BongaCams.baseUrl + "/tools/listing_v3.php?livetab=female&online_only=true&is_mobile=true&offset=0") .url(BongaCams.baseUrl + "/tools/listing_v3.php?livetab=female&online_only=true&is_mobile=true&offset=0")
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", BongaCams.baseUrl) .addHeader(REFERER, BongaCams.baseUrl)
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try(Response response = execute(request)) { try(Response response = execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
String content = response.body().string(); String content = response.body().string();
JSONObject json = new JSONObject(content); JSONObject json = new JSONObject(content);
if(json.optString("status").equals("success")) { if(json.optString("status").equals("success")) {
JSONArray _models = json.getJSONArray("models"); JSONArray jsonModels = json.getJSONArray("models");
JSONObject m = _models.getJSONObject(0); JSONObject m = jsonModels.getJSONObject(0);
String name = m.getString("username"); String name = m.getString("username");
return name; return name;
} else { } else {
@ -155,11 +158,11 @@ public class BongaCamsHttpClient extends HttpClient {
// Request request = new Request.Builder() // Request request = new Request.Builder()
// .url(url) // .url(url)
// .post(body) // .post(body)
// .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) // .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
// .addHeader("Accept","application/json") // .addHeader(ACCEPT,"application/json")
// .addHeader("Accept-Language", "en") // .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
// .addHeader("Referer", BongaCams.BASE_URL) // .addHeader(REFERER, BongaCams.BASE_URL)
// .addHeader("X-Requested-With", "XMLHttpRequest") // .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
// .build(); // .build();
// try(Response response = execute(request)) { // try(Response response = execute(request)) {
// if(response.isSuccessful()) { // if(response.isSuccessful()) {

View File

@ -1,12 +1,14 @@
package ctbrec.sites.bonga; package ctbrec.sites.bonga;
import static ctbrec.Model.State.*; import static ctbrec.Model.State.*;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import org.json.JSONObject; import org.json.JSONObject;
@ -38,7 +40,7 @@ import okhttp3.Response;
public class BongaCamsModel extends AbstractModel { public class BongaCamsModel extends AbstractModel {
private static final transient Logger LOG = LoggerFactory.getLogger(BongaCamsModel.class); private static final Logger LOG = LoggerFactory.getLogger(BongaCamsModel.class);
private int userId; private int userId;
private boolean online = false; private boolean online = false;
@ -51,7 +53,7 @@ public class BongaCamsModel extends AbstractModel {
String url = BongaCams.baseUrl + "/profile/" + getName(); String url = BongaCams.baseUrl + "/profile/" + getName();
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgentMobile) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgentMobile)
.build(); .build();
try (Response resp = site.getHttpClient().execute(req)) { try (Response resp = site.getHttpClient().execute(req)) {
String body = resp.body().string(); String body = resp.body().string();
@ -69,7 +71,7 @@ public class BongaCamsModel extends AbstractModel {
return online; return online;
} }
private boolean isStreamAvailable() throws IOException, ExecutionException, InterruptedException { private boolean isStreamAvailable() throws IOException {
String url = getStreamUrl(); String url = getStreamUrl();
Request req = new Request.Builder().url(url).build(); Request req = new Request.Builder().url(url).build();
try(Response resp = site.getHttpClient().execute(req)) { try(Response resp = site.getHttpClient().execute(req)) {
@ -91,11 +93,11 @@ public class BongaCamsModel extends AbstractModel {
.build(); .build();
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", BongaCams.baseUrl) .addHeader(REFERER, BongaCams.baseUrl)
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.post(body) .post(body)
.build(); .build();
try(Response response = site.getHttpClient().execute(request)) { try(Response response = site.getHttpClient().execute(request)) {
@ -132,9 +134,6 @@ public class BongaCamsModel extends AbstractModel {
@Override @Override
public List<StreamSource> getStreamSources() throws IOException, ExecutionException, ParseException, PlaylistException { public List<StreamSource> getStreamSources() throws IOException, ExecutionException, ParseException, PlaylistException {
String streamUrl = getStreamUrl(); String streamUrl = getStreamUrl();
if (streamUrl == null) {
return Collections.emptyList();
}
Request req = new Request.Builder().url(streamUrl).build(); Request req = new Request.Builder().url(streamUrl).build();
try(Response response = site.getHttpClient().execute(req)) { try(Response response = site.getHttpClient().execute(req)) {
if(response.isSuccessful()) { if(response.isSuccessful()) {
@ -194,11 +193,11 @@ public class BongaCamsModel extends AbstractModel {
.build(); .build();
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", BongaCams.baseUrl + '/' + getName()) .addHeader(REFERER, BongaCams.baseUrl + '/' + getName())
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.post(body) .post(body)
.build(); .build();
try(Response response = site.getHttpClient().execute(request)) { try(Response response = site.getHttpClient().execute(request)) {
@ -228,7 +227,10 @@ public class BongaCamsModel extends AbstractModel {
Collections.sort(streamSources); Collections.sort(streamSources);
StreamSource best = streamSources.get(streamSources.size()-1); StreamSource best = streamSources.get(streamSources.size()-1);
resolution = new int[] {best.width, best.height}; resolution = new int[] {best.width, best.height};
} catch (ExecutionException | IOException | ParseException | PlaylistException | InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt();
LOG.warn("Couldn't determine stream resolution for {} - {}", getName(), e.getMessage());
} catch (ExecutionException | IOException | ParseException | PlaylistException e) {
LOG.warn("Couldn't determine stream resolution for {} - {}", getName(), e.getMessage()); LOG.warn("Couldn't determine stream resolution for {} - {}", getName(), e.getMessage());
} }
return resolution; return resolution;
@ -252,11 +254,11 @@ public class BongaCamsModel extends AbstractModel {
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.method("POST", body) .method("POST", body)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try(Response resp = site.getHttpClient().execute(req)) { try(Response resp = site.getHttpClient().execute(req)) {
if(resp.isSuccessful()) { if(resp.isSuccessful()) {
@ -278,10 +280,10 @@ public class BongaCamsModel extends AbstractModel {
private String getCsrfToken() throws IOException { private String getCsrfToken() throws IOException {
Request req = new Request.Builder() Request req = new Request.Builder()
.url(getUrl()) .url(getUrl())
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("Referer", BongaCams.baseUrl) .header(REFERER, BongaCams.baseUrl)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try(Response resp = site.getHttpClient().execute(req)) { try(Response resp = site.getHttpClient().execute(req)) {
if(resp.isSuccessful()) { if(resp.isSuccessful()) {
@ -310,11 +312,11 @@ public class BongaCamsModel extends AbstractModel {
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.method("POST", body) .method("POST", body)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response resp = site.getHttpClient().execute(req)) { try (Response resp = site.getHttpClient().execute(req)) {
if (resp.isSuccessful()) { if (resp.isSuccessful()) {

View File

@ -1,5 +1,7 @@
package ctbrec.sites.cam4; package ctbrec.sites.cam4;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
@ -83,6 +85,7 @@ public class Cam4 extends AbstractSite {
@Override @Override
public void init() throws IOException { public void init() throws IOException {
// noop
} }
@Override @Override
@ -120,7 +123,7 @@ public class Cam4 extends AbstractSite {
} }
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try(Response response = getHttpClient().execute(req)) { try(Response response = getHttpClient().execute(req)) {
if(response.isSuccessful()) { if(response.isSuccessful()) {

View File

@ -1,5 +1,7 @@
package ctbrec.sites.cam4; package ctbrec.sites.cam4;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.Objects; import java.util.Objects;
@ -13,7 +15,7 @@ import okhttp3.Response;
public class Cam4HttpClient extends HttpClient { public class Cam4HttpClient extends HttpClient {
private static final transient Logger LOG = LoggerFactory.getLogger(Cam4HttpClient.class); private static final Logger LOG = LoggerFactory.getLogger(Cam4HttpClient.class);
public Cam4HttpClient() { public Cam4HttpClient() {
super("cam4"); super("cam4");
@ -43,7 +45,7 @@ public class Cam4HttpClient extends HttpClient {
String mailUrl = Cam4.BASE_URI + "/mail/unreadThreads"; String mailUrl = Cam4.BASE_URI + "/mail/unreadThreads";
Request req = new Request.Builder() Request req = new Request.Builder()
.url(mailUrl) .url(mailUrl)
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
Response response = execute(req); Response response = execute(req);
if(response.isSuccessful() && response.body().contentLength() > 0) { if(response.isSuccessful() && response.body().contentLength() > 0) {

View File

@ -1,6 +1,7 @@
package ctbrec.sites.cam4; package ctbrec.sites.cam4;
import static ctbrec.Model.State.*; import static ctbrec.Model.State.*;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -211,7 +212,7 @@ public class Cam4Model extends AbstractModel {
String url = site.getBaseUrl() + "/profiles/addFriendFavorite?action=addFavorite&object=" + getName() + "&_=" + System.currentTimeMillis(); String url = site.getBaseUrl() + "/profiles/addFriendFavorite?action=addFavorite&object=" + getName() + "&_=" + System.currentTimeMillis();
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response response = site.getHttpClient().execute(req)) { try (Response response = site.getHttpClient().execute(req)) {
return response.isSuccessful(); return response.isSuccessful();
@ -224,7 +225,7 @@ public class Cam4Model extends AbstractModel {
String url = site.getBaseUrl() + '/' + getName(); String url = site.getBaseUrl() + '/' + getName();
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
// we have to use a client without any cam4 cookies here, otherwise // we have to use a client without any cam4 cookies here, otherwise
@ -251,7 +252,7 @@ public class Cam4Model extends AbstractModel {
req = new Request.Builder() req = new Request.Builder()
.url(url) .url(url)
.post(body) .post(body)
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response resp = site.getHttpClient().execute(req)) { try (Response resp = site.getHttpClient().execute(req)) {
if (resp.isSuccessful()) { if (resp.isSuccessful()) {

View File

@ -1,5 +1,7 @@
package ctbrec.sites.camsoda; package ctbrec.sites.camsoda;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
@ -23,7 +25,7 @@ import okhttp3.Response;
public class Camsoda extends AbstractSite { public class Camsoda extends AbstractSite {
private static final transient Logger LOG = LoggerFactory.getLogger(Camsoda.class); private static final Logger LOG = LoggerFactory.getLogger(Camsoda.class);
public static final String BASE_URI = "https://www.camsoda.com"; public static final String BASE_URI = "https://www.camsoda.com";
private HttpClient httpClient; private HttpClient httpClient;
@ -96,6 +98,7 @@ public class Camsoda extends AbstractSite {
@Override @Override
public void init() throws IOException { public void init() throws IOException {
// noop
} }
@Override @Override
@ -125,7 +128,7 @@ public class Camsoda extends AbstractSite {
String url = BASE_URI + "/api/v1/browse/autocomplete?s=" + URLEncoder.encode(q, "utf-8"); String url = BASE_URI + "/api/v1/browse/autocomplete?s=" + URLEncoder.encode(q, "utf-8");
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try(Response response = getHttpClient().execute(req)) { try(Response response = getHttpClient().execute(req)) {
if(response.isSuccessful()) { if(response.isSuccessful()) {
@ -147,7 +150,7 @@ public class Camsoda extends AbstractSite {
} }
return models; return models;
} else { } else {
LOG.warn("Search result: " + json.toString(2)); LOG.warn("Search result: {}", json.toString(2));
return Collections.emptyList(); return Collections.emptyList();
} }
} else { } else {

View File

@ -1,5 +1,7 @@
package ctbrec.sites.chaturbate; package ctbrec.sites.chaturbate;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.time.Instant; import java.time.Instant;
@ -62,7 +64,7 @@ public class Chaturbate extends AbstractSite {
String url = "https://chaturbate.com/p/" + username + "/"; String url = "https://chaturbate.com/p/" + username + "/";
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
Response resp = getHttpClient().execute(req); Response resp = getHttpClient().execute(req);
if (resp.isSuccessful()) { if (resp.isSuccessful()) {
@ -121,7 +123,7 @@ public class Chaturbate extends AbstractSite {
// search online models // search online models
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try(Response resp = getHttpClient().execute(req)) { try(Response resp = getHttpClient().execute(req)) {
if(resp.isSuccessful()) { if(resp.isSuccessful()) {
@ -134,7 +136,7 @@ public class Chaturbate extends AbstractSite {
url = baseUrl + '/' + q; url = baseUrl + '/' + q;
req = new Request.Builder() req = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try(Response resp = getHttpClient().execute(req)) { try(Response resp = getHttpClient().execute(req)) {
if(resp.isSuccessful()) { if(resp.isSuccessful()) {

View File

@ -1,5 +1,7 @@
package ctbrec.sites.chaturbate; package ctbrec.sites.chaturbate;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
@ -17,7 +19,7 @@ import okhttp3.Response;
public class ChaturbateHttpClient extends HttpClient { public class ChaturbateHttpClient extends HttpClient {
private static final transient Logger LOG = LoggerFactory.getLogger(ChaturbateHttpClient.class); private static final Logger LOG = LoggerFactory.getLogger(ChaturbateHttpClient.class);
protected String token; protected String token;
public ChaturbateHttpClient() { public ChaturbateHttpClient() {
@ -55,7 +57,7 @@ public class ChaturbateHttpClient extends HttpClient {
try { try {
Request login = new Request.Builder() Request login = new Request.Builder()
.url(Chaturbate.baseUrl + "/auth/login/") .url(Chaturbate.baseUrl + "/auth/login/")
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
Response response = client.newCall(login).execute(); Response response = client.newCall(login).execute();
String content = response.body().string(); String content = response.body().string();
@ -70,8 +72,8 @@ public class ChaturbateHttpClient extends HttpClient {
.build(); .build();
login = new Request.Builder() login = new Request.Builder()
.url(Chaturbate.baseUrl + "/auth/login/") .url(Chaturbate.baseUrl + "/auth/login/")
.header("Referer", Chaturbate.baseUrl + "/auth/login/") .header(REFERER, Chaturbate.baseUrl + "/auth/login/")
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.post(body) .post(body)
.build(); .build();
@ -102,7 +104,7 @@ public class ChaturbateHttpClient extends HttpClient {
String url = "https://chaturbate.com/p/" + Config.getInstance().getSettings().username + "/"; String url = "https://chaturbate.com/p/" + Config.getInstance().getSettings().username + "/";
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
Response resp = execute(req); Response resp = execute(req);
if (resp.isSuccessful()) { if (resp.isSuccessful()) {

View File

@ -1,6 +1,7 @@
package ctbrec.sites.chaturbate; package ctbrec.sites.chaturbate;
import static ctbrec.Model.State.*; import static ctbrec.Model.State.*;
import static ctbrec.io.HttpConstants.*;
import java.io.EOFException; import java.io.EOFException;
import java.io.IOException; import java.io.IOException;
@ -38,7 +39,7 @@ import okhttp3.Response;
public class ChaturbateModel extends AbstractModel { public class ChaturbateModel extends AbstractModel {
private static final transient Logger LOG = LoggerFactory.getLogger(ChaturbateModel.class); private static final Logger LOG = LoggerFactory.getLogger(ChaturbateModel.class);
private int[] resolution = new int[2]; private int[] resolution = new int[2];
private StreamInfo streamInfo; private StreamInfo streamInfo;
private long streamInfoTimestamp = 0; private long streamInfoTimestamp = 0;
@ -149,9 +150,9 @@ public class ChaturbateModel extends AbstractModel {
Request req = new Request.Builder() Request req = new Request.Builder()
.url("https://chaturbate.com/tipping/send_tip/"+getName()+"/") .url("https://chaturbate.com/tipping/send_tip/"+getName()+"/")
.post(body) .post(body)
.header("Referer", "https://chaturbate.com/"+getName()+"/") .header(REFERER, "https://chaturbate.com/"+getName()+"/")
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try (Response response = getSite().getHttpClient().execute(req)) { try (Response response = getSite().getHttpClient().execute(req)) {
if (!response.isSuccessful()) { if (!response.isSuccessful()) {
@ -185,6 +186,7 @@ public class ChaturbateModel extends AbstractModel {
} }
return sources; return sources;
} catch (InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new ExecutionException(e); throw new ExecutionException(e);
} }
} }
@ -202,7 +204,7 @@ public class ChaturbateModel extends AbstractModel {
private boolean follow(boolean follow) throws IOException { private boolean follow(boolean follow) throws IOException {
Request req = new Request.Builder() Request req = new Request.Builder()
.url(getUrl()) .url(getUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
Response resp = site.getHttpClient().execute(req); Response resp = site.getHttpClient().execute(req);
resp.close(); resp.close();
@ -218,12 +220,12 @@ public class ChaturbateModel extends AbstractModel {
req = new Request.Builder() req = new Request.Builder()
.url(url) .url(url)
.method("POST", body) .method("POST", body)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5")
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("X-CSRFToken", ((ChaturbateHttpClient)site.getHttpClient()).getToken()) .header("X-CSRFToken", ((ChaturbateHttpClient)site.getHttpClient()).getToken())
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
resp = site.getHttpClient().execute(req); resp = site.getHttpClient().execute(req);
if(resp.isSuccessful()) { if(resp.isSuccessful()) {
@ -269,8 +271,8 @@ public class ChaturbateModel extends AbstractModel {
Request req = new Request.Builder() Request req = new Request.Builder()
.url(getSite().getBaseUrl() + "/get_edge_hls_url_ajax/") .url(getSite().getBaseUrl() + "/get_edge_hls_url_ajax/")
.post(body) .post(body)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try(Response response = getSite().getHttpClient().execute(req)) { try(Response response = getSite().getHttpClient().execute(req)) {
if(response.isSuccessful()) { if(response.isSuccessful()) {
@ -339,7 +341,7 @@ public class ChaturbateModel extends AbstractModel {
LOG.trace("Loading master playlist {}", streamInfo.url); LOG.trace("Loading master playlist {}", streamInfo.url);
Request req = new Request.Builder() Request req = new Request.Builder()
.url(streamInfo.url) .url(streamInfo.url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try (Response response = getSite().getHttpClient().execute(req)) { try (Response response = getSite().getHttpClient().execute(req)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {

View File

@ -1,5 +1,7 @@
package ctbrec.sites.fc2live; package ctbrec.sites.fc2live;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import org.json.JSONObject; import org.json.JSONObject;
@ -19,7 +21,7 @@ import okhttp3.WebSocketListener;
public class Fc2HttpClient extends HttpClient { public class Fc2HttpClient extends HttpClient {
private static final transient Logger LOG = LoggerFactory.getLogger(Fc2HttpClient.class); private static final Logger LOG = LoggerFactory.getLogger(Fc2HttpClient.class);
public Fc2HttpClient() { public Fc2HttpClient() {
super("fc2live"); super("fc2live");
@ -53,7 +55,7 @@ public class Fc2HttpClient extends HttpClient {
.build(); .build();
Request req = new Request.Builder() Request req = new Request.Builder()
.url("https://secure.id.fc2.com/index.php?mode=login&switch_language=en") .url("https://secure.id.fc2.com/index.php?mode=login&switch_language=en")
.header("Referer", "https://fc2.com/en/login.php") .header(REFERER, "https://fc2.com/en/login.php")
.header("Content-Type", "application/x-www-form-urlencoded") .header("Content-Type", "application/x-www-form-urlencoded")
.post(body) .post(body)
.build(); .build();
@ -67,7 +69,7 @@ public class Fc2HttpClient extends HttpClient {
LOG.debug("Calling https://secure.id.fc2.com/?login=done"); LOG.debug("Calling https://secure.id.fc2.com/?login=done");
req = new Request.Builder() req = new Request.Builder()
.url("https://secure.id.fc2.com/?login=done") .url("https://secure.id.fc2.com/?login=done")
.header("Referer", "https://secure.id.fc2.com/index.php?mode=login&switch_language=en") .header(REFERER, "https://secure.id.fc2.com/index.php?mode=login&switch_language=en")
.build(); .build();
try (Response resp2 = execute(req)) { try (Response resp2 = execute(req)) {
if (resp.isSuccessful()) { if (resp.isSuccessful()) {

View File

@ -1,9 +1,12 @@
package ctbrec.sites.fc2live; package ctbrec.sites.fc2live;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -70,11 +73,11 @@ public class Fc2Model extends AbstractModel {
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.method("POST", body) .method("POST", body)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("Referer", Fc2Live.BASE_URL) .header(REFERER, Fc2Live.BASE_URL)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try(Response resp = getSite().getHttpClient().execute(req)) { try(Response resp = getSite().getHttpClient().execute(req)) {
if(resp.isSuccessful()) { if(resp.isSuccessful()) {
@ -130,11 +133,11 @@ public class Fc2Model extends AbstractModel {
List<StreamSource> sources = new ArrayList<>(); List<StreamSource> sources = new ArrayList<>();
Request req = new Request.Builder() Request req = new Request.Builder()
.url(playlistUrl) .url(playlistUrl)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("Origin", Fc2Live.BASE_URL) .header(ORIGIN, Fc2Live.BASE_URL)
.header("Referer", getUrl()) .header(REFERER, getUrl())
.build(); .build();
try(Response response = site.getHttpClient().execute(req)) { try(Response response = site.getHttpClient().execute(req)) {
if(response.isSuccessful()) { if(response.isSuccessful()) {
@ -179,11 +182,11 @@ public class Fc2Model extends AbstractModel {
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.method("POST", body) .method("POST", body)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("Referer", Fc2Live.BASE_URL) .header(REFERER, Fc2Live.BASE_URL)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
LOG.debug("Fetching page {}", url); LOG.debug("Fetching page {}", url);
try(Response resp = getSite().getHttpClient().execute(req)) { try(Response resp = getSite().getHttpClient().execute(req)) {
@ -239,7 +242,7 @@ public class Fc2Model extends AbstractModel {
.build(); .build();
Request req = new Request.Builder() Request req = new Request.Builder()
.url(getSite().getBaseUrl() + "/api/favoriteManager.php") .url(getSite().getBaseUrl() + "/api/favoriteManager.php")
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("Content-Type", "application/x-www-form-urlencoded") .header("Content-Type", "application/x-www-form-urlencoded")
.post(body) .post(body)
.build(); .build();
@ -294,9 +297,9 @@ public class Fc2Model extends AbstractModel {
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .header(ACCEPT, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
.header("Accept-Language", "de,en-US;q=0.7,en;q=0.3") .header(ACCEPT_LANGUAGE, "de,en-US;q=0.7,en;q=0.3")
.build(); .build();
ws = getSite().getHttpClient().newWebSocket(request, new WebSocketListener() { ws = getSite().getHttpClient().newWebSocket(request, new WebSocketListener() {
@Override @Override

View File

@ -1,5 +1,7 @@
package ctbrec.sites.flirt4free; package ctbrec.sites.flirt4free;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
@ -64,7 +66,7 @@ public class Flirt4Free extends AbstractSite {
String url = Flirt4Free.BASE_URI + "/my-account/"; String url = Flirt4Free.BASE_URI + "/my-account/";
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try(Response response = getHttpClient().execute(request)) { try(Response response = getHttpClient().execute(request)) {
if(response.isSuccessful()) { if(response.isSuccessful()) {
@ -92,6 +94,7 @@ public class Flirt4Free extends AbstractSite {
@Override @Override
public void init() throws IOException { public void init() throws IOException {
// noop
} }
@Override @Override
@ -121,7 +124,7 @@ public class Flirt4Free extends AbstractSite {
String url = BASE_URI + "/search/?query=" + URLEncoder.encode(q, "utf-8"); String url = BASE_URI + "/search/?query=" + URLEncoder.encode(q, "utf-8");
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try (Response response = getHttpClient().execute(req)) { try (Response response = getHttpClient().execute(req)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {

View File

@ -1,5 +1,7 @@
package ctbrec.sites.flirt4free; package ctbrec.sites.flirt4free;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
@ -15,7 +17,7 @@ import okhttp3.Response;
public class Flirt4FreeHttpClient extends HttpClient { public class Flirt4FreeHttpClient extends HttpClient {
private static final transient Logger LOG = LoggerFactory.getLogger(Flirt4FreeHttpClient.class); private static final Logger LOG = LoggerFactory.getLogger(Flirt4FreeHttpClient.class);
public Flirt4FreeHttpClient() { public Flirt4FreeHttpClient() {
super("flirt4free"); super("flirt4free");
@ -47,7 +49,7 @@ public class Flirt4FreeHttpClient extends HttpClient {
.build(); .build();
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.post(body) .post(body)
.build(); .build();
try (Response response = execute(request)) { try (Response response = execute(request)) {
@ -68,7 +70,7 @@ public class Flirt4FreeHttpClient extends HttpClient {
String url = Flirt4Free.BASE_URI + "/my-account/"; String url = Flirt4Free.BASE_URI + "/my-account/";
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try(Response response = execute(request)) { try(Response response = execute(request)) {
if(response.isSuccessful()) { if(response.isSuccessful()) {

View File

@ -1,5 +1,7 @@
package ctbrec.sites.flirt4free; package ctbrec.sites.flirt4free;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.URLEncoder; import java.net.URLEncoder;
@ -70,11 +72,11 @@ public class Flirt4FreeModel extends AbstractModel {
try { try {
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5")
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response response = getSite().getHttpClient().execute(request)) { try (Response response = getSite().getHttpClient().execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
@ -111,11 +113,11 @@ public class Flirt4FreeModel extends AbstractModel {
LOG.trace("Loading url {}", url); LOG.trace("Loading url {}", url);
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5")
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response response = getSite().getHttpClient().execute(request)) { try (Response response = getSite().getHttpClient().execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
@ -182,11 +184,11 @@ public class Flirt4FreeModel extends AbstractModel {
LOG.trace("Loading master playlist {}", streamUrl); LOG.trace("Loading master playlist {}", streamUrl);
Request req = new Request.Builder() Request req = new Request.Builder()
.url(streamUrl) .url(streamUrl)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5")
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
acquireSlot(); acquireSlot();
try (Response response = getSite().getHttpClient().execute(req)) { try (Response response = getSite().getHttpClient().execute(req)) {
@ -212,11 +214,11 @@ public class Flirt4FreeModel extends AbstractModel {
LOG.trace("Opening chat websocket {}", url); LOG.trace("Opening chat websocket {}", url);
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5")
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
getSite().getHttpClient().newWebSocket(req, new WebSocketListener() { getSite().getHttpClient().newWebSocket(req, new WebSocketListener() {
@ -317,12 +319,12 @@ public class Flirt4FreeModel extends AbstractModel {
LOG.debug("Trying to send tip: {}", url); LOG.debug("Trying to send tip: {}", url);
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5")
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response response = getSite().getHttpClient().execute(req)) { try (Response response = getSite().getHttpClient().execute(req)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
@ -351,10 +353,10 @@ public class Flirt4FreeModel extends AbstractModel {
try { try {
Request req = new Request.Builder() Request req = new Request.Builder()
.url(getUrl()) .url(getUrl())
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5")
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try (Response response = getSite().getHttpClient().execute(req)) { try (Response response = getSite().getHttpClient().execute(req)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
@ -430,10 +432,10 @@ public class Flirt4FreeModel extends AbstractModel {
LOG.debug("Sending follow/unfollow request: {}", url); LOG.debug("Sending follow/unfollow request: {}", url);
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5")
.header("Referer", getUrl()) .header(REFERER, getUrl())
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
try (Response response = getSite().getHttpClient().execute(req)) { try (Response response = getSite().getHttpClient().execute(req)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {

View File

@ -1,9 +1,12 @@
package ctbrec.sites.jasmin; package ctbrec.sites.jasmin;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -59,9 +62,13 @@ public class LiveJasmin extends AbstractSite {
if (getLiveJasminHttpClient().login()) { if (getLiveJasminHttpClient().login()) {
String sessionId = getLiveJasminHttpClient().getSessionId(); String sessionId = getLiveJasminHttpClient().getSessionId();
String url = getBaseUrl() + "/en/offline-surprise/get-member-balance?session=" + sessionId; String url = getBaseUrl() + "/en/offline-surprise/get-member-balance?session=" + sessionId;
Request request = new Request.Builder().url(url).addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) Request request = new Request.Builder().url(url)
.addHeader("Accept", "*/*").addHeader("Accept-Language", "en").addHeader("Referer", getBaseUrl()) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("X-Requested-With", "XMLHttpRequest").build(); .addHeader(ACCEPT, "*/*")
.addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader(REFERER, getBaseUrl())
.addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build();
try (Response response = getHttpClient().execute(request)) { try (Response response = getHttpClient().execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
String body = response.body().string(); String body = response.body().string();
@ -132,8 +139,13 @@ public class LiveJasmin extends AbstractSite {
String query = URLEncoder.encode(q, "utf-8"); String query = URLEncoder.encode(q, "utf-8");
long ts = System.currentTimeMillis(); long ts = System.currentTimeMillis();
String url = getBaseUrl() + "/en/auto-suggest-search/auto-suggest?category=girls&searchText=" + query + "&_dc=" + ts + "&appletType=html5"; String url = getBaseUrl() + "/en/auto-suggest-search/auto-suggest?category=girls&searchText=" + query + "&_dc=" + ts + "&appletType=html5";
Request request = new Request.Builder().url(url).addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent).addHeader("Accept", "*/*") Request request = new Request.Builder().url(url)
.addHeader("Accept-Language", "en").addHeader("Referer", getBaseUrl()).addHeader("X-Requested-With", "XMLHttpRequest").build(); .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader(ACCEPT, "*/*")
.addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader(REFERER, getBaseUrl())
.addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build();
try (Response response = getHttpClient().execute(request)) { try (Response response = getHttpClient().execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
String body = response.body().string(); String body = response.body().string();

View File

@ -1,6 +1,9 @@
package ctbrec.sites.jasmin; package ctbrec.sites.jasmin;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.Locale;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -53,11 +56,11 @@ public class LiveJasminHttpClient extends HttpClient {
String url = "https://m." + LiveJasmin.baseDomain + "/en/member/favourite/get-favourite-list?ajax=1"; String url = "https://m." + LiveJasmin.baseDomain + "/en/member/favourite/get-favourite-list?ajax=1";
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgentMobile) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgentMobile)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", LiveJasmin.baseUrl) .addHeader(REFERER, LiveJasmin.baseUrl)
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try(Response response = temp.newCall(request).execute()) { try(Response response = temp.newCall(request).execute()) {
LOG.debug("Login Check {}: {} - {}", url, response.code(), response.message()); LOG.debug("Login Check {}: {} - {}", url, response.code(), response.message());

View File

@ -1,10 +1,13 @@
package ctbrec.sites.jasmin; package ctbrec.sites.jasmin;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Random; import java.util.Random;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
@ -36,7 +39,7 @@ import okhttp3.Response;
public class LiveJasminModel extends AbstractModel { public class LiveJasminModel extends AbstractModel {
private static final transient Logger LOG = LoggerFactory.getLogger(LiveJasminModel.class); private static final Logger LOG = LoggerFactory.getLogger(LiveJasminModel.class);
private String id; private String id;
private boolean online = false; private boolean online = false;
private int[] resolution; private int[] resolution;
@ -51,12 +54,13 @@ public class LiveJasminModel extends AbstractModel {
protected void loadModelInfo() throws IOException { protected void loadModelInfo() throws IOException {
String url = "https://m." + LiveJasmin.baseDomain + "/en/chat-html5/" + getName(); String url = "https://m." + LiveJasmin.baseDomain + "/en/chat-html5/" + getName();
Request req = new Request.Builder().url(url).header("User-Agent", Request req = new Request.Builder().url(url)
.header(USER_AGENT,
"Mozilla/5.0 (iPhone; CPU OS 10_14 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Mobile/14E304 Safari/605.1.15") "Mozilla/5.0 (iPhone; CPU OS 10_14 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Mobile/14E304 Safari/605.1.15")
.header("Accept", "application/json,*/*") .header(ACCEPT, MIMETYPE_APPLICATION_JSON)
.header("Accept-Language", "en") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("Referer", getSite().getBaseUrl()) .header(REFERER, getSite().getBaseUrl())
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response response = getSite().getHttpClient().execute(req)) { try (Response response = getSite().getHttpClient().execute(req)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
@ -126,7 +130,7 @@ public class LiveJasminModel extends AbstractModel {
streamSources.clear(); streamSources.clear();
for (PlaylistData playlistData : master.getPlaylists()) { for (PlaylistData playlistData : master.getPlaylists()) {
StreamSource streamsource = new StreamSource(); StreamSource streamsource = new StreamSource();
String baseUrl = masterUrl.toString(); String baseUrl = masterUrl;
baseUrl = baseUrl.substring(0, baseUrl.lastIndexOf('/') + 1); baseUrl = baseUrl.substring(0, baseUrl.lastIndexOf('/') + 1);
streamsource.mediaPlaylistUrl = baseUrl + playlistData.getUri(); streamsource.mediaPlaylistUrl = baseUrl + playlistData.getUri();
if (playlistData.hasStreamInfo()) { if (playlistData.hasStreamInfo()) {
@ -162,11 +166,11 @@ public class LiveJasminModel extends AbstractModel {
LOG.debug("Getting master playlist URL from {}", url); LOG.debug("Getting master playlist URL from {}", url);
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgentMobile) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgentMobile)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", getUrl()) .addHeader(REFERER, getUrl())
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response response = site.getHttpClient().execute(request)) { try (Response response = site.getHttpClient().execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
@ -186,6 +190,7 @@ public class LiveJasminModel extends AbstractModel {
@Override @Override
public void invalidateCacheEntries() { public void invalidateCacheEntries() {
// noop
} }
@Override @Override
@ -198,6 +203,7 @@ public class LiveJasminModel extends AbstractModel {
try { try {
tippingSocket.sendTip(this, Config.getInstance(), tokens); tippingSocket.sendTip(this, Config.getInstance(), tokens);
} catch (InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new IOException(e); throw new IOException(e);
} }
} }
@ -243,11 +249,11 @@ public class LiveJasminModel extends AbstractModel {
} }
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "*/*") .addHeader(ACCEPT, "*/*")
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", getUrl()) .addHeader(REFERER, getUrl())
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response response = site.getHttpClient().execute(request)) { try (Response response = site.getHttpClient().execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {

View File

@ -1,6 +1,9 @@
package ctbrec.sites.jasmin; package ctbrec.sites.jasmin;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.Locale;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
@ -17,7 +20,7 @@ import okhttp3.WebSocketListener;
import okio.ByteString; import okio.ByteString;
public class LiveJasminTippingWebSocket { public class LiveJasminTippingWebSocket {
private static final transient Logger LOG = LoggerFactory.getLogger(LiveJasminTippingWebSocket.class); private static final Logger LOG = LoggerFactory.getLogger(LiveJasminTippingWebSocket.class);
private String applicationId; private String applicationId;
private String sessionId; private String sessionId;
@ -51,10 +54,10 @@ public class LiveJasminTippingWebSocket {
Request request = new Request.Builder() Request request = new Request.Builder()
.url("https://" + relayHost + "/") .url("https://" + relayHost + "/")
.header("Origin", LiveJasmin.baseUrl) .header(ORIGIN, LiveJasmin.baseUrl)
.header("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0") .header(USER_AGENT, config.getSettings().httpUserAgent)
.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .header(ACCEPT, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
.header("Accept-Language", "de,en-US;q=0.7,en;q=0.3") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.build(); .build();
Object monitor = new Object(); Object monitor = new Object();
relay = client.newWebSocket(request, new WebSocketListener() { relay = client.newWebSocket(request, new WebSocketListener() {
@ -139,11 +142,11 @@ public class LiveJasminTippingWebSocket {
String url = "https://m." + LiveJasmin.baseDomain + "/en/chat-html5/" + name; String url = "https://m." + LiveJasmin.baseDomain + "/en/chat-html5/" + name;
Request req = new Request.Builder() Request req = new Request.Builder()
.url(url) .url(url)
.header("User-Agent", "Mozilla/5.0 (iPhone; CPU OS 10_14 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Mobile/14E304 Safari/605.1.15") .header(USER_AGENT, "Mozilla/5.0 (iPhone; CPU OS 10_14 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Mobile/14E304 Safari/605.1.15")
.header("Accept", "application/json,*/*") .header(ACCEPT, MIMETYPE_APPLICATION_JSON)
.header("Accept-Language", "en") .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.header("Referer", LiveJasmin.baseUrl) .header(REFERER, LiveJasmin.baseUrl)
.header("X-Requested-With", "XMLHttpRequest") .header(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try (Response response = client.execute(req)) { try (Response response = client.execute(req)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {

View File

@ -1,5 +1,7 @@
package ctbrec.sites.mfc; package ctbrec.sites.mfc;
import static ctbrec.io.HttpConstants.*;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@ -76,12 +78,12 @@ public class DashStreamSourceProvider implements StreamSourceProvider {
// @formatter:off // @formatter:off
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.header("Accept", "*/*") .header(ACCEPT, "*/*")
.header("Accept-Language", "en-US,en;q=0.5") .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5")
.header("User-Agent", config.getSettings().httpUserAgent) .header(USER_AGENT, config.getSettings().httpUserAgent)
.header("Origin", site.getBaseUrl()) .header(ORIGIN, site.getBaseUrl())
.header("Referer", site.getBaseUrl()) .header(REFERER, site.getBaseUrl())
.header("Connection", "keep-alive") .header(CONNECTION, KEEP_ALIVE)
.build(); // @formatter:on .build(); // @formatter:on
LOG.trace("Loading manifest {}", url); LOG.trace("Loading manifest {}", url);
try (Response response = site.getHttpClient().execute(request)) { try (Response response = site.getHttpClient().execute(request)) {

View File

@ -1,5 +1,6 @@
package ctbrec.sites.mfc; package ctbrec.sites.mfc;
import static ctbrec.io.HttpConstants.*;
import static ctbrec.sites.mfc.MessageTypes.*; import static ctbrec.sites.mfc.MessageTypes.*;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@ -105,7 +106,7 @@ public class MyFreeCamsClient {
while (running) { while (running) {
if (ws == null && !connecting) { if (ws == null && !connecting) {
LOG.info("Websocket is null. Starting a new connection"); LOG.info("Websocket is null. Starting a new connection");
Request req = new Request.Builder().url(wsUrl).addHeader("Origin", "http://m.myfreecams.com").build(); Request req = new Request.Builder().url(wsUrl).addHeader(ORIGIN, "http://m.myfreecams.com").build();
ws = createWebSocket(req); ws = createWebSocket(req);
} }

View File

@ -1,5 +1,7 @@
package ctbrec.sites.mfc; package ctbrec.sites.mfc;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
@ -25,7 +27,7 @@ import okhttp3.WebSocketListener;
public class MyFreeCamsHttpClient extends HttpClient { public class MyFreeCamsHttpClient extends HttpClient {
private static final transient Logger LOG = LoggerFactory.getLogger(MyFreeCamsHttpClient.class); private static final Logger LOG = LoggerFactory.getLogger(MyFreeCamsHttpClient.class);
public MyFreeCamsHttpClient() { public MyFreeCamsHttpClient() {
super("myfreecams"); super("myfreecams");
@ -54,7 +56,7 @@ public class MyFreeCamsHttpClient extends HttpClient {
.build(); .build();
Request req = new Request.Builder() Request req = new Request.Builder()
.url(MyFreeCams.baseUrl + "/php/login.php") .url(MyFreeCams.baseUrl + "/php/login.php")
.header("Referer", MyFreeCams.baseUrl) .header(REFERER, MyFreeCams.baseUrl)
.header("Content-Type", "application/x-www-form-urlencoded") .header("Content-Type", "application/x-www-form-urlencoded")
.post(body) .post(body)
.build(); .build();
@ -93,6 +95,7 @@ public class MyFreeCamsHttpClient extends HttpClient {
} }
} }
@Override
public WebSocket newWebSocket(Request req, WebSocketListener webSocketListener) { public WebSocket newWebSocket(Request req, WebSocketListener webSocketListener) {
return client.newWebSocket(req, webSocketListener); return client.newWebSocket(req, webSocketListener);
} }

View File

@ -1,5 +1,7 @@
package ctbrec.sites.mfc; package ctbrec.sites.mfc;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder; import java.net.URLDecoder;
@ -148,7 +150,7 @@ public class MyFreeCamsModel extends AbstractModel {
req = new Request.Builder() req = new Request.Builder()
.url(tipUrl) .url(tipUrl)
.post(body) .post(body)
.addHeader("Referer", initUrl) .addHeader(REFERER, initUrl)
.build(); .build();
try(Response response = site.getHttpClient().execute(req)) { try(Response response = site.getHttpClient().execute(req)) {
if(!response.isSuccessful()) { if(!response.isSuccessful()) {

View File

@ -1,10 +1,13 @@
package ctbrec.sites.streamate; package ctbrec.sites.streamate;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -24,7 +27,7 @@ import okhttp3.Response;
public class Streamate extends AbstractSite { public class Streamate extends AbstractSite {
private static final transient Logger LOG = LoggerFactory.getLogger(Streamate.class); private static final Logger LOG = LoggerFactory.getLogger(Streamate.class);
public static final String BASE_URL = "https://www.streamate.com"; public static final String BASE_URL = "https://www.streamate.com";
@ -66,11 +69,11 @@ public class Streamate extends AbstractSite {
// .build(); // .build();
// Request request = new Request.Builder() // Request request = new Request.Builder()
// .url(url) // .url(url)
// .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) // .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
// .addHeader("Accept", "application/json, text/javascript, */*") // .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
// .addHeader("Accept-Language", "en") // .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
// .addHeader("Referer", Streamate.BASE_URL) // .addHeader(REFERER, Streamate.BASE_URL)
// .addHeader("X-Requested-With", "XMLHttpRequest") // .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
// .post(body) // .post(body)
// .build(); // .build();
// try(Response response = getHttpClient().execute(request)) { // try(Response response = getHttpClient().execute(request)) {
@ -109,6 +112,7 @@ public class Streamate extends AbstractSite {
@Override @Override
public void init() throws IOException { public void init() throws IOException {
// nothing to initialize
} }
@Override @Override
@ -142,11 +146,11 @@ public class Streamate extends AbstractSite {
public List<Model> search(String q) throws IOException, InterruptedException { public List<Model> search(String q) throws IOException, InterruptedException {
String url = BASE_URL + "/api/search/autocomplete?exact=false&skin_search_kids=0&results_per_page=10&query=" + URLEncoder.encode(q, "utf-8"); String url = BASE_URL + "/api/search/autocomplete?exact=false&skin_search_kids=0&results_per_page=10&query=" + URLEncoder.encode(q, "utf-8");
Request req = new Request.Builder().url(url) Request req = new Request.Builder().url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", Streamate.BASE_URL) .addHeader(REFERER, Streamate.BASE_URL)
.addHeader("X-Requested-With", "XMLHttpRequest").build(); .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST).build();
try (Response response = getHttpClient().execute(req)) { try (Response response = getHttpClient().execute(req)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
String body = response.body().string(); String body = response.body().string();
@ -167,7 +171,7 @@ public class Streamate extends AbstractSite {
} }
return models; return models;
} else { } else {
LOG.warn("Search result: " + json.toString(2)); LOG.warn("Search result: {}", json.toString(2));
return Collections.emptyList(); return Collections.emptyList();
} }
} else { } else {

View File

@ -1,7 +1,10 @@
package ctbrec.sites.streamate; package ctbrec.sites.streamate;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.Collections; import java.util.Collections;
import java.util.Locale;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import org.json.JSONObject; import org.json.JSONObject;
@ -19,7 +22,9 @@ import okhttp3.Response;
public class StreamateHttpClient extends HttpClient { public class StreamateHttpClient extends HttpClient {
private static final transient Logger LOG = LoggerFactory.getLogger(StreamateHttpClient.class); private static final String SAKEY_KEY = "sakey";
private static final Logger LOG = LoggerFactory.getLogger(StreamateHttpClient.class);
private Long userId; private Long userId;
private String saKey = ""; private String saKey = "";
@ -38,7 +43,7 @@ public class StreamateHttpClient extends HttpClient {
// try to load sakey from cookie // try to load sakey from cookie
try { try {
Cookie cookie = getCookieJar().getCookie(HttpUrl.parse("https://www.streamate.com"), "sakey"); Cookie cookie = getCookieJar().getCookie(HttpUrl.parse("https://www.streamate.com"), SAKEY_KEY);
saKey = cookie.value(); saKey = cookie.value();
} catch (NoSuchElementException e) { } catch (NoSuchElementException e) {
// ignore // ignore
@ -71,11 +76,11 @@ public class StreamateHttpClient extends HttpClient {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), loginRequest.toString()); RequestBody body = RequestBody.create(MediaType.parse("application/json"), loginRequest.toString());
Request login = new Request.Builder() Request login = new Request.Builder()
.url(Streamate.BASE_URL + "/api/member/login") .url(Streamate.BASE_URL + "/api/member/login")
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", Streamate.BASE_URL) .addHeader(REFERER, Streamate.BASE_URL)
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.post(body) .post(body)
.build(); .build();
try (Response response = client.newCall(login).execute()) { try (Response response = client.newCall(login).execute()) {
@ -83,15 +88,14 @@ public class StreamateHttpClient extends HttpClient {
if(response.isSuccessful()) { if(response.isSuccessful()) {
JSONObject json = new JSONObject(content); JSONObject json = new JSONObject(content);
//LOG.debug(json.toString(2)); //LOG.debug(json.toString(2));
loggedIn = json.has("sakey"); loggedIn = json.has(SAKEY_KEY);
saKey = json.optString("sakey"); saKey = json.optString(SAKEY_KEY);
JSONObject account = json.getJSONObject("account"); JSONObject account = json.getJSONObject("account");
userId = account.getLong("userid"); userId = account.getLong("userid");
userNickname = account.getString("nickname"); userNickname = account.getString("nickname");
} else { } else {
throw new IOException("Login failed: " + response.code() + " " + response.message()); throw new IOException("Login failed: " + response.code() + " " + response.message());
} }
response.close();
} }
return loggedIn; return loggedIn;
@ -105,20 +109,16 @@ public class StreamateHttpClient extends HttpClient {
url = url + "&page_number=1&results_per_page=48&sakey=" + saKey + "&userid=" + userId; url = url + "&page_number=1&results_per_page=48&sakey=" + saKey + "&userid=" + userId;
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", Streamate.BASE_URL) .addHeader(REFERER, Streamate.BASE_URL)
.build(); .build();
try(Response response = execute(request)) { try(Response response = execute(request)) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
String content = response.body().string(); String content = response.body().string();
JSONObject json = new JSONObject(content); JSONObject json = new JSONObject(content);
if(json.optString("status").equals("SM_OK")) { return json.optString("status").equals("SM_OK");
return true;
} else {
return false;
}
} else { } else {
return false; return false;
} }

View File

@ -1,11 +1,13 @@
package ctbrec.sites.streamate; package ctbrec.sites.streamate;
import static ctbrec.Model.State.*; import static ctbrec.Model.State.*;
import static ctbrec.io.HttpConstants.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import org.json.JSONArray; import org.json.JSONArray;
@ -31,7 +33,7 @@ import okio.Buffer;
public class StreamateModel extends AbstractModel { public class StreamateModel extends AbstractModel {
private static final transient Logger LOG = LoggerFactory.getLogger(StreamateModel.class); private static final Logger LOG = LoggerFactory.getLogger(StreamateModel.class);
private boolean online = false; private boolean online = false;
private List<StreamSource> streamSources = new ArrayList<>(); private List<StreamSource> streamSources = new ArrayList<>();
@ -44,11 +46,11 @@ public class StreamateModel extends AbstractModel {
if(ignoreCache) { if(ignoreCache) {
String url = "https://sea1c-ls.naiadsystems.com/sea1c-edge-ls/80/live/s:" + getName() + ".json"; String url = "https://sea1c-ls.naiadsystems.com/sea1c-edge-ls/80/live/s:" + getName() + ".json";
Request req = new Request.Builder().url(url) Request req = new Request.Builder().url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "*/*") .addHeader(ACCEPT, "*/*")
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", Streamate.BASE_URL + '/' + getName()) .addHeader(REFERER, Streamate.BASE_URL + '/' + getName())
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try(Response response = site.getHttpClient().execute(req)) { try(Response response = site.getHttpClient().execute(req)) {
online = response.isSuccessful(); online = response.isSuccessful();
@ -82,11 +84,11 @@ public class StreamateModel extends AbstractModel {
public List<StreamSource> getStreamSources() throws IOException, ExecutionException, ParseException, PlaylistException { public List<StreamSource> getStreamSources() throws IOException, ExecutionException, ParseException, PlaylistException {
String url = "https://sea1c-ls.naiadsystems.com/sea1c-edge-ls/80/live/s:" + getName() + ".json"; String url = "https://sea1c-ls.naiadsystems.com/sea1c-edge-ls/80/live/s:" + getName() + ".json";
Request req = new Request.Builder().url(url) Request req = new Request.Builder().url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "*/*") .addHeader(ACCEPT, "*/*")
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", Streamate.BASE_URL + '/' + getName()) .addHeader(REFERER, Streamate.BASE_URL + '/' + getName())
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try(Response response = site.getHttpClient().execute(req)) { try(Response response = site.getHttpClient().execute(req)) {
if(response.isSuccessful()) { if(response.isSuccessful()) {
@ -197,11 +199,11 @@ public class StreamateModel extends AbstractModel {
LOG.debug("tip params {}", b.readUtf8()); LOG.debug("tip params {}", b.readUtf8());
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", Streamate.BASE_URL + '/' + getName()) .addHeader(REFERER, Streamate.BASE_URL + '/' + getName())
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.post(body) .post(body)
.build(); .build();
try(Response response = site.getHttpClient().execute(request)) { try(Response response = site.getHttpClient().execute(request)) {
@ -228,11 +230,11 @@ public class StreamateModel extends AbstractModel {
+ "&sabasic=&sakey=&sk=www.streamate.com&userid=0&version=6.3.17&ajax=1"; + "&sabasic=&sakey=&sk=www.streamate.com&userid=0&version=6.3.17&ajax=1";
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, text/javascript, */*") .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON)
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", Streamate.BASE_URL + '/' + getName()) .addHeader(REFERER, Streamate.BASE_URL + '/' + getName())
.addHeader("X-Requested-With", "XMLHttpRequest") .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST)
.build(); .build();
try(Response response = site.getHttpClient().execute(request)) { try(Response response = site.getHttpClient().execute(request)) {
if(response.isSuccessful()) { if(response.isSuccessful()) {
@ -297,10 +299,10 @@ public class StreamateModel extends AbstractModel {
String url = site.getBaseUrl() + "/ajax/fav-notify.php?userid="+userId+"&sakey="+saKey+"&pid="+id+"&fav="+follow+"&domain=streamate.com"; String url = site.getBaseUrl() + "/ajax/fav-notify.php?userid="+userId+"&sakey="+saKey+"&pid="+id+"&fav="+follow+"&domain=streamate.com";
Request request = new Request.Builder() Request request = new Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.addHeader("Accept", "application/json, */*") .addHeader(ACCEPT, "application/json, */*")
.addHeader("Accept-Language", "en") .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage())
.addHeader("Referer", getSite().getBaseUrl()) .addHeader(REFERER, getSite().getBaseUrl())
.post(body) .post(body)
.build(); .build();
try(Response response = getSite().getHttpClient().execute(request)) { try(Response response = getSite().getHttpClient().execute(request)) {

View File

@ -1,5 +1,7 @@
package ctbrec.sites.streamate; package ctbrec.sites.streamate;
import static ctbrec.io.HttpConstants.*;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -16,7 +18,7 @@ import okio.ByteString;
public class StreamateWebsocketClient { public class StreamateWebsocketClient {
private static final transient Logger LOG = LoggerFactory.getLogger(StreamateWebsocketClient.class); private static final Logger LOG = LoggerFactory.getLogger(StreamateWebsocketClient.class);
private String url; private String url;
private HttpClient client; private HttpClient client;
@ -30,7 +32,7 @@ public class StreamateWebsocketClient {
LOG.debug("Connecting to {}", url); LOG.debug("Connecting to {}", url);
Object monitor = new Object(); Object monitor = new Object();
Request request = new Request.Builder() Request request = new Request.Builder()
.header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent)
.build(); .build();
client.newWebSocket(request, new WebSocketListener() { client.newWebSocket(request, new WebSocketListener() {
@Override @Override
@ -51,7 +53,7 @@ public class StreamateWebsocketClient {
@Override @Override
public void onMessage(WebSocket webSocket, ByteString bytes) { public void onMessage(WebSocket webSocket, ByteString bytes) {
LOG.debug("ws btxt {}", bytes.toString()); LOG.debug("ws btxt {}", bytes);
} }
@Override @Override