private FindCompletedItemsRequest CreateCompletedItemsRequest(Search searchItem, int pageNumber) { // Completed items, new only var request = new FindCompletedItemsRequest(); List<ItemFilter> filters = new List<ItemFilter>(); // Search term foreach (SearchCriteria criteria in searchItem.SearchCriteria) { switch (criteria.Criteria) { case "Title": request.keywords = criteria.Value; break; case "Condition": filters.Add(new ItemFilter() { name = ItemFilterType.Condition, value = new string[] { criteria.Value, "1000" } }); break; case "SoldItemsOnly": filters.Add(new ItemFilter() { name = ItemFilterType.SoldItemsOnly, value = new string[] { criteria.Value } }); break; case "Currency": filters.Add(new ItemFilter() { name = ItemFilterType.Currency, value = new string[] { criteria.Value } }); break; } } // Filters to specify new, sold and GBP // Wire up default values if (String.IsNullOrEmpty(request.keywords)) request.keywords = searchItem.Name; if (filters.Find(f => f.name == ItemFilterType.Currency) == null) filters.Add(new ItemFilter() { name = ItemFilterType.Currency, value = new string[] { "GBP" } }); //if (filters.Find(f => f.name == ItemFilterType.Condition) == null) // filters.Add(new ItemFilter() { name = ItemFilterType.Condition, value = new string[] { "New" , "1000"} }); if (filters.Find(f => f.name == ItemFilterType.SoldItemsOnly) == null) filters.Add(new ItemFilter() { name = ItemFilterType.SoldItemsOnly, value = new string[] { "True" } }); // Have we recently updated ... if so, ask for items since we last updated if (searchItem.LastRun != null) { filters.Add( new ItemFilter() { name = ItemFilterType.EndTimeFrom, value = new string[] { searchItem.LastRun.ToString("s") } } ); } // Add the page number request.paginationInput = new PaginationInput(); request.paginationInput.pageNumber = pageNumber; request.paginationInput.pageNumberSpecified = true; request.itemFilter = filters.ToArray(); request.sortOrder = SortOrderType.EndTimeSoonest; return request; }
/// <summary> /// Actual fetch of seller's completed items /// </summary> /// <param name="service"></param> /// <param name="request"></param> /// <param name="currentPageNumber"></param> /// <returns>FindCompletedItemsResponse</returns> private static FindCompletedItemsResponse GetCompletedItems(CustomFindSold service, FindCompletedItemsRequest request, int currentPageNumber) { request.paginationInput = GetNextPage(currentPageNumber); return(service.findCompletedItems(request)); }
static List<VideoCard> GrabPricesFromEbay(string keyword) { List<VideoCard> foundCards = new List<VideoCard>(); //setup for console logging of api results LoggerService.SetLogger(new ConsoleLogger()); ILogger logger = LoggerService.GetLogger(); try { ClientConfig config = new ClientConfig(); // Initialize service end-point configuration config.EndPointAddress = "http://svcs.sandbox.ebay.com/services/search/FindingService/v1"; // set eBay developer account AppID config.ApplicationId = "JackPetr-b629-4a64-94a2-cb909b9c0c47"; // Create a service client FindingServicePortTypeClient client = FindingServiceClientFactory.getServiceClient(config); // Create request object FindCompletedItemsRequest completedItemsRequest = new FindCompletedItemsRequest(); // Set request parameters keyword = keyword + " -water -block -waterblock -heatsink -heat -sink"; completedItemsRequest.keywords = keyword; DateTime today = DateTime.UtcNow; DateTime month = new DateTime(today.Year, today.Month, 1); DateTime lastMonth = month.AddMonths(-1); ItemFilter if1 = new ItemFilter(); if1.name = ItemFilterType.EndTimeFrom; if1.value = new string[] {lastMonth.ToString("o")}; ItemFilter if2 = new ItemFilter(); if2.name = ItemFilterType.EndTimeTo; if2.value = new string[] { today.ToString("o") }; ItemFilter if3 = new ItemFilter(); if3.name = ItemFilterType.MinPrice; if3.paramName = "Currency"; if3.paramValue = "USD"; if3.value = new string[] {"50"}; ItemFilter if4 = new ItemFilter(); if4.name = ItemFilterType.MaxPrice; if4.paramName = "Currency"; if4.paramValue = "USD"; if4.value = new string[] { "1100" }; ItemFilter if5 = new ItemFilter(); if5.name = ItemFilterType.ExcludeCategory; if5.value = new string[] {"179"}; ItemFilter[] ifa = new ItemFilter[5]; ifa[0] = if1; ifa[1] = if2; ifa[2] = if3; ifa[3] = if4; ifa[4] = if5; completedItemsRequest.itemFilter = ifa; PaginationInput pi = new PaginationInput(); pi.entriesPerPage = 200; pi.entriesPerPageSpecified = true; completedItemsRequest.paginationInput = pi; // Call the service FindCompletedItemsResponse response = client.findCompletedItems(completedItemsRequest); // Show output if (Debug) if (response.ack.ToString().Equals("Failure")) { int tries = 0; while (tries < 3) { if (response.ack.ToString().Equals("Failure")) { //retry tries++; response = client.findCompletedItems(completedItemsRequest); }else { break; } } } logger.Info("Ack = " + response.ack); logger.Info("Find " + response.searchResult.count + " items."); SearchItem[] items = response.searchResult.item; if(Debug){logSearchResultsToFile(items);} foreach (SearchItem item in items) { if (item.sellingStatus.sellingState.Equals("EndedWithSales")) { VideoCard trackCard = new VideoCard(); trackCard.SetCardName(item.title); trackCard.SetPrice(item.sellingStatus.currentPrice.Value); foundCards.Add(trackCard); logger.Info("Item" + item.title + "added!"); logger.Info(item.sellingStatus.currentPrice.Value); } } } catch (Exception ex) { // Handle exception if any logger.Error(ex); } return foundCards; }