Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Net.Http;
- using Newtonsoft.Json;
- using System.Security.Cryptography;
- namespace SmiteAllInOne
- {
- static class Communicator
- {
- private static HttpClient _httpClient = new HttpClient();
- private static Sessionkey _sessionKey;
- private static string _devId = "1545", _authKey = "6E782D62E7EA45C48BDF1A0B8BFDAEC6";
- private static string _timeStamp;
- static Communicator() {
- _httpClient.BaseAddress = new Uri("http://api.smitegame.com");
- _timeStamp = DateTime.UtcNow.ToString("yyyyMMddHHmmss");
- }
- public static async Task<string> getSessionKey()
- {
- if (_sessionKey == null || _sessionKey.TimeStamp.AddMinutes(14).CompareTo(DateTime.UtcNow) != 1)
- {
- _timeStamp = GetTimeStamp();
- string url = $"/smiteapi.svc/createsessionJson/{_devId}/{createSignature("createsession")}/{_timeStamp}";
- var result = await _httpClient.GetStringAsync(url);
- _sessionKey = JsonConvert.DeserializeObject<Sessionkey>(result);
- }
- return _sessionKey.Session_id;
- }
- public static async Task<Player> GetPlayer(string player)
- {
- _timeStamp = GetTimeStamp();
- var signature = createSignature("getplayer");
- var session = await getSessionKey();
- string url = $"/smiteapi.svc/getplayerJson/{_devId}/{signature}/{session}/{_timeStamp}/{player}";
- var result = await _httpClient.GetStringAsync(url);
- var p = JsonConvert.DeserializeObject<List<Player>>(result).Single();
- //var friends = await GetFriends(player);
- // p.Friends = friends;
- p.Masteries = await GetMasteries(player);
- p.MatchHistory = await GetMatchHistory(player);
- //p.QueuStats = await GetQueueStats("426",player);
- return p;
- }
- public static async Task<List<MatchHistory>> GetMatchHistory(string player)
- {
- _timeStamp = GetTimeStamp();
- var signature = createSignature("getmatchhistory");
- var session = await getSessionKey();
- string url = $"/smiteapi.svc/getmatchhistoryJson/{_devId}/{signature}/{session}/{_timeStamp}/{player}";
- var result = await _httpClient.GetStringAsync(url);
- return JsonConvert.DeserializeObject<List<MatchHistory>>(result);
- }
- public static async Task<List<Mastery>> GetMasteries(string player)
- {
- _timeStamp = GetTimeStamp();
- var signature = createSignature("getgodranks");
- var session = _sessionKey.Session_id;
- string url = $"/smiteapi.svc/getgodranksJson/{_devId}/{signature}/{session}/{_timeStamp}/{player}";
- var result = await _httpClient.GetStringAsync(url);
- return JsonConvert.DeserializeObject<List<Mastery>>(result);
- }
- public static async Task<List<Friend>> GetFriends(string player)
- {
- _timeStamp = GetTimeStamp();
- var signature = createSignature("getfriends");
- var session = await getSessionKey();
- string url = $"/smiteapi.svc/getfriendsJson/{_devId}/{signature}/{session}/{_timeStamp}/{player}";
- var result = await _httpClient.GetStringAsync(url);
- var friends = JsonConvert.DeserializeObject<List<Friend>>(result);
- foreach(Friend f in friends)
- {
- f.QueuStats = await GetQueueStats("426",f.Name);
- }
- return friends;
- }
- public static async Task<List<Item>> GetItems()
- {
- _timeStamp = GetTimeStamp();
- var signature = createSignature("getitems");
- var session = await getSessionKey();
- var languagecode = 1;
- string url = $"/smiteapi.svc/getitemsJson/{_devId}/{signature}/{session}/{_timeStamp}/{languagecode}";
- var result = await _httpClient.GetStringAsync(url);
- return JsonConvert.DeserializeObject<List<Item>>(result);
- }
- public static async Task<List<God>> GetGods()
- {
- _timeStamp = GetTimeStamp();
- var signature = createSignature("getgods");
- var session = await getSessionKey();
- var languagecode = 1;
- string url = $"/smiteapi.svc/getgodsJson/{_devId}/{signature}/{session}/{_timeStamp}/{languagecode}";
- var result = await _httpClient.GetStringAsync(url);
- return JsonConvert.DeserializeObject<List<God>>(result);
- }
- public static async Task<List<QueueStats>> GetQueueStats(string gamemode,string player)
- {
- _timeStamp = GetTimeStamp();
- var signature = createSignature("getqueuestats");
- var session = await getSessionKey();
- string url = $"/smiteapi.svc/getqueuestatsJson/{_devId}/{signature}/{session}/{_timeStamp}/{player}/{gamemode}";
- var result = await _httpClient.GetStringAsync(url);
- return JsonConvert.DeserializeObject<List<QueueStats>>(result);
- }
- private static string createSignature(String method) => GetMD5Hash(_devId + method + _authKey + _timeStamp);
- private static string GetTimeStamp() => DateTime.UtcNow.ToString("yyyyMMddHHmmss");
- private static string GetMD5Hash(string input)
- {
- var md5 = new MD5CryptoServiceProvider();
- var bytes = Encoding.UTF8.GetBytes(input);
- bytes = md5.ComputeHash(bytes);
- var sb = new StringBuilder();
- foreach (byte b in bytes)
- {
- sb.Append(b.ToString("x2").ToLower());
- }
- return sb.ToString();
- }
- }
- class Sessionkey{
- public string Ret_msg { get; set; }
- public string Session_id { get; set; }
- public DateTime TimeStamp { get; set; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement