Establish connection with websocket

This commit is contained in:
JW
2023-08-06 02:09:03 +02:00
parent a58612d4c4
commit b75d6da7ab
10 changed files with 187 additions and 58 deletions

View File

@@ -5,19 +5,11 @@ import java.util.Map;
import java.util.Set;
public class TikTokCookieJar {
/// <summary>
/// Cookies in Jar
/// </summary>
private final Map<String, String> cookies;
/// <summary>
/// Create a TikTok cookie jar instance.
/// </summary>
public TikTokCookieJar() {
cookies = new HashMap<>();
}
public String get(String key) {
return cookies.get(key);
}
@@ -26,19 +18,17 @@ public class TikTokCookieJar {
cookies.put(key, value);
}
/// <summary>
/// Enumerates Cookies
/// </summary>
public Set<Map.Entry<String, String>> GetEnumerator() {
return cookies.entrySet();
}
/* /// <summary>
/// Enumerates Cookies
/// </summary>
public IEnumerator<string> GetEnumerator()
public String parseCookies()
{
foreach (var cookie in cookies)
yield return $"{cookie.Key}={cookie.Value};";
}*/
var sb = new StringBuilder();
for(var entry : cookies.entrySet())
{
sb.append(entry.getKey()).append("=").append(entry.getValue()).append(";");
}
return sb.toString();
}
}

View File

@@ -11,17 +11,21 @@ import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public class TikTokHttpApiClient {
private final ClientSettings clientSettings;
private final TikTokHttpRequestFactory requestFactory;
private final TikTokCookieJar tikTokCookieJar;
public TikTokHttpApiClient(ClientSettings clientSettings, TikTokHttpRequestFactory requestFactory) {
public TikTokHttpApiClient(TikTokCookieJar tikTokCookieJar, ClientSettings clientSettings, TikTokHttpRequestFactory requestFactory) {
this.clientSettings = clientSettings;
this.requestFactory = requestFactory;
this.tikTokCookieJar = tikTokCookieJar;
}
@@ -68,6 +72,18 @@ public class TikTokHttpApiClient {
.build();
var response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
var cookies = response.headers().allValues("Set-Cookie");
for(var cookie : cookies)
{
var split = cookie.split(";")[0].split("=");
var key = split[0];
var value = split[1];
tikTokCookieJar.set(key, value);
var i =0;
}
return response.body();
}
catch (Exception e)
@@ -80,7 +96,7 @@ public class TikTokHttpApiClient {
private String GetSignedUrl(String url, Map<String, Object> parameters) {
var fullUrl = HttpUtils.parseParameters(url,parameters);
var singHeaders = new HashMap<String, Object>();
var singHeaders = new TreeMap<String,Object>();
singHeaders.put("client", "ttlive-net");
singHeaders.put("uuc", 1);
singHeaders.put("url", fullUrl);
@@ -95,7 +111,6 @@ public class TikTokHttpApiClient {
var signedUrl = jsonObject.get("signedUrl").getAsString();
var userAgent = jsonObject.get("User-Agent").getAsString();
//requestFactory.setHeader()
requestFactory.setAgent(userAgent);
return signedUrl;
} catch (Exception e) {

View File

@@ -11,6 +11,7 @@ import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.WebSocket;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.HashMap;
@@ -29,9 +30,12 @@ public class TikTokHttpRequestFactory implements TikTokHttpRequest
private Boolean sent;
private Map<String, String> defaultHeaders;
public TikTokHttpRequestFactory() {
private TikTokCookieJar tikTokCookieJar;
public TikTokHttpRequestFactory(TikTokCookieJar tikTokCookieJar) {
cookieManager = new CookieManager();
this.tikTokCookieJar = tikTokCookieJar;
defaultHeaders = Constants.DefaultRequestHeaders();
client = HttpClient.newBuilder()
.cookieHandler(cookieManager)
@@ -39,6 +43,11 @@ public class TikTokHttpRequestFactory implements TikTokHttpRequest
.build();
}
public WebSocket.Builder openSocket()
{
return client.newWebSocketBuilder();
}
@SneakyThrows
public String Get(String url) {
var uri = URI.create(url);
@@ -124,8 +133,14 @@ public class TikTokHttpRequestFactory implements TikTokHttpRequest
{
var split = cookie.split(";")[0].split("=");
var uri = request.uri();
var key = split[0];
var value = split[1];
tikTokCookieJar.set(key, value);
var map = new HashMap<String,List<String>>();
map.put(split[0],List.of(split[1]));
map.put(key,List.of(value));
cookieManager.put(uri,map);
}