From 87b0ce0d21ed48d92505ec8a1723a303301e95ff Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Fri, 27 Dec 2019 15:14:55 +0100 Subject: [PATCH] Use constants from HttpConstants --- client/src/main/java/ctbrec/ui/ThumbCell.java | 4 +- .../src/main/java/ctbrec/ui/news/NewsTab.java | 3 +- .../sites/bonga/BongaCamsUpdateService.java | 26 +++---- .../fc2live/Fc2FollowedUpdateService.java | 6 +- .../ui/sites/fc2live/Fc2UpdateService.java | 15 ++-- .../Flirt4FreeFavoritesUpdateService.java | 19 +++-- .../flirt4free/Flirt4FreeUpdateService.java | 7 +- .../LiveJasminFollowedUpdateService.java | 15 ++-- .../sites/jasmin/LiveJasminUpdateService.java | 15 ++-- .../myfreecams/FriendsUpdateService.java | 30 ++++---- .../streamate/StreamateFollowedService.java | 21 +++--- .../streamate/StreamateUpdateService.java | 19 ++--- .../main/java/ctbrec/io/HttpConstants.java | 3 +- .../recorder/download/dash/DashDownload.java | 26 +++---- .../download/hls/AbstractHlsDownload.java | 18 +++-- .../java/ctbrec/sites/bonga/BongaCams.java | 25 ++++--- .../sites/bonga/BongaCamsHttpClient.java | 39 ++++++----- .../ctbrec/sites/bonga/BongaCamsModel.java | 64 +++++++++-------- .../src/main/java/ctbrec/sites/cam4/Cam4.java | 5 +- .../ctbrec/sites/cam4/Cam4HttpClient.java | 6 +- .../java/ctbrec/sites/cam4/Cam4Model.java | 7 +- .../java/ctbrec/sites/camsoda/Camsoda.java | 9 ++- .../ctbrec/sites/chaturbate/Chaturbate.java | 8 ++- .../chaturbate/ChaturbateHttpClient.java | 14 ++-- .../sites/chaturbate/ChaturbateModel.java | 28 ++++---- .../ctbrec/sites/fc2live/Fc2HttpClient.java | 8 ++- .../java/ctbrec/sites/fc2live/Fc2Model.java | 41 ++++++----- .../ctbrec/sites/flirt4free/Flirt4Free.java | 7 +- .../flirt4free/Flirt4FreeHttpClient.java | 8 ++- .../sites/flirt4free/Flirt4FreeModel.java | 70 ++++++++++--------- .../java/ctbrec/sites/jasmin/LiveJasmin.java | 22 ++++-- .../sites/jasmin/LiveJasminHttpClient.java | 13 ++-- .../ctbrec/sites/jasmin/LiveJasminModel.java | 42 ++++++----- .../jasmin/LiveJasminTippingWebSocket.java | 23 +++--- .../sites/mfc/DashStreamSourceProvider.java | 14 ++-- .../ctbrec/sites/mfc/MyFreeCamsClient.java | 3 +- .../sites/mfc/MyFreeCamsHttpClient.java | 7 +- .../ctbrec/sites/mfc/MyFreeCamsModel.java | 4 +- .../ctbrec/sites/streamate/Streamate.java | 28 ++++---- .../sites/streamate/StreamateHttpClient.java | 38 +++++----- .../sites/streamate/StreamateModel.java | 52 +++++++------- .../streamate/StreamateWebsocketClient.java | 8 ++- 42 files changed, 472 insertions(+), 348 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/ThumbCell.java b/client/src/main/java/ctbrec/ui/ThumbCell.java index f79383c4..0a9f56f2 100644 --- a/client/src/main/java/ctbrec/ui/ThumbCell.java +++ b/client/src/main/java/ctbrec/ui/ThumbCell.java @@ -1,5 +1,7 @@ package ctbrec.ui; +import static ctbrec.io.HttpConstants.*; + import java.io.EOFException; import java.io.IOException; import java.util.Objects; @@ -354,7 +356,7 @@ public class ThumbCell extends StackPane { imageLoadingThreadPool.submit(() -> { Request req = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try(Response resp = CamrecApplication.httpClient.execute(req)) { if(resp.isSuccessful()) { diff --git a/client/src/main/java/ctbrec/ui/news/NewsTab.java b/client/src/main/java/ctbrec/ui/news/NewsTab.java index 7fac0b13..e8dd957f 100644 --- a/client/src/main/java/ctbrec/ui/news/NewsTab.java +++ b/client/src/main/java/ctbrec/ui/news/NewsTab.java @@ -1,5 +1,6 @@ package ctbrec.ui.news; +import static ctbrec.io.HttpConstants.*; import java.io.IOException; @@ -42,7 +43,7 @@ public class NewsTab extends Tab implements TabSelectionListener { Request request = new Request.Builder() .url(URL) .header("Authorization", "Bearer " + ACCESS_TOKEN) - .header("User-Agent", "ctbrec " + CamrecApplication.getVersion().toString()) + .header(USER_AGENT, "ctbrec " + CamrecApplication.getVersion().toString()) .build(); try(Response response = CamrecApplication.httpClient.execute(request)) { if(response.isSuccessful()) { diff --git a/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsUpdateService.java b/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsUpdateService.java index beb2f07c..c2e8700b 100644 --- a/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/bonga/BongaCamsUpdateService.java @@ -1,10 +1,12 @@ package ctbrec.ui.sites.bonga; import static ctbrec.Model.State.*; +import static ctbrec.io.HttpConstants.*; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.json.JSONArray; import org.json.JSONObject; @@ -22,7 +24,7 @@ import okhttp3.Response; 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 String url; @@ -37,15 +39,15 @@ public class BongaCamsUpdateService extends PaginatedScheduledService { return new Task>() { @Override public List call() throws IOException { - String _url = url + ((page-1) * 36); - LOG.debug("Fetching page {}", _url); + String pageUrl = url + ((page-1) * 36); + LOG.debug("Fetching page {}", pageUrl); Request request = new Request.Builder() - .url(_url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", bongaCams.getBaseUrl()) - .addHeader("X-Requested-With", "XMLHttpRequest") + .url(pageUrl) + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, bongaCams.getBaseUrl()) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); Response response = bongaCams.getHttpClient().execute(request); if (response.isSuccessful()) { @@ -53,9 +55,9 @@ public class BongaCamsUpdateService extends PaginatedScheduledService { List models = new ArrayList<>(); JSONObject json = new JSONObject(content); if(json.optString("status").equals("success")) { - JSONArray _models = json.getJSONArray("models"); - for (int i = 0; i < _models.length(); i++) { - JSONObject m = _models.getJSONObject(i); + JSONArray jsonModels = json.getJSONArray("models"); + for (int i = 0; i < jsonModels.length(); i++) { + JSONObject m = jsonModels.getJSONObject(i); String name = m.optString("username"); if(name.isEmpty()) { continue; diff --git a/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2FollowedUpdateService.java b/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2FollowedUpdateService.java index c97ce4d2..478b6a3b 100644 --- a/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2FollowedUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2FollowedUpdateService.java @@ -1,5 +1,7 @@ package ctbrec.ui.sites.fc2live; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -7,6 +9,7 @@ import java.util.List; import org.json.JSONArray; import org.json.JSONObject; +import ctbrec.Config; import ctbrec.Model; import ctbrec.io.HttpException; import ctbrec.sites.fc2live.Fc2Live; @@ -41,7 +44,8 @@ public class Fc2FollowedUpdateService extends PaginatedScheduledService { .build(); Request req = new Request.Builder() .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") .post(body) .build(); diff --git a/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2UpdateService.java b/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2UpdateService.java index d69b3a1d..a630ebc3 100644 --- a/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2UpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/fc2live/Fc2UpdateService.java @@ -1,8 +1,11 @@ package ctbrec.ui.sites.fc2live; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.stream.Collectors; import org.json.JSONArray; @@ -22,7 +25,7 @@ import okhttp3.RequestBody; import okhttp3.Response; 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 Fc2Live fc2live; @@ -42,11 +45,11 @@ public class Fc2UpdateService extends PaginatedScheduledService { Request req = new Request.Builder() .url(url) .method("POST", body) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", Fc2Live.BASE_URL) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("X-Requested-With", "XMLHttpRequest") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(REFERER, Fc2Live.BASE_URL) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); LOG.debug("Fetching page {}", url); try(Response resp = fc2live.getHttpClient().execute(req)) { diff --git a/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeFavoritesUpdateService.java b/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeFavoritesUpdateService.java index a786ab19..da8f3aa9 100644 --- a/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeFavoritesUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeFavoritesUpdateService.java @@ -1,8 +1,11 @@ package ctbrec.ui.sites.flirt4free; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.concurrent.ExecutionException; import org.jsoup.nodes.Element; @@ -37,12 +40,12 @@ public class Flirt4FreeFavoritesUpdateService extends PaginatedScheduledService SiteUiFactory.getUi(flirt4free).login(); Request request = new Request.Builder() .url(url) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", flirt4free.getBaseUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(REFERER, flirt4free.getBaseUrl()) + .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()) { String body = response.body().string(); Elements modelContainers = HtmlParser.getTags(body, "div.model-container"); @@ -58,7 +61,11 @@ public class Flirt4FreeFavoritesUpdateService extends PaginatedScheduledService model.setOnline(modelHtml.contains("I'm Online")); try { 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); } return models; diff --git a/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeUpdateService.java b/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeUpdateService.java index d52a1427..d1a360e1 100644 --- a/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeUpdateService.java @@ -1,5 +1,7 @@ package ctbrec.ui.sites.flirt4free; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -42,7 +44,10 @@ public class Flirt4FreeUpdateService extends PaginatedScheduledService { @Override public List call() throws IOException { 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)) { if (response.isSuccessful()) { return parseResponse(response); diff --git a/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminFollowedUpdateService.java b/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminFollowedUpdateService.java index 4c1ae667..b8d1019b 100644 --- a/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminFollowedUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminFollowedUpdateService.java @@ -1,8 +1,11 @@ package ctbrec.ui.sites.jasmin; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.json.JSONArray; import org.json.JSONObject; @@ -22,7 +25,7 @@ import okhttp3.Response; 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 String url; private boolean showOnline = true; @@ -50,11 +53,11 @@ public class LiveJasminFollowedUpdateService extends PaginatedScheduledService { //LOG.debug("Fetching page {}", url); Request request = new Request.Builder() .url(url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("Accept", "*/*") - .header("Accept-Language", "en") - .header("Referer", liveJasmin.getBaseUrl() + "/en/free/favorite") - .header("X-Requested-With", "XMLHttpRequest") + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(REFERER, liveJasmin.getBaseUrl() + "/en/free/favorite") + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response response = liveJasmin.getHttpClient().execute(request)) { if (response.isSuccessful()) { diff --git a/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminUpdateService.java b/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminUpdateService.java index f1157c32..61f8cd11 100644 --- a/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/jasmin/LiveJasminUpdateService.java @@ -1,9 +1,12 @@ package ctbrec.ui.sites.jasmin; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Locale; import org.json.JSONArray; import org.json.JSONObject; @@ -27,7 +30,7 @@ import okhttp3.Response; 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 LiveJasmin liveJasmin; @@ -54,11 +57,11 @@ public class LiveJasminUpdateService extends PaginatedScheduledService { LOG.debug("Fetching page {}", url); Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", liveJasmin.getBaseUrl()) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, liveJasmin.getBaseUrl()) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response response = liveJasmin.getHttpClient().execute(request)) { LOG.debug("Response {} {}", response.code(), response.message()); diff --git a/client/src/main/java/ctbrec/ui/sites/myfreecams/FriendsUpdateService.java b/client/src/main/java/ctbrec/ui/sites/myfreecams/FriendsUpdateService.java index 0a6d6bd1..f463c2b0 100644 --- a/client/src/main/java/ctbrec/ui/sites/myfreecams/FriendsUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/myfreecams/FriendsUpdateService.java @@ -1,5 +1,7 @@ package ctbrec.ui.sites.myfreecams; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -10,6 +12,7 @@ import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ctbrec.Config; import ctbrec.Model; import ctbrec.StringUtil; import ctbrec.sites.mfc.MyFreeCams; @@ -48,7 +51,10 @@ public class FriendsUpdateService extends PaginatedScheduledService { List models = new ArrayList<>(); SiteUiFactory.getUi(myFreeCams).login(); 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)) { if (resp.isSuccessful()) { String body = resp.body().string().substring(4); @@ -79,17 +85,17 @@ public class FriendsUpdateService extends PaginatedScheduledService { } } boolean filterOnline = mode == Mode.ONLINE; - return models.stream().filter(m -> { - try { - return m.isOnline() == filterOnline; - } catch (Exception e) { - return false; - } - }) - .sorted((m1, m2) -> (int) (m2.getCamScore() - m1.getCamScore())) - .skip((page - 1) * 50l) - .limit(50) - .collect(Collectors.toList()); + return models.stream().filter(m -> { + try { + return m.isOnline() == filterOnline; + } catch (Exception e) { + return false; + } + }) + .sorted((m1, m2) -> (int) (m2.getCamScore() - m1.getCamScore())) + .skip((page - 1) * 50l) + .limit(50) + .collect(Collectors.toList()); } } }; diff --git a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateFollowedService.java b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateFollowedService.java index de8b295d..b21a9c34 100644 --- a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateFollowedService.java +++ b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateFollowedService.java @@ -1,8 +1,11 @@ package ctbrec.ui.sites.streamate; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.UUID; import javax.xml.parsers.ParserConfigurationException; @@ -27,7 +30,7 @@ import okhttp3.Response; 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 Streamate streamate; @@ -48,15 +51,15 @@ public class StreamateFollowedService extends PaginatedScheduledService { public List call() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException { httpClient.login(); String saKey = httpClient.getSaKey(); - String _url = url + "&from=" + ((page - 1) * MODELS_PER_PAGE) + "&size=" + MODELS_PER_PAGE; - LOG.debug("Fetching page {}", _url); + String pageUrl = url + "&from=" + ((page - 1) * MODELS_PER_PAGE) + "&size=" + MODELS_PER_PAGE; + LOG.debug("Fetching page {}", pageUrl); Request request = new Request.Builder() - .url(_url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("Accept", "application/json, */*") - .header("Accept-Language", "en") - .header("Origin", streamate.getBaseUrl()) - .header("Referer", streamate.getBaseUrl() + "/view/favorites") + .url(pageUrl) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(ACCEPT, MIMETYPE_APPLICATION_JSON) + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(ORIGIN, streamate.getBaseUrl()) + .header(REFERER, streamate.getBaseUrl() + "/view/favorites") .header("sakey", saKey) .header("platform", "SCP") .header("smtid", UUID.randomUUID().toString() + "G0211569057409") diff --git a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateUpdateService.java b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateUpdateService.java index 083a2008..6dc6271d 100644 --- a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateUpdateService.java +++ b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateUpdateService.java @@ -1,8 +1,11 @@ package ctbrec.ui.sites.streamate; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPathExpressionException; @@ -25,7 +28,7 @@ import okhttp3.Response; 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 Streamate streamate; @@ -42,14 +45,14 @@ public class StreamateUpdateService extends PaginatedScheduledService { @Override public List call() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException { int from = (page - 1) * MODELS_PER_PAGE; - String _url = url + "&from=" + from + "&size=" + MODELS_PER_PAGE; - LOG.debug("Fetching page {}", _url); + String pageUrl = url + "&from=" + from + "&size=" + MODELS_PER_PAGE; + LOG.debug("Fetching page {}", pageUrl); Request request = new Request.Builder() - .url(_url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", streamate.getBaseUrl()) + .url(pageUrl) + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, streamate.getBaseUrl()) .build(); try(Response response = streamate.getHttpClient().execute(request)) { if (response.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/io/HttpConstants.java b/common/src/main/java/ctbrec/io/HttpConstants.java index 72436eb5..62ab4d0f 100644 --- a/common/src/main/java/ctbrec/io/HttpConstants.java +++ b/common/src/main/java/ctbrec/io/HttpConstants.java @@ -4,9 +4,10 @@ public class HttpConstants { public static final String ACCEPT = "Accept"; 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 MIMETYPE_APPLICATION_JSON = "application/json"; + public static final String ORIGIN = "Origin"; public static final String REFERER = "Referer"; public static final String USER_AGENT = "User-Agent"; public static final String XML_HTTP_REQUEST = "XMLHttpRequest"; diff --git a/common/src/main/java/ctbrec/recorder/download/dash/DashDownload.java b/common/src/main/java/ctbrec/recorder/download/dash/DashDownload.java index d5e72046..8cbbec10 100644 --- a/common/src/main/java/ctbrec/recorder/download/dash/DashDownload.java +++ b/common/src/main/java/ctbrec/recorder/download/dash/DashDownload.java @@ -1,6 +1,7 @@ package ctbrec.recorder.download.dash; import static ctbrec.Recording.State.*; +import static ctbrec.io.HttpConstants.*; import java.io.ByteArrayInputStream; import java.io.File; @@ -16,6 +17,7 @@ import java.time.Instant; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -76,12 +78,12 @@ public class DashDownload extends AbstractDownload { // @formatter:off Request request = new Request.Builder() .url(url) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("User-Agent", config.getSettings().httpUserAgent) - .header("Origin", model.getSite().getBaseUrl()) - .header("Referer", model.getSite().getBaseUrl()) - .header("Connection", "keep-alive") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(USER_AGENT, config.getSettings().httpUserAgent) + .header(ORIGIN, model.getSite().getBaseUrl()) + .header(REFERER, model.getSite().getBaseUrl()) + .header(CONNECTION, KEEP_ALIVE) .build(); // @formatter:on LOG.trace("Loading manifest {}", url); for (int tries = 1; tries <= 10; tries++) { @@ -185,12 +187,12 @@ public class DashDownload extends AbstractDownload { // @formatter:off Request request = new Request.Builder() .url(url) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("User-Agent", config.getSettings().httpUserAgent) - .header("Origin", model.getSite().getBaseUrl()) - .header("Referer", model.getSite().getBaseUrl()) - .header("Connection", "keep-alive") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(USER_AGENT, config.getSettings().httpUserAgent) + .header(ORIGIN, model.getSite().getBaseUrl()) + .header(REFERER, model.getSite().getBaseUrl()) + .header(CONNECTION, KEEP_ALIVE) .build(); // @formatter:on int tries = 1; while (tries <= 10) { diff --git a/common/src/main/java/ctbrec/recorder/download/hls/AbstractHlsDownload.java b/common/src/main/java/ctbrec/recorder/download/hls/AbstractHlsDownload.java index 4f056a43..bcb32389 100644 --- a/common/src/main/java/ctbrec/recorder/download/hls/AbstractHlsDownload.java +++ b/common/src/main/java/ctbrec/recorder/download/hls/AbstractHlsDownload.java @@ -1,13 +1,17 @@ package ctbrec.recorder.download.hls; +import static ctbrec.io.HttpConstants.*; + import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; @@ -73,12 +77,12 @@ public abstract class AbstractHlsDownload extends AbstractDownload { URL segmentsUrl = new URL(segmentsURL); Request request = new Request.Builder() .url(segmentsUrl) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("Origin", model.getSite().getBaseUrl()) - .header("Referer", model.getSite().getBaseUrl()) - .header("Connection", "keep-alive") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(ORIGIN, model.getSite().getBaseUrl()) + .header(REFERER, model.getSite().getBaseUrl()) + .header(CONNECTION, KEEP_ALIVE) .build(); Exception lastException = null; for (int tries = 1; tries <= 10; tries++) { @@ -90,7 +94,7 @@ public abstract class AbstractHlsDownload extends AbstractDownload { 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); Playlist playlist = parser.parse(); if (playlist.hasMediaPlaylist()) { diff --git a/common/src/main/java/ctbrec/sites/bonga/BongaCams.java b/common/src/main/java/ctbrec/sites/bonga/BongaCams.java index f60fe622..8f554f9b 100644 --- a/common/src/main/java/ctbrec/sites/bonga/BongaCams.java +++ b/common/src/main/java/ctbrec/sites/bonga/BongaCams.java @@ -1,10 +1,13 @@ package ctbrec.sites.bonga; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -25,7 +28,7 @@ import okhttp3.Response; 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"; @@ -71,11 +74,11 @@ public class BongaCams extends AbstractSite { .build(); Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", BongaCams.baseUrl) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, BongaCams.baseUrl) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .post(body) .build(); 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"); Request req = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", BongaCams.baseUrl) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, BongaCams.baseUrl) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try(Response response = getHttpClient().execute(req)) { if(response.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/bonga/BongaCamsHttpClient.java b/common/src/main/java/ctbrec/sites/bonga/BongaCamsHttpClient.java index e7cff3db..0b2e94ab 100644 --- a/common/src/main/java/ctbrec/sites/bonga/BongaCamsHttpClient.java +++ b/common/src/main/java/ctbrec/sites/bonga/BongaCamsHttpClient.java @@ -1,8 +1,11 @@ package ctbrec.sites.bonga; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; @@ -22,7 +25,7 @@ import okhttp3.Response; 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; public BongaCamsHttpClient() { @@ -87,11 +90,11 @@ public class BongaCamsHttpClient extends HttpClient { .build(); Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", BongaCams.baseUrl) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, BongaCams.baseUrl) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .post(body) .build(); try(Response response = execute(request)) { @@ -116,19 +119,19 @@ public class BongaCamsHttpClient extends HttpClient { private String getAnyModelName() throws IOException { Request request = new Request.Builder() .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("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", BongaCams.baseUrl) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, BongaCams.baseUrl) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try(Response response = execute(request)) { if (response.isSuccessful()) { String content = response.body().string(); JSONObject json = new JSONObject(content); if(json.optString("status").equals("success")) { - JSONArray _models = json.getJSONArray("models"); - JSONObject m = _models.getJSONObject(0); + JSONArray jsonModels = json.getJSONArray("models"); + JSONObject m = jsonModels.getJSONObject(0); String name = m.getString("username"); return name; } else { @@ -155,11 +158,11 @@ public class BongaCamsHttpClient extends HttpClient { // Request request = new Request.Builder() // .url(url) // .post(body) - // .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - // .addHeader("Accept","application/json") - // .addHeader("Accept-Language", "en") - // .addHeader("Referer", BongaCams.BASE_URL) - // .addHeader("X-Requested-With", "XMLHttpRequest") + // .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + // .addHeader(ACCEPT,"application/json") + // .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + // .addHeader(REFERER, BongaCams.BASE_URL) + // .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) // .build(); // try(Response response = execute(request)) { // if(response.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/bonga/BongaCamsModel.java b/common/src/main/java/ctbrec/sites/bonga/BongaCamsModel.java index a4219cb0..1abd9ee3 100644 --- a/common/src/main/java/ctbrec/sites/bonga/BongaCamsModel.java +++ b/common/src/main/java/ctbrec/sites/bonga/BongaCamsModel.java @@ -1,12 +1,14 @@ package ctbrec.sites.bonga; import static ctbrec.Model.State.*; +import static ctbrec.io.HttpConstants.*; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.concurrent.ExecutionException; import org.json.JSONObject; @@ -38,7 +40,7 @@ import okhttp3.Response; 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 boolean online = false; @@ -51,7 +53,7 @@ public class BongaCamsModel extends AbstractModel { String url = BongaCams.baseUrl + "/profile/" + getName(); Request req = new Request.Builder() .url(url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgentMobile) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgentMobile) .build(); try (Response resp = site.getHttpClient().execute(req)) { String body = resp.body().string(); @@ -69,7 +71,7 @@ public class BongaCamsModel extends AbstractModel { return online; } - private boolean isStreamAvailable() throws IOException, ExecutionException, InterruptedException { + private boolean isStreamAvailable() throws IOException { String url = getStreamUrl(); Request req = new Request.Builder().url(url).build(); try(Response resp = site.getHttpClient().execute(req)) { @@ -91,11 +93,11 @@ public class BongaCamsModel extends AbstractModel { .build(); Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", BongaCams.baseUrl) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, BongaCams.baseUrl) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .post(body) .build(); try(Response response = site.getHttpClient().execute(request)) { @@ -132,9 +134,6 @@ public class BongaCamsModel extends AbstractModel { @Override public List getStreamSources() throws IOException, ExecutionException, ParseException, PlaylistException { String streamUrl = getStreamUrl(); - if (streamUrl == null) { - return Collections.emptyList(); - } Request req = new Request.Builder().url(streamUrl).build(); try(Response response = site.getHttpClient().execute(req)) { if(response.isSuccessful()) { @@ -194,11 +193,11 @@ public class BongaCamsModel extends AbstractModel { .build(); Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", BongaCams.baseUrl + '/' + getName()) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, BongaCams.baseUrl + '/' + getName()) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .post(body) .build(); try(Response response = site.getHttpClient().execute(request)) { @@ -228,7 +227,10 @@ public class BongaCamsModel extends AbstractModel { Collections.sort(streamSources); StreamSource best = streamSources.get(streamSources.size()-1); 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()); } return resolution; @@ -252,11 +254,11 @@ public class BongaCamsModel extends AbstractModel { Request req = new Request.Builder() .url(url) .method("POST", body) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", getUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("X-Requested-With", "XMLHttpRequest") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(REFERER, getUrl()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try(Response resp = site.getHttpClient().execute(req)) { if(resp.isSuccessful()) { @@ -278,10 +280,10 @@ public class BongaCamsModel extends AbstractModel { private String getCsrfToken() throws IOException { Request req = new Request.Builder() .url(getUrl()) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", BongaCams.baseUrl) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(REFERER, BongaCams.baseUrl) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try(Response resp = site.getHttpClient().execute(req)) { if(resp.isSuccessful()) { @@ -310,11 +312,11 @@ public class BongaCamsModel extends AbstractModel { Request req = new Request.Builder() .url(url) .method("POST", body) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", getUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("X-Requested-With", "XMLHttpRequest") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(REFERER, getUrl()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response resp = site.getHttpClient().execute(req)) { if (resp.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/cam4/Cam4.java b/common/src/main/java/ctbrec/sites/cam4/Cam4.java index 016f2cad..0c169cdf 100644 --- a/common/src/main/java/ctbrec/sites/cam4/Cam4.java +++ b/common/src/main/java/ctbrec/sites/cam4/Cam4.java @@ -1,5 +1,7 @@ package ctbrec.sites.cam4; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; @@ -83,6 +85,7 @@ public class Cam4 extends AbstractSite { @Override public void init() throws IOException { + // noop } @Override @@ -120,7 +123,7 @@ public class Cam4 extends AbstractSite { } Request req = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try(Response response = getHttpClient().execute(req)) { if(response.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/cam4/Cam4HttpClient.java b/common/src/main/java/ctbrec/sites/cam4/Cam4HttpClient.java index 90f9eb00..b66c69d8 100644 --- a/common/src/main/java/ctbrec/sites/cam4/Cam4HttpClient.java +++ b/common/src/main/java/ctbrec/sites/cam4/Cam4HttpClient.java @@ -1,5 +1,7 @@ package ctbrec.sites.cam4; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.Objects; @@ -13,7 +15,7 @@ import okhttp3.Response; 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() { super("cam4"); @@ -43,7 +45,7 @@ public class Cam4HttpClient extends HttpClient { String mailUrl = Cam4.BASE_URI + "/mail/unreadThreads"; Request req = new Request.Builder() .url(mailUrl) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); Response response = execute(req); if(response.isSuccessful() && response.body().contentLength() > 0) { diff --git a/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java b/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java index 30afae21..5272b78b 100644 --- a/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java +++ b/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java @@ -1,6 +1,7 @@ package ctbrec.sites.cam4; import static ctbrec.Model.State.*; +import static ctbrec.io.HttpConstants.*; import java.io.IOException; 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(); Request req = new Request.Builder() .url(url) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response response = site.getHttpClient().execute(req)) { return response.isSuccessful(); @@ -224,7 +225,7 @@ public class Cam4Model extends AbstractModel { String url = site.getBaseUrl() + '/' + getName(); Request req = new Request.Builder() .url(url) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); // 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() .url(url) .post(body) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response resp = site.getHttpClient().execute(req)) { if (resp.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/camsoda/Camsoda.java b/common/src/main/java/ctbrec/sites/camsoda/Camsoda.java index 316a9323..f52897d6 100644 --- a/common/src/main/java/ctbrec/sites/camsoda/Camsoda.java +++ b/common/src/main/java/ctbrec/sites/camsoda/Camsoda.java @@ -1,5 +1,7 @@ package ctbrec.sites.camsoda; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; @@ -23,7 +25,7 @@ import okhttp3.Response; 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"; private HttpClient httpClient; @@ -96,6 +98,7 @@ public class Camsoda extends AbstractSite { @Override public void init() throws IOException { + // noop } @Override @@ -125,7 +128,7 @@ public class Camsoda extends AbstractSite { String url = BASE_URI + "/api/v1/browse/autocomplete?s=" + URLEncoder.encode(q, "utf-8"); Request req = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try(Response response = getHttpClient().execute(req)) { if(response.isSuccessful()) { @@ -147,7 +150,7 @@ public class Camsoda extends AbstractSite { } return models; } else { - LOG.warn("Search result: " + json.toString(2)); + LOG.warn("Search result: {}", json.toString(2)); return Collections.emptyList(); } } else { diff --git a/common/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java b/common/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java index 0ddde50f..be291b39 100644 --- a/common/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java +++ b/common/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java @@ -1,5 +1,7 @@ package ctbrec.sites.chaturbate; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.net.URLEncoder; import java.time.Instant; @@ -62,7 +64,7 @@ public class Chaturbate extends AbstractSite { String url = "https://chaturbate.com/p/" + username + "/"; Request req = new Request.Builder() .url(url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); Response resp = getHttpClient().execute(req); if (resp.isSuccessful()) { @@ -121,7 +123,7 @@ public class Chaturbate extends AbstractSite { // search online models Request req = new Request.Builder() .url(url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try(Response resp = getHttpClient().execute(req)) { if(resp.isSuccessful()) { @@ -134,7 +136,7 @@ public class Chaturbate extends AbstractSite { url = baseUrl + '/' + q; req = new Request.Builder() .url(url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try(Response resp = getHttpClient().execute(req)) { if(resp.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java index 33472446..37f2697e 100644 --- a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java +++ b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java @@ -1,5 +1,7 @@ package ctbrec.sites.chaturbate; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.NoSuchElementException; @@ -17,8 +19,8 @@ import okhttp3.Response; public class ChaturbateHttpClient extends HttpClient { - private static final transient Logger LOG = LoggerFactory.getLogger(ChaturbateHttpClient.class); - protected String token; + private static final Logger LOG = LoggerFactory.getLogger(ChaturbateHttpClient.class); + protected String token; public ChaturbateHttpClient() { super("chaturbate"); @@ -55,7 +57,7 @@ public class ChaturbateHttpClient extends HttpClient { try { Request login = new Request.Builder() .url(Chaturbate.baseUrl + "/auth/login/") - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); Response response = client.newCall(login).execute(); String content = response.body().string(); @@ -70,8 +72,8 @@ public class ChaturbateHttpClient extends HttpClient { .build(); login = new Request.Builder() .url(Chaturbate.baseUrl + "/auth/login/") - .header("Referer", Chaturbate.baseUrl + "/auth/login/") - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(REFERER, Chaturbate.baseUrl + "/auth/login/") + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .post(body) .build(); @@ -102,7 +104,7 @@ public class ChaturbateHttpClient extends HttpClient { String url = "https://chaturbate.com/p/" + Config.getInstance().getSettings().username + "/"; Request req = new Request.Builder() .url(url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); Response resp = execute(req); if (resp.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java index 9921faa4..54de2033 100644 --- a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java +++ b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java @@ -1,6 +1,7 @@ package ctbrec.sites.chaturbate; import static ctbrec.Model.State.*; +import static ctbrec.io.HttpConstants.*; import java.io.EOFException; import java.io.IOException; @@ -38,7 +39,7 @@ import okhttp3.Response; 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 StreamInfo streamInfo; private long streamInfoTimestamp = 0; @@ -149,9 +150,9 @@ public class ChaturbateModel extends AbstractModel { Request req = new Request.Builder() .url("https://chaturbate.com/tipping/send_tip/"+getName()+"/") .post(body) - .header("Referer", "https://chaturbate.com/"+getName()+"/") - .header("X-Requested-With", "XMLHttpRequest") - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(REFERER, "https://chaturbate.com/"+getName()+"/") + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try (Response response = getSite().getHttpClient().execute(req)) { if (!response.isSuccessful()) { @@ -185,6 +186,7 @@ public class ChaturbateModel extends AbstractModel { } return sources; } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new ExecutionException(e); } } @@ -202,7 +204,7 @@ public class ChaturbateModel extends AbstractModel { private boolean follow(boolean follow) throws IOException { Request req = new Request.Builder() .url(getUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); Response resp = site.getHttpClient().execute(req); resp.close(); @@ -218,12 +220,12 @@ public class ChaturbateModel extends AbstractModel { req = new Request.Builder() .url(url) .method("POST", body) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", getUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5") + .header(REFERER, getUrl()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .header("X-CSRFToken", ((ChaturbateHttpClient)site.getHttpClient()).getToken()) - .header("X-Requested-With", "XMLHttpRequest") + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); resp = site.getHttpClient().execute(req); if(resp.isSuccessful()) { @@ -269,8 +271,8 @@ public class ChaturbateModel extends AbstractModel { Request req = new Request.Builder() .url(getSite().getBaseUrl() + "/get_edge_hls_url_ajax/") .post(body) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("X-Requested-With", "XMLHttpRequest") + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try(Response response = getSite().getHttpClient().execute(req)) { if(response.isSuccessful()) { @@ -339,7 +341,7 @@ public class ChaturbateModel extends AbstractModel { LOG.trace("Loading master playlist {}", streamInfo.url); Request req = new Request.Builder() .url(streamInfo.url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try (Response response = getSite().getHttpClient().execute(req)) { if (response.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/fc2live/Fc2HttpClient.java b/common/src/main/java/ctbrec/sites/fc2live/Fc2HttpClient.java index 777e29e3..b0556466 100644 --- a/common/src/main/java/ctbrec/sites/fc2live/Fc2HttpClient.java +++ b/common/src/main/java/ctbrec/sites/fc2live/Fc2HttpClient.java @@ -1,5 +1,7 @@ package ctbrec.sites.fc2live; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import org.json.JSONObject; @@ -19,7 +21,7 @@ import okhttp3.WebSocketListener; 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() { super("fc2live"); @@ -53,7 +55,7 @@ public class Fc2HttpClient extends HttpClient { .build(); Request req = new Request.Builder() .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") .post(body) .build(); @@ -67,7 +69,7 @@ public class Fc2HttpClient extends HttpClient { LOG.debug("Calling https://secure.id.fc2.com/?login=done"); req = new Request.Builder() .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(); try (Response resp2 = execute(req)) { if (resp.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java b/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java index baf71209..be2bf391 100644 --- a/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java +++ b/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java @@ -1,9 +1,12 @@ package ctbrec.sites.fc2live; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Objects; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -70,11 +73,11 @@ public class Fc2Model extends AbstractModel { Request req = new Request.Builder() .url(url) .method("POST", body) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", Fc2Live.BASE_URL) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("X-Requested-With", "XMLHttpRequest") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(REFERER, Fc2Live.BASE_URL) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try(Response resp = getSite().getHttpClient().execute(req)) { if(resp.isSuccessful()) { @@ -130,11 +133,11 @@ public class Fc2Model extends AbstractModel { List sources = new ArrayList<>(); Request req = new Request.Builder() .url(playlistUrl) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("Origin", Fc2Live.BASE_URL) - .header("Referer", getUrl()) + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(ORIGIN, Fc2Live.BASE_URL) + .header(REFERER, getUrl()) .build(); try(Response response = site.getHttpClient().execute(req)) { if(response.isSuccessful()) { @@ -179,11 +182,11 @@ public class Fc2Model extends AbstractModel { Request req = new Request.Builder() .url(url) .method("POST", body) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", Fc2Live.BASE_URL) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("X-Requested-With", "XMLHttpRequest") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(REFERER, Fc2Live.BASE_URL) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); LOG.debug("Fetching page {}", url); try(Response resp = getSite().getHttpClient().execute(req)) { @@ -239,7 +242,7 @@ public class Fc2Model extends AbstractModel { .build(); Request req = new Request.Builder() .url(getSite().getBaseUrl() + "/api/favoriteManager.php") - .header("Referer", getUrl()) + .header(REFERER, getUrl()) .header("Content-Type", "application/x-www-form-urlencoded") .post(body) .build(); @@ -294,9 +297,9 @@ public class Fc2Model extends AbstractModel { Request request = new Request.Builder() .url(url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .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(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .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") .build(); ws = getSite().getHttpClient().newWebSocket(request, new WebSocketListener() { @Override diff --git a/common/src/main/java/ctbrec/sites/flirt4free/Flirt4Free.java b/common/src/main/java/ctbrec/sites/flirt4free/Flirt4Free.java index 8838ee53..48ddbd51 100644 --- a/common/src/main/java/ctbrec/sites/flirt4free/Flirt4Free.java +++ b/common/src/main/java/ctbrec/sites/flirt4free/Flirt4Free.java @@ -1,5 +1,7 @@ package ctbrec.sites.flirt4free; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; @@ -64,7 +66,7 @@ public class Flirt4Free extends AbstractSite { String url = Flirt4Free.BASE_URI + "/my-account/"; Request request = new Request.Builder() .url(url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try(Response response = getHttpClient().execute(request)) { if(response.isSuccessful()) { @@ -92,6 +94,7 @@ public class Flirt4Free extends AbstractSite { @Override public void init() throws IOException { + // noop } @Override @@ -121,7 +124,7 @@ public class Flirt4Free extends AbstractSite { String url = BASE_URI + "/search/?query=" + URLEncoder.encode(q, "utf-8"); Request req = new Request.Builder() .url(url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try (Response response = getHttpClient().execute(req)) { if (response.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/flirt4free/Flirt4FreeHttpClient.java b/common/src/main/java/ctbrec/sites/flirt4free/Flirt4FreeHttpClient.java index 52723a55..97dc2ae5 100644 --- a/common/src/main/java/ctbrec/sites/flirt4free/Flirt4FreeHttpClient.java +++ b/common/src/main/java/ctbrec/sites/flirt4free/Flirt4FreeHttpClient.java @@ -1,5 +1,7 @@ package ctbrec.sites.flirt4free; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.List; @@ -15,7 +17,7 @@ import okhttp3.Response; 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() { super("flirt4free"); @@ -47,7 +49,7 @@ public class Flirt4FreeHttpClient extends HttpClient { .build(); Request request = new Request.Builder() .url(url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .post(body) .build(); try (Response response = execute(request)) { @@ -68,7 +70,7 @@ public class Flirt4FreeHttpClient extends HttpClient { String url = Flirt4Free.BASE_URI + "/my-account/"; Request request = new Request.Builder() .url(url) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try(Response response = execute(request)) { if(response.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/flirt4free/Flirt4FreeModel.java b/common/src/main/java/ctbrec/sites/flirt4free/Flirt4FreeModel.java index ff66d1d5..f72735f9 100644 --- a/common/src/main/java/ctbrec/sites/flirt4free/Flirt4FreeModel.java +++ b/common/src/main/java/ctbrec/sites/flirt4free/Flirt4FreeModel.java @@ -1,5 +1,7 @@ package ctbrec.sites.flirt4free; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; @@ -70,11 +72,11 @@ public class Flirt4FreeModel extends AbstractModel { try { Request request = new Request.Builder() .url(url) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", getUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("X-Requested-With", "XMLHttpRequest") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5") + .header(REFERER, getUrl()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response response = getSite().getHttpClient().execute(request)) { if (response.isSuccessful()) { @@ -111,11 +113,11 @@ public class Flirt4FreeModel extends AbstractModel { LOG.trace("Loading url {}", url); Request request = new Request.Builder() .url(url) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", getUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("X-Requested-With", "XMLHttpRequest") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5") + .header(REFERER, getUrl()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response response = getSite().getHttpClient().execute(request)) { if (response.isSuccessful()) { @@ -182,11 +184,11 @@ public class Flirt4FreeModel extends AbstractModel { LOG.trace("Loading master playlist {}", streamUrl); Request req = new Request.Builder() .url(streamUrl) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", getUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("X-Requested-With", "XMLHttpRequest") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5") + .header(REFERER, getUrl()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); acquireSlot(); try (Response response = getSite().getHttpClient().execute(req)) { @@ -212,11 +214,11 @@ public class Flirt4FreeModel extends AbstractModel { LOG.trace("Opening chat websocket {}", url); Request req = new Request.Builder() .url(url) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", getUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("X-Requested-With", "XMLHttpRequest") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5") + .header(REFERER, getUrl()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); getSite().getHttpClient().newWebSocket(req, new WebSocketListener() { @@ -317,12 +319,12 @@ public class Flirt4FreeModel extends AbstractModel { LOG.debug("Trying to send tip: {}", url); Request req = new Request.Builder() .url(url) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", getUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .header("Referer", getUrl()) - .header("X-Requested-With", "XMLHttpRequest") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5") + .header(REFERER, getUrl()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .header(REFERER, getUrl()) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response response = getSite().getHttpClient().execute(req)) { if (response.isSuccessful()) { @@ -351,10 +353,10 @@ public class Flirt4FreeModel extends AbstractModel { try { Request req = new Request.Builder() .url(getUrl()) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", getUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5") + .header(REFERER, getUrl()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try (Response response = getSite().getHttpClient().execute(req)) { if (response.isSuccessful()) { @@ -430,10 +432,10 @@ public class Flirt4FreeModel extends AbstractModel { LOG.debug("Sending follow/unfollow request: {}", url); Request req = new Request.Builder() .url(url) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("Referer", getUrl()) - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5") + .header(REFERER, getUrl()) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); try (Response response = getSite().getHttpClient().execute(req)) { if (response.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/jasmin/LiveJasmin.java b/common/src/main/java/ctbrec/sites/jasmin/LiveJasmin.java index 9f77389e..3f534cb7 100644 --- a/common/src/main/java/ctbrec/sites/jasmin/LiveJasmin.java +++ b/common/src/main/java/ctbrec/sites/jasmin/LiveJasmin.java @@ -1,9 +1,12 @@ package ctbrec.sites.jasmin; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -59,9 +62,13 @@ public class LiveJasmin extends AbstractSite { if (getLiveJasminHttpClient().login()) { String sessionId = getLiveJasminHttpClient().getSessionId(); 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) - .addHeader("Accept", "*/*").addHeader("Accept-Language", "en").addHeader("Referer", getBaseUrl()) - .addHeader("X-Requested-With", "XMLHttpRequest").build(); + Request request = new Request.Builder().url(url) + .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)) { if (response.isSuccessful()) { String body = response.body().string(); @@ -132,8 +139,13 @@ public class LiveJasmin extends AbstractSite { String query = URLEncoder.encode(q, "utf-8"); long ts = System.currentTimeMillis(); 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", "*/*") - .addHeader("Accept-Language", "en").addHeader("Referer", getBaseUrl()).addHeader("X-Requested-With", "XMLHttpRequest").build(); + Request request = new Request.Builder().url(url) + .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)) { if (response.isSuccessful()) { String body = response.body().string(); diff --git a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminHttpClient.java b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminHttpClient.java index 00800c10..0d9fc91c 100644 --- a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminHttpClient.java +++ b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminHttpClient.java @@ -1,6 +1,9 @@ package ctbrec.sites.jasmin; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; +import java.util.Locale; import java.util.NoSuchElementException; import org.slf4j.Logger; @@ -53,11 +56,11 @@ public class LiveJasminHttpClient extends HttpClient { String url = "https://m." + LiveJasmin.baseDomain + "/en/member/favourite/get-favourite-list?ajax=1"; Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgentMobile) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", LiveJasmin.baseUrl) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgentMobile) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, LiveJasmin.baseUrl) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try(Response response = temp.newCall(request).execute()) { LOG.debug("Login Check {}: {} - {}", url, response.code(), response.message()); diff --git a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminModel.java b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminModel.java index ed29a6bf..e4d29901 100644 --- a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminModel.java +++ b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminModel.java @@ -1,10 +1,13 @@ package ctbrec.sites.jasmin; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import java.util.Random; import java.util.concurrent.ExecutionException; @@ -36,7 +39,7 @@ import okhttp3.Response; 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 boolean online = false; private int[] resolution; @@ -51,12 +54,13 @@ public class LiveJasminModel extends AbstractModel { protected void loadModelInfo() throws IOException { String url = "https://m." + LiveJasmin.baseDomain + "/en/chat-html5/" + getName(); - 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") - .header("Accept", "application/json,*/*") - .header("Accept-Language", "en") - .header("Referer", getSite().getBaseUrl()) - .header("X-Requested-With", "XMLHttpRequest") + 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") + .header(ACCEPT, MIMETYPE_APPLICATION_JSON) + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(REFERER, getSite().getBaseUrl()) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response response = getSite().getHttpClient().execute(req)) { if (response.isSuccessful()) { @@ -126,7 +130,7 @@ public class LiveJasminModel extends AbstractModel { streamSources.clear(); for (PlaylistData playlistData : master.getPlaylists()) { StreamSource streamsource = new StreamSource(); - String baseUrl = masterUrl.toString(); + String baseUrl = masterUrl; baseUrl = baseUrl.substring(0, baseUrl.lastIndexOf('/') + 1); streamsource.mediaPlaylistUrl = baseUrl + playlistData.getUri(); if (playlistData.hasStreamInfo()) { @@ -162,11 +166,11 @@ public class LiveJasminModel extends AbstractModel { LOG.debug("Getting master playlist URL from {}", url); Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgentMobile) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", getUrl()) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgentMobile) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, getUrl()) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response response = site.getHttpClient().execute(request)) { if (response.isSuccessful()) { @@ -186,6 +190,7 @@ public class LiveJasminModel extends AbstractModel { @Override public void invalidateCacheEntries() { + // noop } @Override @@ -198,6 +203,7 @@ public class LiveJasminModel extends AbstractModel { try { tippingSocket.sendTip(this, Config.getInstance(), tokens); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IOException(e); } } @@ -243,11 +249,11 @@ public class LiveJasminModel extends AbstractModel { } Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "*/*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", getUrl()) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, "*/*") + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, getUrl()) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response response = site.getHttpClient().execute(request)) { if (response.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminTippingWebSocket.java b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminTippingWebSocket.java index c3fd5280..d2a4cf00 100644 --- a/common/src/main/java/ctbrec/sites/jasmin/LiveJasminTippingWebSocket.java +++ b/common/src/main/java/ctbrec/sites/jasmin/LiveJasminTippingWebSocket.java @@ -1,6 +1,9 @@ package ctbrec.sites.jasmin; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; +import java.util.Locale; import org.json.JSONArray; import org.json.JSONObject; @@ -17,7 +20,7 @@ import okhttp3.WebSocketListener; import okio.ByteString; 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 sessionId; @@ -51,10 +54,10 @@ public class LiveJasminTippingWebSocket { Request request = new Request.Builder() .url("https://" + relayHost + "/") - .header("Origin", LiveJasmin.baseUrl) - .header("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0") - .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(ORIGIN, LiveJasmin.baseUrl) + .header(USER_AGENT, config.getSettings().httpUserAgent) + .header(ACCEPT, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) .build(); Object monitor = new Object(); relay = client.newWebSocket(request, new WebSocketListener() { @@ -139,11 +142,11 @@ public class LiveJasminTippingWebSocket { String url = "https://m." + LiveJasmin.baseDomain + "/en/chat-html5/" + name; 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") - .header("Accept", "application/json,*/*") - .header("Accept-Language", "en") - .header("Referer", LiveJasmin.baseUrl) - .header("X-Requested-With", "XMLHttpRequest") + .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, MIMETYPE_APPLICATION_JSON) + .header(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .header(REFERER, LiveJasmin.baseUrl) + .header(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try (Response response = client.execute(req)) { if (response.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/mfc/DashStreamSourceProvider.java b/common/src/main/java/ctbrec/sites/mfc/DashStreamSourceProvider.java index 91941cfb..0286dfc9 100644 --- a/common/src/main/java/ctbrec/sites/mfc/DashStreamSourceProvider.java +++ b/common/src/main/java/ctbrec/sites/mfc/DashStreamSourceProvider.java @@ -1,5 +1,7 @@ package ctbrec.sites.mfc; +import static ctbrec.io.HttpConstants.*; + import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.ArrayList; @@ -76,12 +78,12 @@ public class DashStreamSourceProvider implements StreamSourceProvider { // @formatter:off Request request = new Request.Builder() .url(url) - .header("Accept", "*/*") - .header("Accept-Language", "en-US,en;q=0.5") - .header("User-Agent", config.getSettings().httpUserAgent) - .header("Origin", site.getBaseUrl()) - .header("Referer", site.getBaseUrl()) - .header("Connection", "keep-alive") + .header(ACCEPT, "*/*") + .header(ACCEPT_LANGUAGE, "en-US,en;q=0.5") + .header(USER_AGENT, config.getSettings().httpUserAgent) + .header(ORIGIN, site.getBaseUrl()) + .header(REFERER, site.getBaseUrl()) + .header(CONNECTION, KEEP_ALIVE) .build(); // @formatter:on LOG.trace("Loading manifest {}", url); try (Response response = site.getHttpClient().execute(request)) { diff --git a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java index 2741c6d2..be218812 100644 --- a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java +++ b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsClient.java @@ -1,5 +1,6 @@ package ctbrec.sites.mfc; +import static ctbrec.io.HttpConstants.*; import static ctbrec.sites.mfc.MessageTypes.*; import java.io.FileOutputStream; @@ -105,7 +106,7 @@ public class MyFreeCamsClient { while (running) { if (ws == null && !connecting) { 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); } diff --git a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java index 8100b7b8..ce0b7fa3 100644 --- a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java +++ b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsHttpClient.java @@ -1,5 +1,7 @@ package ctbrec.sites.mfc; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.List; import java.util.NoSuchElementException; @@ -25,7 +27,7 @@ import okhttp3.WebSocketListener; 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() { super("myfreecams"); @@ -54,7 +56,7 @@ public class MyFreeCamsHttpClient extends HttpClient { .build(); Request req = new Request.Builder() .url(MyFreeCams.baseUrl + "/php/login.php") - .header("Referer", MyFreeCams.baseUrl) + .header(REFERER, MyFreeCams.baseUrl) .header("Content-Type", "application/x-www-form-urlencoded") .post(body) .build(); @@ -93,6 +95,7 @@ public class MyFreeCamsHttpClient extends HttpClient { } } + @Override public WebSocket newWebSocket(Request req, WebSocketListener webSocketListener) { return client.newWebSocket(req, webSocketListener); } diff --git a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java index 89ea206f..182b1643 100644 --- a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java +++ b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java @@ -1,5 +1,7 @@ package ctbrec.sites.mfc; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; @@ -148,7 +150,7 @@ public class MyFreeCamsModel extends AbstractModel { req = new Request.Builder() .url(tipUrl) .post(body) - .addHeader("Referer", initUrl) + .addHeader(REFERER, initUrl) .build(); try(Response response = site.getHttpClient().execute(req)) { if(!response.isSuccessful()) { diff --git a/common/src/main/java/ctbrec/sites/streamate/Streamate.java b/common/src/main/java/ctbrec/sites/streamate/Streamate.java index 97ea4231..1c2c7ac8 100644 --- a/common/src/main/java/ctbrec/sites/streamate/Streamate.java +++ b/common/src/main/java/ctbrec/sites/streamate/Streamate.java @@ -1,10 +1,13 @@ package ctbrec.sites.streamate; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -24,7 +27,7 @@ import okhttp3.Response; 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"; @@ -66,11 +69,11 @@ public class Streamate extends AbstractSite { // .build(); // Request request = new Request.Builder() // .url(url) - // .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - // .addHeader("Accept", "application/json, text/javascript, */*") - // .addHeader("Accept-Language", "en") - // .addHeader("Referer", Streamate.BASE_URL) - // .addHeader("X-Requested-With", "XMLHttpRequest") + // .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + // .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + // .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + // .addHeader(REFERER, Streamate.BASE_URL) + // .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) // .post(body) // .build(); // try(Response response = getHttpClient().execute(request)) { @@ -109,6 +112,7 @@ public class Streamate extends AbstractSite { @Override public void init() throws IOException { + // nothing to initialize } @Override @@ -142,11 +146,11 @@ public class Streamate extends AbstractSite { public List 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"); Request req = new Request.Builder().url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", Streamate.BASE_URL) - .addHeader("X-Requested-With", "XMLHttpRequest").build(); + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, Streamate.BASE_URL) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST).build(); try (Response response = getHttpClient().execute(req)) { if (response.isSuccessful()) { String body = response.body().string(); @@ -167,7 +171,7 @@ public class Streamate extends AbstractSite { } return models; } else { - LOG.warn("Search result: " + json.toString(2)); + LOG.warn("Search result: {}", json.toString(2)); return Collections.emptyList(); } } else { diff --git a/common/src/main/java/ctbrec/sites/streamate/StreamateHttpClient.java b/common/src/main/java/ctbrec/sites/streamate/StreamateHttpClient.java index 096a0405..7976df86 100644 --- a/common/src/main/java/ctbrec/sites/streamate/StreamateHttpClient.java +++ b/common/src/main/java/ctbrec/sites/streamate/StreamateHttpClient.java @@ -1,7 +1,10 @@ package ctbrec.sites.streamate; +import static ctbrec.io.HttpConstants.*; + import java.io.IOException; import java.util.Collections; +import java.util.Locale; import java.util.NoSuchElementException; import org.json.JSONObject; @@ -19,7 +22,9 @@ import okhttp3.Response; 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 String saKey = ""; @@ -38,7 +43,7 @@ public class StreamateHttpClient extends HttpClient { // try to load sakey from cookie 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(); } catch (NoSuchElementException e) { // ignore @@ -71,11 +76,11 @@ public class StreamateHttpClient extends HttpClient { RequestBody body = RequestBody.create(MediaType.parse("application/json"), loginRequest.toString()); Request login = new Request.Builder() .url(Streamate.BASE_URL + "/api/member/login") - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", Streamate.BASE_URL) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, Streamate.BASE_URL) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .post(body) .build(); try (Response response = client.newCall(login).execute()) { @@ -83,15 +88,14 @@ public class StreamateHttpClient extends HttpClient { if(response.isSuccessful()) { JSONObject json = new JSONObject(content); //LOG.debug(json.toString(2)); - loggedIn = json.has("sakey"); - saKey = json.optString("sakey"); + loggedIn = json.has(SAKEY_KEY); + saKey = json.optString(SAKEY_KEY); JSONObject account = json.getJSONObject("account"); userId = account.getLong("userid"); userNickname = account.getString("nickname"); } else { throw new IOException("Login failed: " + response.code() + " " + response.message()); } - response.close(); } return loggedIn; @@ -105,20 +109,16 @@ public class StreamateHttpClient extends HttpClient { url = url + "&page_number=1&results_per_page=48&sakey=" + saKey + "&userid=" + userId; Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", Streamate.BASE_URL) + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, Streamate.BASE_URL) .build(); try(Response response = execute(request)) { if (response.isSuccessful()) { String content = response.body().string(); JSONObject json = new JSONObject(content); - if(json.optString("status").equals("SM_OK")) { - return true; - } else { - return false; - } + return json.optString("status").equals("SM_OK"); } else { return false; } diff --git a/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java b/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java index 68c41911..ad7935ce 100644 --- a/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java +++ b/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java @@ -1,11 +1,13 @@ package ctbrec.sites.streamate; import static ctbrec.Model.State.*; +import static ctbrec.io.HttpConstants.*; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.concurrent.ExecutionException; import org.json.JSONArray; @@ -31,7 +33,7 @@ import okio.Buffer; 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 List streamSources = new ArrayList<>(); @@ -44,11 +46,11 @@ public class StreamateModel extends AbstractModel { if(ignoreCache) { String url = "https://sea1c-ls.naiadsystems.com/sea1c-edge-ls/80/live/s:" + getName() + ".json"; Request req = new Request.Builder().url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "*/*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", Streamate.BASE_URL + '/' + getName()) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, "*/*") + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, Streamate.BASE_URL + '/' + getName()) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try(Response response = site.getHttpClient().execute(req)) { online = response.isSuccessful(); @@ -82,11 +84,11 @@ public class StreamateModel extends AbstractModel { public List getStreamSources() throws IOException, ExecutionException, ParseException, PlaylistException { String url = "https://sea1c-ls.naiadsystems.com/sea1c-edge-ls/80/live/s:" + getName() + ".json"; Request req = new Request.Builder().url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "*/*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", Streamate.BASE_URL + '/' + getName()) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, "*/*") + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, Streamate.BASE_URL + '/' + getName()) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try(Response response = site.getHttpClient().execute(req)) { if(response.isSuccessful()) { @@ -197,11 +199,11 @@ public class StreamateModel extends AbstractModel { LOG.debug("tip params {}", b.readUtf8()); Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", Streamate.BASE_URL + '/' + getName()) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, Streamate.BASE_URL + '/' + getName()) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .post(body) .build(); 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"; Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, text/javascript, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", Streamate.BASE_URL + '/' + getName()) - .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, MIMETYPE_APPLICATION_JSON) + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, Streamate.BASE_URL + '/' + getName()) + .addHeader(X_REQUESTED_WITH, XML_HTTP_REQUEST) .build(); try(Response response = site.getHttpClient().execute(request)) { 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"; Request request = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) - .addHeader("Accept", "application/json, */*") - .addHeader("Accept-Language", "en") - .addHeader("Referer", getSite().getBaseUrl()) + .addHeader(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) + .addHeader(ACCEPT, "application/json, */*") + .addHeader(ACCEPT_LANGUAGE, Locale.ENGLISH.getLanguage()) + .addHeader(REFERER, getSite().getBaseUrl()) .post(body) .build(); try(Response response = getSite().getHttpClient().execute(request)) { diff --git a/common/src/main/java/ctbrec/sites/streamate/StreamateWebsocketClient.java b/common/src/main/java/ctbrec/sites/streamate/StreamateWebsocketClient.java index b7bd9b34..28ae40cb 100644 --- a/common/src/main/java/ctbrec/sites/streamate/StreamateWebsocketClient.java +++ b/common/src/main/java/ctbrec/sites/streamate/StreamateWebsocketClient.java @@ -1,5 +1,7 @@ package ctbrec.sites.streamate; +import static ctbrec.io.HttpConstants.*; + import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -16,7 +18,7 @@ import okio.ByteString; 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 HttpClient client; @@ -30,7 +32,7 @@ public class StreamateWebsocketClient { LOG.debug("Connecting to {}", url); Object monitor = new Object(); Request request = new Request.Builder() - .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header(USER_AGENT, Config.getInstance().getSettings().httpUserAgent) .build(); client.newWebSocket(request, new WebSocketListener() { @Override @@ -51,7 +53,7 @@ public class StreamateWebsocketClient { @Override public void onMessage(WebSocket webSocket, ByteString bytes) { - LOG.debug("ws btxt {}", bytes.toString()); + LOG.debug("ws btxt {}", bytes); } @Override