Иконка ресурса

FREE CraftingStore : 0.1.5 0.1.5

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using Oxide.Core.Libraries.Covalence;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using UnityEngine;
using Oxide.Core.Plugins;
namespace Oxide.Plugins {
    [Info("Crafting Store", "CraftingStore", "0.1.5")]
    [Description("Checks the CraftingStore donation platform for new payments and executes the commands that have been set.")]
    class CraftingStore : CovalencePlugin {
        private string baseUrl = "https://api.craftingstore.net/v4/";
        private string baseUrlAlternative = "https://api-fallback.craftingstore.net/v4/";
        private bool useAlternativeBaseUrl = false;
        private string apiToken = "";
        void OnServerInitialized() {
            // Set config
            this.apiToken = Config["token"].ToString();
            int fetchFrequencyMinutes = Int32.Parse(Config["frequencyMinutes"].ToString());
            if (this.apiToken == "Enter your API token") {
                PrintError("Your API token is not yet set, please set the API token in the config and reload the CraftingStore plugin.");
                return;
            }
            if (fetchFrequencyMinutes < 4) {
                // Set to 5 minutes when the frequency is to 4 or lower.PrintError("The fetch frequency was set below the minimum (5 minutes).Please change this value in the config, CraftingStore will still work and fetch the commands every 5 minutes.");
                fetchFrequencyMinutes = 5;
            }
            // Request commands on load
            RequestCommands();
            // Create timer that will execute the commands
            timer.Repeat(fetchFrequencyMinutes * 60, 0, () => {
                RequestCommands();
            }
            );
        }
        protected override void LoadDefaultConfig() {
            Puts("Creating CraftingStore Config");
            Config["token"] = "Enter your API token";
            Config["frequencyMinutes"] = 5;
        }
        private ApiResponse ParseResponse(string response) {
            ApiResponse commands = JsonConvert.DeserializeObject<ApiResponse>(response);
            return commands;
        }
        private void GetRequest(string uri, string action) {
            // Set the authentication header
            Dictionary<string, string> headers = new Dictionary<string, string> {
                {
                    "token", this.apiToken
                }
            }
            ;
            webrequest.Enqueue(getBaseUrl() + uri, null, (code, response) => GetCallback(code, response, action), this, Core.Libraries.RequestMethod.GET, headers);
        }
        private void GetCallback(int code, string response, string action) {
            if (response == null || code != 200) {
                if (this.useAlternativeBaseUrl == false) {
                    // Some installations cannot work with our TLS/SSL certificate, use our alternative endpoint.this.useAlternativeBaseUrl = true;
                    RequestCommands();
                    return;
                }
                PrintError("Invalid response returned, please contact us if this error persists.");
                PrintError(response);
                return;
            }
            // Create model from the JSON response.ApiResponse parsedResponse = ParseResponse(response);
            // Validate that the request got a success response back, if not, return the message.if (!parsedResponse.success)
            {
                PrintError("Did not receive success status: " + parsedResponse.message);
                return;
            }
            if (action == "queue") {
                this.ProcessQueuedCommands(parsedResponse);
                return;
            }
        }
        private void PostRequest(string uri, string action, string payload) {
            // Set the authentication header
            Dictionary<string, string> headers = new Dictionary<string, string> {
                {
                    "token", this.apiToken
                }
            }
            ;
            webrequest.Enqueue(getBaseUrl() + uri, payload, (code, response) => PostCallback(code, response, action), this, Core.Libraries.RequestMethod.POST, headers);
        }
        private void PostCallback(int code, string response, string action) {
            if (response == null || code != 200) {
                PrintError("Got error: Invalid response returned, please contact us if this error persists.");
                return;
            }
            // Create model from the JSON response.ApiResponse parsedResponse = ParseResponse(response);
            // Validate that the request got a success response back, if not, return the message.if (!parsedResponse.success)
            {
                PrintError("Did not receive success status: " + parsedResponse.message);
                return;
            }
        }
        private void ProcessQueuedCommands(ApiResponse parsedResponse) {
            QueueResponse[] donations = parsedResponse.result;
            List<int> ids = new List<int>();
            foreach (QueueResponse donation in donations) {
                // Add donation to executed list.ids.Add(donation.id);
                // Execute commands
                Puts("Executing Command: " + donation.command);
                server.Command(donation.command);
            }
            if (ids.Count > 0) {
                // Mark as complete if there are commands processed
                string serializedIds = JsonConvert.SerializeObject(ids);
                string payload = "removeIds=" + serializedIds;
                PostRequest("queue/markComplete", "markComplete", payload);
            }
        }
        private string getBaseUrl() {
            return this.useAlternativeBaseUrl ? this.baseUrlAlternative : this.baseUrl;
        }
        private void RequestCommands() {
            GetRequest("queue", "queue");
        }
        public class QueueResponse {
            public int id;
            public string command;
            public string packageName;
        }
        public class ApiResponse {
            public int id;
            public bool success;
            public string error;
            public string message;
            public QueueResponse[] result;
        }
    }
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху