/GolfSigma.Inventory.Console/Program.cs

http://github.com/golfsigma/inventory-client · C# · 260 lines · 111 code · 26 blank · 123 comment · 5 complexity · c1d4310572706685ff05437f1b54603c MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Security.Cryptography;
  6. using GolfSigma.Inventory;
  7. using GolfSigma.Inventory.Model;
  8. namespace GolfSigma.Inventory.Console
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. // Create a new instance of our client
  15. var client = new InventoryClient(
  16. "32633c3ea2d5450095414169786c308e",
  17. "V7XSVunann6Wa7HAU8IfEKaNGOAE2EcNOV10xaojRfjnAQUUOm4Pdr/RkXvLFu3czslylpEWrjNviD3PasFytg",
  18. new InventoryConfig()
  19. {
  20. MaxErrorRetry = 0,
  21. //ServiceURL = "http://ipv4.fiddler:54657",
  22. ServiceURL = "http://inv.golfsigmaws.com:54657",
  23. ProxyHost = "localhost",
  24. ProxyPort = 8888,
  25. UserAgent = "GolfSigma.Inventory.Console",
  26. SetForwardedFor = false
  27. });
  28. //byte[] secretkey = new Byte[64];
  29. //RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
  30. //rng.GetBytes(secretkey);
  31. //var key = Convert.ToBase64String(secretkey);
  32. // Try and get a teetime
  33. //var result = client.GetTeeTime(
  34. // new GetTeeTimeRequest(
  35. // new Guid("e3c0570fe3304fe29eb94befed8f59d0")
  36. // )
  37. // );
  38. // Try and get a search
  39. //var result = client.GetSearch(
  40. // new GetSearchRequest(
  41. // new Guid("9e5c514a833b45c6ba3689437db32613")
  42. // )
  43. // );
  44. // Try and get inventory by searchId
  45. //var result = client.GetInventory(
  46. // new GetInventoryRequest(
  47. // new Guid("5531441c1dc74511b637b4c510602170")
  48. // )
  49. // );
  50. // Try and get inventory in a single call by creating a search at the same time
  51. //var result = client.GetInventory(
  52. // new PutSearchRequest()
  53. // {
  54. // Search = new Search()
  55. // {
  56. // ExternalId = "invClientLibrary",
  57. // Date = DateTime.Now.AddDays(2).Date,
  58. // MaxDaysOut = 1,
  59. // Players = PlayerEnum.All,
  60. // SearchType = SearchTypeEnum.SingleDay,
  61. // TimeOfDay = new TimeSpan(9, 30, 0),
  62. // Attributes = new List<TeeTimeAttributeEnum>()
  63. // {
  64. // TeeTimeAttributeEnum.Holes18
  65. // },
  66. // CourseIds = new List<Guid>()
  67. // {
  68. // new Guid("765bb849-4766-452a-aa0b-49a933dfb7bb")
  69. // },
  70. // Filters = new List<SearchFilter>()
  71. // {
  72. // new SearchFilter(new Guid("90d280e6-a8e2-428a-992f-cb47b9c799d3"), "Interval", "30")
  73. // }
  74. // }
  75. // }
  76. // );
  77. // Try and get similar tee-times
  78. //var result = client.GetSimilarTeeTimes(
  79. // new GetSimilarTeeTimeRequest(
  80. // new Guid("f9189ef2feaf4a68a2a4fbc7c43fbf84")
  81. // )
  82. // );
  83. // Create a search
  84. //var result = client.PutSearch(
  85. // new PutSearchRequest()
  86. // {
  87. // Search = new Search()
  88. // {
  89. // ExternalId = "invClientLibrary",
  90. // Date = DateTime.Now.AddDays(7),
  91. // MaxDaysOut = 1,
  92. // Players = PlayerEnum.Threesome,
  93. // SearchType = SearchTypeEnum.SingleDay,
  94. // TimeOfDay = new TimeSpan(9, 30, 0),
  95. // Attributes = new List<TeeTimeAttributeEnum>()
  96. // {
  97. // TeeTimeAttributeEnum.Holes18,
  98. // TeeTimeAttributeEnum.MembersOnly
  99. // },
  100. // Filters = new List<SearchFilter>()
  101. // {
  102. // new SearchFilter(new Guid("22816dc4-538e-412e-8594-f46150e6520c"), "MinPrice", "20")
  103. // },
  104. // CourseIds = new List<ulong>()
  105. // {
  106. // 8731
  107. // }
  108. // }
  109. // });
  110. // Batch put multiple tee times
  111. var start = DateTime.Now.Ticks;
  112. var teeTimes = new List<Model.TeeTime>();
  113. var random = new Random();
  114. for (int d = 2; d <= 2; d++)
  115. {
  116. for (int a = 0; a < 15; a++)
  117. {
  118. for (int i = 0; i < 200; i++)
  119. {
  120. teeTimes.Add(
  121. new TeeTime()
  122. {
  123. CourseId = GetRandomCourseId(random),
  124. MiscData = i.ToString(),
  125. Players = GetRandomPlayers(random),
  126. //Players = PlayerEnum.Twosome,
  127. Time = GetRandomDate(random, d),
  128. TotalPricePerPlayer = GetRandomPrice(random),
  129. WebSiteId = GetRandomWebsite(random),
  130. Attributes = new List<TeeTimeAttributeEnum>()
  131. {
  132. TeeTimeAttributeEnum.Holes18
  133. },
  134. Fees = new Dictionary<FeeEnum, float>()
  135. {
  136. { FeeEnum.Green, GetRandomPrice(random) },
  137. { FeeEnum.Cart, GetRandomPrice(random) }
  138. }
  139. });
  140. }
  141. client.BatchPutTeeTimes(
  142. new BatchPutTeeTimesRequest(teeTimes)
  143. );
  144. teeTimes.Clear();
  145. }
  146. }
  147. var end = DateTime.Now.Ticks;
  148. var timespan = new TimeSpan(end - start);
  149. // Put a single tee times
  150. //var random = new Random();
  151. //var result = client.PutTeeTime(
  152. // new PutTeeTimeRequest()
  153. // {
  154. // TeeTime = new TeeTime()
  155. // {
  156. // CourseId = 8731,
  157. // ApplicationData = "feeTest",
  158. // Players = PlayerEnum.All,
  159. // Time = GetRandomDate(random),
  160. // TotalPricePerPlayer = GetRandomPrice(random),
  161. // WebSiteId = 14,
  162. // Fees = new Dictionary<FeeEnum, float>()
  163. // {
  164. // { FeeEnum.Green, 45F },
  165. // { FeeEnum.Cart, 10F }
  166. // }
  167. // }
  168. // });
  169. // Create a reservation
  170. //var result = client.PutReservation(
  171. // new PutReservationRequest()
  172. // {
  173. // Reservation = new Reservation()
  174. // {
  175. // ExternalId = "shaunWasHere",
  176. // SearchId = 2,
  177. // TeeTimeId = 201,
  178. // }
  179. // });
  180. // Get an existing reservation
  181. //var result = client.GetReservation(
  182. // new GetReservationRequest()
  183. // {
  184. // ReservationId = new Guid("66dacf5c2cb04d4683317f3a3aae5fcc")
  185. // });
  186. }
  187. static DateTime GetRandomDate(Random random, int daysOut)
  188. {
  189. var randomSeconds = random.Next(0, 39600);
  190. DateTime minDate = DateTime.Now.AddDays(daysOut).Date.AddHours(6);
  191. var result = minDate.AddSeconds(randomSeconds);
  192. return result.AddSeconds(-result.Second);
  193. }
  194. static float GetRandomPrice(Random random)
  195. {
  196. var rnd = new Random();
  197. var randomAddition = random.Next(0, 10000);
  198. float minPrice = 10;
  199. return minPrice + (randomAddition / 100F);
  200. }
  201. static PlayerEnum GetRandomPlayers(Random random)
  202. {
  203. var rnd = new Random();
  204. var randomAddition = random.Next(1, 4);
  205. switch (randomAddition)
  206. {
  207. case 1: return PlayerEnum.Single;
  208. case 2: return PlayerEnum.Twosome | PlayerEnum.Single;
  209. case 3: return PlayerEnum.Threesome | PlayerEnum.Twosome;
  210. case 4:
  211. default: return PlayerEnum.All;
  212. }
  213. }
  214. static UInt64 GetRandomCourseId(Random random)
  215. {
  216. var stringCourseIds = "427,443,474,484,491,515,516,530,554,558,562,566,8731,8732,581,619,631,654,684,698,714,8733,8734,8735,436,9748,9749,444,446,450,10148,456,9744,9745,9723,9724,466,470,477,478,496,502,504,505,514,533,537,538,548,551,556,559,560,563,564,569,570,572,587,591,594,595,600,601,633,634,642,644,649,665,670,672,676,677,679,683,10383,10384,689,700,702,708,10238,10239,9746,9747,713,9721,9722,722,724,728,729,733,9725,9726,9727,9728,9750,9751,9753,9754,9755,10240,10386";
  217. var courseIds = new List<UInt64>();
  218. foreach (var item in stringCourseIds.Split(new char[] { ',' }))
  219. {
  220. UInt64 courseId;
  221. if (UInt64.TryParse(item, out courseId))
  222. courseIds.Add(courseId);
  223. }
  224. var randomCourseIndex = random.Next(0, courseIds.Count - 1);
  225. return courseIds[randomCourseIndex];
  226. }
  227. static UInt32 GetRandomWebsite(Random random)
  228. {
  229. var webSiteIds = new UInt32[] { 9, 14, 11 };
  230. var randomAddition = random.Next(0, webSiteIds.Length - 1);
  231. return webSiteIds[randomAddition];
  232. }
  233. }
  234. }