diff --git a/Commands/Minecraft/ClickedCommand.cs b/Commands/Minecraft/ClickedCommand.cs index a1d97aa..0ecfc97 100644 --- a/Commands/Minecraft/ClickedCommand.cs +++ b/Commands/Minecraft/ClickedCommand.cs @@ -1,12 +1,49 @@ using System.Threading.Tasks; +using hypixel; +using MessagePack; +using Newtonsoft.Json; +using RestSharp; namespace Coflnet.Sky.Commands.MC { public class ClickedCommand : McCommand { - public override Task Execute(MinecraftSocket socket, string arguments) + public async override Task Execute(MinecraftSocket socket, string arguments) { - return Task.CompletedTask; + + var command = JsonConvert.DeserializeObject(arguments); + + if (command.Split(" ")[0] != "/viewauction") + { + return; + } + + var auctionUUID = command.Split(" ")[1]; + + //var affected = SubscribeEngine.Instance.Unsubscribe(userId, args.Topic,args.Type).Result; + var request = new RestRequest("Tracker/flipEvent/{auctionUUID}", Method.POST) + .AddJsonBody(new Arguments() { FlipTrackerEvent = FlipEventType.FLIP_CLICK, PlayerUUID = socket.McId }) + .AddUrlSegment("auctionUUID", auctionUUID); + var response = await TrackerClient.Client.ExecuteAsync(request); + } + + [MessagePackObject] + public class Arguments + { + [Key("playerUUID")] + public string PlayerUUID; + [Key("flipEventType")] + public FlipEventType FlipTrackerEvent; + + } + + public enum FlipEventType + { + FLIP_RECEIVE = 1, + FLIP_CLICK = 2, + PURCHASE_START = 4, + PURCHASE_CONFIRM = 8, + AUCTION_SOLD = 16 } } } \ No newline at end of file diff --git a/Commands/Tracker/TrackFlipEventCommand.cs b/Commands/Tracker/TrackFlipEventCommand.cs new file mode 100644 index 0000000..293162e --- /dev/null +++ b/Commands/Tracker/TrackFlipEventCommand.cs @@ -0,0 +1,48 @@ +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using MessagePack; +using Newtonsoft.Json; +using RestSharp; + +namespace hypixel +{ + public class TrackFlipEventCommand : Command + { + public override async Task Execute(MessageData data) + { + using (var context = new HypixelContext()) + { + var args = data.GetAs(); + + var request = new RestRequest("Tracker/flipEvent/{auctionUUID}", Method.POST) + .AddJsonBody(args) + .AddUrlSegment("auctionUUID", args.AuctionUUID); + + var response = await TrackerClient.Client.ExecuteAsync(request); + + await data.SendBack(new MessageData("flipEvent", null)); + } + } + + [MessagePackObject] + public class Arguments + { + [Key("playerUUID")] + public string PlayerUUID; + [Key("auctionUUID")] + public string AuctionUUID; + [Key("flipEventType")] + public FlipEventType FlipTrackerEvent; + + } + + public enum FlipEventType + { + FLIP_RECEIVE = 1, + FLIP_CLICK = 2, + PURCHASE_START = 4, + PURCHASE_CONFIRM = 8, + AUCTION_SOLD = 16 + } + } +} diff --git a/Commands/Tracker/TrackNewFlipCommand.cs b/Commands/Tracker/TrackNewFlipCommand.cs new file mode 100644 index 0000000..6cfdf54 --- /dev/null +++ b/Commands/Tracker/TrackNewFlipCommand.cs @@ -0,0 +1,48 @@ +using System; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using MessagePack; +using Newtonsoft.Json; +using RestSharp; + +namespace hypixel +{ + public class TrackNewFlipCommand : Command + { + public override async Task Execute(MessageData data) + { + using (var context = new HypixelContext()) + { + var args = data.GetAs(); + + var request = new RestRequest("Tracker/newFlip/{auctionUUID}", Method.POST) + .AddJsonBody(args) + .AddUrlSegment("auctionUUID", args.AuctionUUID); + + var response = await TrackerClient.Client.ExecuteAsync(request); + + await data.SendBack(new MessageData("newFlip", null)); + } + } + + [MessagePackObject] + public class Arguments + { + [Key("auctionUUID")] + public string AuctionUUID; + [Key("targetPrice")] + public int TargetPrice; + [Key("finderType")] + public FinderType FinderType; + + } + + public enum FinderType + { + FLIPPER = 1, + LOWEST_BIN = 2, + SNIPER = 4, + AI = 8 + } + } +} diff --git a/Commands/Tracker/TrackerClient.cs b/Commands/Tracker/TrackerClient.cs new file mode 100644 index 0000000..332cdce --- /dev/null +++ b/Commands/Tracker/TrackerClient.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Newtonsoft.Json; +using RestSharp; + +namespace hypixel +{ + public static class TrackerClient + { + public static RestClient Client = new RestClient("http://" + SimplerConfig.Config.Instance["TRACKER_HOST"]); + + } +} \ No newline at end of file diff --git a/Socket/SkyblockBackEnd.cs b/Socket/SkyblockBackEnd.cs index 2e21d70..d36bae5 100644 --- a/Socket/SkyblockBackEnd.cs +++ b/Socket/SkyblockBackEnd.cs @@ -130,7 +130,8 @@ static SkyblockBackEnd() Commands.Add("newAuctions", new NewAuctionsCommand()); Commands.Add("p", new PingCommand()); - + Commands.Add("trackNewFlip", new TrackNewFlipCommand()); + Commands.Add("trackFlipEvent", new TrackFlipEventCommand()); } diff --git a/appsettings.json b/appsettings.json index 9c21daa..37abf7d 100644 --- a/appsettings.json +++ b/appsettings.json @@ -1,55 +1,58 @@ { - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "EveryOnePremium": false, + "AllowedHosts": "*", + "SKYCOMMANDS_HOST": "localhost:8008", + "MCCONNECT_HOST": "mcconnect", + "UPDATER_HOST": "updater", + "REDIS_HOST": "redis", + "SKYFLIPPER_HOST": "flipper", + "PAYMENTS_HOST": "payment", + "INDEXER_HOST": "indexer", + "SUBSCRIPTION_HOST": "subscription", + "TRACKER_HOST": "tracker", + "JAEGER_SERVICE_NAME": "sky-commands", + "JAEGER_AGENT_HOST": "jaeger", + "KAFKA_HOST": "kafka:9092", + "JAEGER_SAMPLER_TYPE": "ratelimiting", + "JAEGER_SAMPLER_PARAM": "2", + "TOPICS": { + "MISSING_AUCTION": "sky-canceledauction", + "SOLD_AUCTION": "sky-soldauction", + "AUCTION_ENDED": "sky-endedauction", + "FLIP": "sky-flip", + "SETTINGS_CHANGE": "sky-settings" + }, + "IpRateLimiting": { + "EnableEndpointRateLimiting": false, + "StackBlockedRequests": false, + "RealIpHeader": "X-Real-IP", + "ClientIdHeader": "X-ClientId", + "HttpStatusCode": 429, + "EndpointWhitelist": [ + "get:/api/license", + "*:/api/status" + ], + "IpWhitelist": [ + "::1/10", + "172.27.0.0/24" + ], + "GeneralRules": [{ + "Endpoint": "*", + "Period": "10s", + "Limit": 20 + }, + { + "Endpoint": "*", + "Period": "1m", + "Limit": 100 + } + ] } - }, - "EveryOnePremium":false, - "AllowedHosts": "*", - "SKYCOMMANDS_HOST": "localhost:8008", - "MCCONNECT_HOST":"mcconnect", - "UPDATER_HOST":"updater", - "REDIS_HOST":"redis", - "SKYFLIPPER_HOST": "flipper", - "PAYMENTS_HOST": "payment", - "INDEXER_HOST": "indexer", - "SUBSCRIPTION_HOST": "subscription", - "JAEGER_SERVICE_NAME": "sky-commands", - "JAEGER_AGENT_HOST": "jaeger", - "KAFKA_HOST": "kafka:9092", - "JAEGER_SAMPLER_TYPE": "ratelimiting", - "JAEGER_SAMPLER_PARAM": "2", - "TOPICS": { - "MISSING_AUCTION": "sky-canceledauction", - "SOLD_AUCTION": "sky-soldauction", - "AUCTION_ENDED": "sky-endedauction", - "FLIP": "sky-flip", - "SETTINGS_CHANGE": "sky-settings" - }, - "IpRateLimiting": { - "EnableEndpointRateLimiting": false, - "StackBlockedRequests": false, - "RealIpHeader": "X-Real-IP", - "ClientIdHeader": "X-ClientId", - "HttpStatusCode": 429, - "EndpointWhitelist": [ - "get:/api/license", - "*:/api/status" - ], - "IpWhitelist": [ "::1/10", "172.27.0.0/24" ], - "GeneralRules": [ - { - "Endpoint": "*", - "Period": "10s", - "Limit": 20 - }, - { - "Endpoint": "*", - "Period": "1m", - "Limit": 100 - } - ] - } } \ No newline at end of file