private void Select_Click(object sender, EventArgs e) { String selected = events.SelectedItem.ToString(); var marketFilter = new MarketFilter(); var eventTypes = client.listEventTypes(marketFilter); // forming a eventype id set for the eventype id extracted from the result ISet<string> eventypeIds = new HashSet<string>(); foreach (EventTypeResult eventType in eventTypes) { events.Items.Clear(); if (eventType.EventType.Name.Equals(selected)) { eventypeIds.Add(eventType.EventType.Id); } } //ListMarketCatalogue: Get next available horse races, parameters: var time = new TimeRange(); time.From = DateTime.Now; time.To = DateTime.Now.AddDays(1); marketFilter = new MarketFilter(); marketFilter.EventTypeIds = eventypeIds; marketFilter.MarketStartTime = time; marketFilter.MarketCountries = new HashSet<String>() { "GB" }; marketFilter.MarketTypeCodes = new HashSet<String>() { "WIN" }; var marketSort = MarketSort.FIRST_TO_START; var maxResults = "30"; ISet<MarketProjection> marketProjections = null; Console.WriteLine("\nGetting the next available horse racing market"); var marketCatalogues = client.listMarketCatalogue(marketFilter, marketProjections, marketSort, maxResults); //extract the marketId of the next horse race foreach (MarketCatalogue market in marketCatalogues) { events.Items.Add(market); } }
static void Main(string[] args) { //app key and session token are mandatory if (args.Length < 2) { Console.WriteLine("wrong number of arguments"); Environment.Exit(0); } //first argument is the appkey var appkey = args[0]; if (string.IsNullOrEmpty(appkey)) { Console.WriteLine("No App Key"); Environment.Exit(0); } Console.WriteLine("App Key being used: " + appkey); //second argument is the sessionToken var sessionToken = args[1]; if(string.IsNullOrEmpty(sessionToken)) { Console.WriteLine("No Session Token"); Environment.Exit(0); } Console.WriteLine("Session token being used: " + sessionToken); //the third argument is which type of client to use, default is json-rpc IClient client = null; string clientType = null; if (args.Length == 3) clientType = args[2]; // if rescript has been passed as the third argument use it otherwise default to json client if (!string.IsNullOrEmpty(clientType) && clientType.Equals("rescript")) { Console.WriteLine("Using RescriptClient"); client = new RescriptClient(Url, appkey, sessionToken); }else { Console.WriteLine("Using JsonRpcClient"); client = new JsonRpcClient(Url, appkey, sessionToken); } Console.WriteLine("\nBeginning sample run!\n"); try { var marketFilter = new MarketFilter(); var eventTypes = client.listEventTypes(marketFilter); // forming a eventype id set for the eventype id extracted from the result ISet<string> eventypeIds = new HashSet<string>(); foreach (EventTypeResult eventType in eventTypes) { if (eventType.EventType.Name.Equals("Horse Racing")) { Console.WriteLine("\nFound event type for Horse Racing: " + JsonConvert.Serialize<EventTypeResult>(eventType)); //extracting eventype id eventypeIds.Add(eventType.EventType.Id); } } //ListMarketCatalogue: Get next available horse races, parameters: var time = new TimeRange(); time.From = DateTime.Now; time.To = DateTime.Now.AddDays(1); marketFilter = new MarketFilter(); marketFilter.EventTypeIds = eventypeIds; marketFilter.MarketStartTime = time; marketFilter.MarketCountries = new HashSet<string>() { "GB" }; marketFilter.MarketTypeCodes = new HashSet<String>() { "WIN" }; var marketSort = MarketSort.FIRST_TO_START; var maxResults = "1"; ISet<MarketProjection> marketProjections = null; Console.WriteLine("\nGetting the next available horse racing market"); var marketCatalogues = client.listMarketCatalogue(marketFilter, marketProjections, marketSort, maxResults); //extract the marketId of the next horse race String marketId = marketCatalogues[0].MarketId; IList<string> marketIds = new List<string>(); marketIds.Add(marketId); ISet<PriceData> priceData = new HashSet<PriceData>(); //get all prices from the exchange priceData.Add(PriceData.EX_BEST_OFFERS); var priceProjection = new PriceProjection(); priceProjection.PriceData = priceData; Console.WriteLine("\nGetting prices for market: " + marketId); var marketBook = client.listMarketBook(marketIds, priceProjection); if (marketBook.Count != 0) { //get the first runner from the market var runner = marketBook[0].Runners[0]; Console.WriteLine("\nUsing Runner: " + JsonConvert.Serialize<Runner>(runner)); var selectionId = runner.SelectionId; Console.WriteLine("\nPreparing to place bet on runner with Selection Id: " + selectionId + "\nBelonging to marketId: " + marketId + "\nBelow minimum betsize and expecting a INVALID_BET_SIZE response"); IList<PlaceInstruction> placeInstructions = new List<PlaceInstruction>(); var placeInstruction = new PlaceInstruction(); placeInstruction.Handicap = 0; placeInstruction.Side = Side.BACK; placeInstruction.OrderType = OrderType.LIMIT; var limitOrder = new LimitOrder(); limitOrder.PersistenceType = PersistenceType.LAPSE; // place a back bet at rediculous odds so it doesn't get matched limitOrder.Price = 1000; limitOrder.Size = 0.1; // placing a bet below minimum stake, expecting a error in report placeInstruction.LimitOrder = limitOrder; placeInstruction.SelectionId = selectionId; placeInstructions.Add(placeInstruction); var customerRef = "123456"; var placeExecutionReport = client.placeOrders(marketId, customerRef, placeInstructions); ExecutionReportErrorCode executionErrorcode = placeExecutionReport.ErrorCode; InstructionReportErrorCode instructionErroCode = placeExecutionReport.InstructionReports[0].ErrorCode; Console.WriteLine("\nPlaceExecutionReport error code is: " + executionErrorcode + "\nInstructionReport error code is: " + instructionErroCode); if (executionErrorcode != ExecutionReportErrorCode.BET_ACTION_ERROR && instructionErroCode != InstructionReportErrorCode.INVALID_BET_SIZE) Environment.Exit(0); Console.WriteLine("\nDONE!"); } else { Console.Write("\nSorry the market has no runner to place a bet on, try again later"); } } catch (APINGException apiExcepion) { Console.WriteLine("Got an exception from Api-NG: " + apiExcepion.ErrorCode); Environment.Exit(0); } catch (System.Exception e) { Console.WriteLine("Unknown exception from application: " + e.Message); Environment.Exit(0); } }