DriverService.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. namespace FormulaOneApp.ErgastAPI.Services.Driver
  2. {
  3. using System;
  4. using System.Threading.Tasks;
  5. using System.Net;
  6. using Model.Driver;
  7. using Model.Race;
  8. using Newtonsoft.Json;
  9. using Base;
  10. public class DriverService : HttpWebBase, IDriverService
  11. {
  12. /// <summary>
  13. ///
  14. /// </summary>
  15. /// <param name="season"></param>
  16. /// <returns></returns>
  17. public async Task<DriverTable> GetDriverCollectionAsync(string season = "current")
  18. {
  19. RaceRootObject data = null;
  20. var url = string.Format("http://ergast.com/api/f1/{0}/drivers.json", season);
  21. HttpWebRequest request = WebRequest.CreateHttp(new Uri(url));
  22. var response = await HttpRequest(request);
  23. if (response != null)
  24. data = JsonConvert.DeserializeObject<RaceRootObject>(response);
  25. return data != null ? data.MRData.DriverTable : null;
  26. }
  27. /// <summary>
  28. ///
  29. /// </summary>
  30. /// <param name="driver"></param>
  31. /// <returns></returns>
  32. public async Task<DriverTable> GetDriverInformationAsync(string driver = "")
  33. {
  34. RaceRootObject data = null;
  35. var url = string.Format("http://ergast.com/api/f1/drivers/{0}.json", driver);
  36. HttpWebRequest request = WebRequest.CreateHttp(new Uri(url));
  37. var response = await HttpRequest(request);
  38. if (response != null)
  39. data = JsonConvert.DeserializeObject<RaceRootObject>(response);
  40. return data != null ? data.MRData.DriverTable : null;
  41. }
  42. /// <summary>
  43. ///
  44. /// </summary>
  45. /// <returns></returns>
  46. public async Task<DriverTable> GetChampionCollectionAsync()
  47. {
  48. RaceRootObject data = null;
  49. const string url = "http://ergast.com/api/f1/driverStandings/1/drivers.json";
  50. HttpWebRequest request = WebRequest.CreateHttp(new Uri(url));
  51. var response = await HttpRequest(request);
  52. if (response != null)
  53. data = JsonConvert.DeserializeObject<RaceRootObject>(response);
  54. return data != null ? data.MRData.DriverTable : null;
  55. }
  56. /// <summary>
  57. ///
  58. /// </summary>
  59. /// <param name="driver"></param>
  60. /// <param name="season"></param>
  61. /// <returns></returns>
  62. public async Task<RaceTable> GetDriverResultsAsync(string driver = "", string season = "current")
  63. {
  64. RaceRootObject data = null;
  65. string url = string.Format("http://ergast.com/api/f1/{0}/drivers/{1}/results.json", season, driver);
  66. HttpWebRequest request = WebRequest.CreateHttp(new Uri(url));
  67. var response = await HttpRequest(request);
  68. if (response != null)
  69. data = JsonConvert.DeserializeObject<RaceRootObject>(response);
  70. return data != null ? data.MRData.RaceTable : null;
  71. }
  72. }
  73. }