mirror of
https://github.com/jwdeveloper/TikTokLiveJava.git
synced 2026-03-01 09:49:41 -05:00
Develop 1.10.8 (#140)
* Add support for TikTokLinkMicBattleItemCard for battle/match power-ups * Switch to an efficient pool of daemon threads instead of thread per websocket and sleeping! * Implement Eulerstream send chat API endpoint! * Add static to fields for single instance to manage all heartbeat threads. Far more efficient than 1 thread each sleeping! * Add global comment to known its a true global singleton!
This commit is contained in:
@@ -40,11 +40,12 @@ public class HttpClient {
|
||||
|
||||
protected final HttpClientSettings httpClientSettings;
|
||||
protected final String url;
|
||||
protected final HttpRequest.BodyPublisher bodyPublisher;
|
||||
private final Pattern pattern = Pattern.compile("charset=(.*?)(?=&|$)");
|
||||
|
||||
public <T> ActionResult<HttpResponse<T>> toHttpResponse(HttpResponse.BodyHandler<T> handler) {
|
||||
var client = prepareClient();
|
||||
var request = prepareGetRequest();
|
||||
var request = prepareRequest();
|
||||
try {
|
||||
var response = client.send(request, handler);
|
||||
var result = ActionResult.of(response);
|
||||
@@ -99,8 +100,13 @@ public class HttpClient {
|
||||
return URI.create(stringUrl);
|
||||
}
|
||||
|
||||
protected HttpRequest prepareGetRequest() {
|
||||
var requestBuilder = HttpRequest.newBuilder().GET();
|
||||
/**
|
||||
* @return {@link HttpRequest} with default GET, otherwise POST if {@link #bodyPublisher} is not null
|
||||
*/
|
||||
protected HttpRequest prepareRequest() {
|
||||
var requestBuilder = HttpRequest.newBuilder();
|
||||
if (bodyPublisher != null)
|
||||
requestBuilder.POST(bodyPublisher);
|
||||
requestBuilder.uri(toUri());
|
||||
requestBuilder.timeout(httpClientSettings.getTimeout());
|
||||
if (!httpClientSettings.getCookies().isEmpty()) {
|
||||
@@ -124,12 +130,10 @@ public class HttpClient {
|
||||
}
|
||||
|
||||
protected String prepareUrlWithParameters(String url, Map<String, Object> parameters) {
|
||||
if (parameters.isEmpty()) {
|
||||
return url;
|
||||
}
|
||||
if (parameters.isEmpty())
|
||||
return url;
|
||||
|
||||
return url + "?" + parameters.entrySet().stream().map(entry ->
|
||||
{
|
||||
return url + "?" + parameters.entrySet().stream().map(entry -> {
|
||||
var encodedKey = URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8);
|
||||
var encodedValue = URLEncoder.encode(entry.getValue().toString(), StandardCharsets.UTF_8);
|
||||
return encodedKey + "=" + encodedValue;
|
||||
|
||||
@@ -24,6 +24,7 @@ package io.github.jwdeveloper.tiktok.http;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.data.settings.HttpClientSettings;
|
||||
|
||||
import java.net.http.HttpRequest;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -31,6 +32,7 @@ public class HttpClientBuilder {
|
||||
|
||||
private final HttpClientSettings httpClientSettings;
|
||||
private String url;
|
||||
private HttpRequest.BodyPublisher bodyPublisher;
|
||||
|
||||
public HttpClientBuilder(String url, HttpClientSettings httpClientSettings) {
|
||||
this.httpClientSettings = httpClientSettings;
|
||||
@@ -78,10 +80,15 @@ public class HttpClientBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
public HttpClientBuilder withBody(HttpRequest.BodyPublisher bodyPublisher) {
|
||||
this.bodyPublisher = bodyPublisher;
|
||||
return this;
|
||||
}
|
||||
|
||||
public HttpClient build() {
|
||||
var proxyClientSettings = httpClientSettings.getProxyClientSettings();
|
||||
if (proxyClientSettings.isEnabled() && proxyClientSettings.hasNext())
|
||||
return new HttpProxyClient(httpClientSettings, url);
|
||||
return new HttpClient(httpClientSettings, url);
|
||||
return new HttpProxyClient(httpClientSettings, url, bodyPublisher);
|
||||
return new HttpClient(httpClientSettings, url, bodyPublisher);
|
||||
}
|
||||
}
|
||||
@@ -40,8 +40,8 @@ public class HttpProxyClient extends HttpClient {
|
||||
|
||||
private final ProxyClientSettings proxySettings;
|
||||
|
||||
public HttpProxyClient(HttpClientSettings httpClientSettings, String url) {
|
||||
super(httpClientSettings, url);
|
||||
public HttpProxyClient(HttpClientSettings httpClientSettings, String url, HttpRequest.BodyPublisher bodyPublisher) {
|
||||
super(httpClientSettings, url, bodyPublisher);
|
||||
this.proxySettings = httpClientSettings.getProxyClientSettings();
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ public class HttpProxyClient extends HttpClient {
|
||||
|
||||
httpClientSettings.getOnClientCreating().accept(builder);
|
||||
var client = builder.build();
|
||||
var request = prepareGetRequest();
|
||||
var request = prepareRequest();
|
||||
|
||||
var response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
|
||||
if (response.statusCode() != 200)
|
||||
|
||||
Reference in New Issue
Block a user