From 8f5c7ac9c4e33991edcbc1f89ee6e1589ec8db33 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Mon, 15 Apr 2019 19:17:41 +0200 Subject: [PATCH] Implement login and token balance --- .../ctbrec/sites/flirt4free/Flirt4Free.java | 60 +++++++++---------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/common/src/main/java/ctbrec/sites/flirt4free/Flirt4Free.java b/common/src/main/java/ctbrec/sites/flirt4free/Flirt4Free.java index 2f9618e8..dacba275 100644 --- a/common/src/main/java/ctbrec/sites/flirt4free/Flirt4Free.java +++ b/common/src/main/java/ctbrec/sites/flirt4free/Flirt4Free.java @@ -44,7 +44,7 @@ public class Flirt4Free extends AbstractSite { @Override public String getBuyTokensLink() { - return BASE_URI; + return getAffiliateLink(); } @Override @@ -58,28 +58,26 @@ public class Flirt4Free extends AbstractSite { @Override public Double getTokenBalance() throws IOException { - return 0d; - // if (!credentialsAvailable()) { - // throw new IOException("Account settings not available"); - // } - // - // String username = Config.getInstance().getSettings().camsodaUsername; - // String url = BASE_URI + "/api/v1/user/" + username; - // Request request = new Request.Builder().url(url).build(); - // try(Response response = getHttpClient().execute(request)) { - // if(response.isSuccessful()) { - // JSONObject json = new JSONObject(response.body().string()); - // if(json.has("user")) { - // JSONObject user = json.getJSONObject("user"); - // if(user.has("tokens")) { - // return (double) user.getInt("tokens"); - // } - // } - // } else { - // throw new HttpException(response.code(), response.message()); - // } - // } - // throw new RuntimeException("Tokens not found in response"); + if (!credentialsAvailable()) { + throw new IOException("Account settings not available"); + } + + login(); + + String url = Flirt4Free.BASE_URI + "/my-account/"; + Request request = new Request.Builder() + .url(url) + .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .build(); + try(Response response = getHttpClient().execute(request)) { + if(response.isSuccessful()) { + String body = response.body().string(); + String text = HtmlParser.getText(body, "span[class~=user-credit-amount] strong"); + return Double.parseDouble(text); + } else { + throw new RuntimeException("Tokens not found in response"); + } + } } @Override @@ -89,7 +87,7 @@ public class Flirt4Free extends AbstractSite { @Override public HttpClient getHttpClient() { - if(httpClient == null) { + if (httpClient == null) { httpClient = new Flirt4FreeHttpClient(); } return httpClient; @@ -101,14 +99,14 @@ public class Flirt4Free extends AbstractSite { @Override public void shutdown() { - if(httpClient != null) { + if (httpClient != null) { httpClient.shutdown(); } } @Override public boolean supportsTips() { - return false; + return true; } @Override @@ -126,10 +124,10 @@ public class Flirt4Free extends AbstractSite { String url = BASE_URI + "/search/?query=" + URLEncoder.encode(q, "utf-8"); Request req = new Request.Builder() .url(url) - .addHeader("User-Agent", Config.getInstance().getSettings().httpUserAgent) + .header("User-Agent", Config.getInstance().getSettings().httpUserAgent) .build(); - try(Response response = getHttpClient().execute(req)) { - if(response.isSuccessful()) { + try (Response response = getHttpClient().execute(req)) { + if (response.isSuccessful()) { List result = new ArrayList<>(); String body = response.body().string(); Elements modelLinks = HtmlParser.getTags(body, "form#advanced_search h4 a.common-link"); @@ -157,7 +155,7 @@ public class Flirt4Free extends AbstractSite { @Override public boolean credentialsAvailable() { - String username = Config.getInstance().getSettings().camsodaUsername; + String username = Config.getInstance().getSettings().flirt4freeUsername; return username != null && !username.trim().isEmpty(); } @@ -170,7 +168,7 @@ public class Flirt4Free extends AbstractSite { }; for (String p : patterns) { Matcher m = Pattern.compile(p).matcher(url); - if(m.matches()) { + if (m.matches()) { String modelName = m.group(1); return createModel(modelName); }