mirror of
https://github.com/barelyprofessional/KfChatDotNet.git
synced 2026-05-02 12:32:03 -04:00
Added in support for grabbing Shuffle user profiles
This commit is contained in:
@@ -24,4 +24,35 @@ public class ShuffleLatestBetModel
|
|||||||
public required string GameCategory { get; set; }
|
public required string GameCategory { get; set; }
|
||||||
[JsonPropertyName("gameSlug")]
|
[JsonPropertyName("gameSlug")]
|
||||||
public required string GameSlug { get; set; }
|
public required string GameSlug { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// {
|
||||||
|
// "data": {
|
||||||
|
// "user": {
|
||||||
|
// "id": "a98f83c3-89b7-4e8d-9e11-7dcf1a89b1ba",
|
||||||
|
// "username": "TheBossmanJack",
|
||||||
|
// "vipLevel": "SAPPHIRE_3",
|
||||||
|
// "createdAt": "2024-06-16T23:17:58.533Z",
|
||||||
|
// "avatar": 36,
|
||||||
|
// "avatarBackground": 1,
|
||||||
|
// "bets": 9450,
|
||||||
|
// "usdWagered": "3518595.04092444",
|
||||||
|
// "__typename": "User"
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
public class ShuffleUserModel
|
||||||
|
{
|
||||||
|
[JsonPropertyName("id")]
|
||||||
|
public required string Id { get; set; }
|
||||||
|
[JsonPropertyName("username")]
|
||||||
|
public required string Username { get; set; }
|
||||||
|
[JsonPropertyName("vipLevel")]
|
||||||
|
public required string VipLevel { get; set; }
|
||||||
|
[JsonPropertyName("createdAt")]
|
||||||
|
public required DateTimeOffset CreatedAt { get; set; }
|
||||||
|
[JsonPropertyName("bets")]
|
||||||
|
public required int Bets { get; set; }
|
||||||
|
[JsonPropertyName("usdWagered")]
|
||||||
|
public required string UsdWagered { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Net.Http.Json;
|
||||||
using System.Net.WebSockets;
|
using System.Net.WebSockets;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using KfChatDotNetKickBot.Models;
|
using KfChatDotNetKickBot.Models;
|
||||||
@@ -173,4 +174,44 @@ public class Shuffle
|
|||||||
_logger.Error("--- End of JSON Payload ---");
|
_logger.Error("--- End of JSON Payload ---");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<ShuffleUserModel> GetShuffleUser(string username)
|
||||||
|
{
|
||||||
|
var graphQl =
|
||||||
|
"query GetUserProfile($username: String!) {\n user(username: $username) {\n id\n username\n vipLevel\n createdAt\n avatar\n avatarBackground\n bets\n usdWagered\n __typename\n }\n}";
|
||||||
|
_logger.Debug($"Grabbing details for Shuffle user {username}");
|
||||||
|
var jsonBody = new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
{ "operationName", "GetUserProfile" },
|
||||||
|
{ "query", graphQl },
|
||||||
|
{ "variables", new Dictionary<string, string> { { "username", username } } }
|
||||||
|
};
|
||||||
|
_logger.Debug("Created dictionary object for the JSON payload, should serialize to following value:");
|
||||||
|
_logger.Debug(JsonSerializer.Serialize(jsonBody));
|
||||||
|
var handler = new HttpClientHandler { AutomaticDecompression = DecompressionMethods.All };
|
||||||
|
if (_proxy != null)
|
||||||
|
{
|
||||||
|
handler.UseProxy = false;
|
||||||
|
handler.Proxy = new WebProxy(_proxy);
|
||||||
|
_logger.Debug($"Configured to use proxy {_proxy}");
|
||||||
|
}
|
||||||
|
|
||||||
|
using var client = new HttpClient(handler);
|
||||||
|
client.DefaultRequestHeaders.Add("content-type", "application/json");
|
||||||
|
var postBody = JsonContent.Create(jsonBody);
|
||||||
|
var response = await client.PostAsync("https://shuffle.com/graphql", postBody, _cancellationToken);
|
||||||
|
var responseContent = await response.Content.ReadFromJsonAsync<JsonElement>(cancellationToken: _cancellationToken);
|
||||||
|
_logger.Debug("Shuffle returned following JSON");
|
||||||
|
_logger.Debug(responseContent.GetRawText);
|
||||||
|
var user = responseContent.GetProperty("data").GetProperty("user");
|
||||||
|
if (user.ValueKind == JsonValueKind.Null)
|
||||||
|
{
|
||||||
|
_logger.Debug("data.user was null");
|
||||||
|
throw new ShuffleUserNotFoundException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return user.Deserialize<ShuffleUserModel>() ?? throw new InvalidOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ShuffleUserNotFoundException : Exception;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user