Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Xml.Serialization;
- namespace SteamAPI
- {
- #region Serializacion data models
- public class achievement
- {
- public string apiname;
- public int achieved;
- }
- public class playerstats
- {
- public string steamID;
- public string gameName;
- public List<achievement> achievements;
- }
- #endregion
- #region events
- public class SteamArgs : EventArgs
- {
- public playerstats value { get; set; }
- }
- #endregion
- public class Steam
- {
- #region fields
- // Url de la api
- private string SteamAPIURL =
- "http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?appid={0}&key={1}&steamid={2}&format=xml";
- // key para usar la api
- private string steam_key = "<pon tu key de la api de Steam aqui>";
- // web client para obtener el XML
- WebClient client = new WebClient();
- // variable pública que contiene toda la información de los logros
- public playerstats SteamPlayerAchievementsStats;
- // Eventos
- public delegate void SteamEventHandler(SteamArgs e);
- public event EventHandler GetStatsCompleted;
- #endregion
- #region ctor
- public Steam()
- {
- this.client.Proxy = null;
- this.client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(client_DownloadDataCompleted);
- }
- #endregion
- #region Descarga (asíncrona) completada
- void client_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
- {
- try
- {
- /* Nota: otra posibilidad en lugar de usar un XmlSerializer sería usar un XDocument de esta forma:
- XDocument xdoc = XDocument.Parse(System.Text.Encoding.UTF8.GetString(e.Result), LoadOptions.None);
- (para usar XDocument hay que importar ---> using System.Xml.Linq;)
- */
- XmlSerializer serializer = new XmlSerializer(typeof(playerstats));
- SteamPlayerAchievementsStats = (playerstats)serializer.Deserialize(new MemoryStream(e.Result));
- if (GetStatsCompleted != null)
- GetStatsCompleted(this, new SteamArgs() { value = SteamPlayerAchievementsStats });
- }
- catch (Exception ex)
- {
- if (GetStatsCompleted != null)
- GetStatsCompleted(this, new SteamArgs() { value = null });
- }
- }
- #endregion
- #region Propiedades públicas para consultar en el evento GetStatsCompleted
- public int? TotalGameAchievements()
- {
- if (SteamPlayerAchievementsStats != null)
- {
- return SteamPlayerAchievementsStats.achievements.Count;
- }
- return null;
- }
- public int? TotalGameAchievementsCompleted()
- {
- if (SteamPlayerAchievementsStats != null)
- {
- return SteamPlayerAchievementsStats.achievements.Count(c => c.achieved == 1);
- }
- return null;
- }
- #endregion
- #region Método público para la obtención de los datos
- /// <summary>
- /// Obtiene los stats de un juego. Descarga la información de forma asíncrona y finalmente se
- /// dispara el evento GetStatsCompleted donde se podrán consultar los resultados
- /// </summary>
- /// <param name="appid">ID del juego de steam<</param>
- /// <param name="steamid">ID del usuario de steam</param>
- public void GetStats(string appid, string steamid)
- {
- client.DownloadDataAsync(new Uri(string.Format(SteamAPIURL, appid, steam_key, steamid)));
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement