Advertisement
Guest User

Untitled

a guest
Oct 5th, 2015
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.13 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Net.Http;
  7. using Newtonsoft.Json;
  8. using System.Security.Cryptography;
  9.  
  10. namespace SmiteAllInOne
  11. {
  12.     static class Communicator
  13.     {
  14.         private static HttpClient _httpClient = new HttpClient();
  15.         private static Sessionkey _sessionKey;
  16.         private static string _devId = "1545", _authKey = "6E782D62E7EA45C48BDF1A0B8BFDAEC6";
  17.         private static string _timeStamp;
  18.         static Communicator() {
  19.            
  20.             _httpClient.BaseAddress = new Uri("http://api.smitegame.com");
  21.             _timeStamp = DateTime.UtcNow.ToString("yyyyMMddHHmmss");
  22.         }
  23.  
  24.         public static async Task<string> getSessionKey()
  25.         {
  26.  
  27.  
  28.             if (_sessionKey == null || _sessionKey.TimeStamp.AddMinutes(14).CompareTo(DateTime.UtcNow) != 1)
  29.             {
  30.                 _timeStamp = GetTimeStamp();
  31.                 string url = $"/smiteapi.svc/createsessionJson/{_devId}/{createSignature("createsession")}/{_timeStamp}";
  32.            
  33.                 var result = await _httpClient.GetStringAsync(url);
  34.                 _sessionKey = JsonConvert.DeserializeObject<Sessionkey>(result);
  35.             }
  36.             return _sessionKey.Session_id;
  37.         }
  38.  
  39.         public static async Task<Player> GetPlayer(string player)
  40.         {
  41.             _timeStamp = GetTimeStamp();
  42.             var signature = createSignature("getplayer");
  43.             var session = await getSessionKey();
  44.             string url = $"/smiteapi.svc/getplayerJson/{_devId}/{signature}/{session}/{_timeStamp}/{player}";
  45.             var result = await _httpClient.GetStringAsync(url);
  46.             var p = JsonConvert.DeserializeObject<List<Player>>(result).Single();
  47.             //var friends = await GetFriends(player);
  48.            // p.Friends = friends;
  49.             p.Masteries = await GetMasteries(player);
  50.             p.MatchHistory = await GetMatchHistory(player);
  51.             //p.QueuStats = await GetQueueStats("426",player);
  52.             return p;
  53.  
  54.         }
  55.  
  56.         public static async Task<List<MatchHistory>> GetMatchHistory(string player)
  57.         {
  58.             _timeStamp = GetTimeStamp();
  59.             var signature = createSignature("getmatchhistory");
  60.             var session = await getSessionKey();
  61.            
  62.             string url = $"/smiteapi.svc/getmatchhistoryJson/{_devId}/{signature}/{session}/{_timeStamp}/{player}";
  63.             var result = await _httpClient.GetStringAsync(url);
  64.             return JsonConvert.DeserializeObject<List<MatchHistory>>(result);
  65.         }
  66.  
  67.         public static async Task<List<Mastery>> GetMasteries(string player)
  68.         {
  69.             _timeStamp = GetTimeStamp();
  70.             var signature = createSignature("getgodranks");
  71.             var session = _sessionKey.Session_id;
  72.  
  73.             string url = $"/smiteapi.svc/getgodranksJson/{_devId}/{signature}/{session}/{_timeStamp}/{player}";
  74.             var result = await _httpClient.GetStringAsync(url);
  75.             return JsonConvert.DeserializeObject<List<Mastery>>(result);
  76.         }
  77.  
  78.         public static async Task<List<Friend>> GetFriends(string player)
  79.         {
  80.             _timeStamp = GetTimeStamp();
  81.             var signature = createSignature("getfriends");
  82.             var session = await getSessionKey();
  83.  
  84.             string url = $"/smiteapi.svc/getfriendsJson/{_devId}/{signature}/{session}/{_timeStamp}/{player}";
  85.             var result = await _httpClient.GetStringAsync(url);
  86.             var friends = JsonConvert.DeserializeObject<List<Friend>>(result);
  87.             foreach(Friend f in friends)
  88.             {
  89.                f.QueuStats = await GetQueueStats("426",f.Name);
  90.             }
  91.             return friends;
  92.         }
  93.  
  94.         public static async Task<List<Item>> GetItems()
  95.         {
  96.             _timeStamp = GetTimeStamp();
  97.             var signature = createSignature("getitems");
  98.             var session = await getSessionKey();
  99.             var languagecode = 1;
  100.             string url = $"/smiteapi.svc/getitemsJson/{_devId}/{signature}/{session}/{_timeStamp}/{languagecode}";
  101.             var result = await _httpClient.GetStringAsync(url);
  102.             return JsonConvert.DeserializeObject<List<Item>>(result);
  103.  
  104.         }
  105.  
  106.         public static async Task<List<God>> GetGods()
  107.         {
  108.             _timeStamp = GetTimeStamp();
  109.             var signature = createSignature("getgods");
  110.             var session = await getSessionKey();
  111.             var languagecode = 1;
  112.             string url = $"/smiteapi.svc/getgodsJson/{_devId}/{signature}/{session}/{_timeStamp}/{languagecode}";
  113.             var result = await _httpClient.GetStringAsync(url);
  114.             return JsonConvert.DeserializeObject<List<God>>(result);
  115.  
  116.         }
  117.  
  118.         public static async Task<List<QueueStats>> GetQueueStats(string gamemode,string player)
  119.         {
  120.             _timeStamp = GetTimeStamp();
  121.             var signature = createSignature("getqueuestats");
  122.             var session = await getSessionKey();
  123.  
  124.             string url = $"/smiteapi.svc/getqueuestatsJson/{_devId}/{signature}/{session}/{_timeStamp}/{player}/{gamemode}";
  125.             var result = await _httpClient.GetStringAsync(url);
  126.             return JsonConvert.DeserializeObject<List<QueueStats>>(result);
  127.         }
  128.  
  129.         private static string createSignature(String method) => GetMD5Hash(_devId + method + _authKey + _timeStamp);
  130.  
  131.         private static string GetTimeStamp() =>  DateTime.UtcNow.ToString("yyyyMMddHHmmss");
  132.  
  133.         private static string GetMD5Hash(string input)
  134.         {
  135.             var md5 = new MD5CryptoServiceProvider();
  136.             var bytes = Encoding.UTF8.GetBytes(input);
  137.             bytes = md5.ComputeHash(bytes);
  138.             var sb = new StringBuilder();
  139.             foreach (byte b in bytes)
  140.             {
  141.                 sb.Append(b.ToString("x2").ToLower());
  142.             }
  143.             return sb.ToString();
  144.         }
  145.  
  146.     }
  147.  
  148.     class Sessionkey{
  149.         public string Ret_msg { get; set; }
  150.         public string Session_id { get; set; }
  151.         public DateTime TimeStamp { get; set; }
  152.     }
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement