コード例 #1
0
        public async Task <IHttpActionResult> RetrieveGifts(int girlId, string occassion)
        {
            try
            {
                // Pull the girl information from the database.
                Girl girl = db.Girls.Find(girlId);
                if (girl is null)
                {
                    return(BadRequest($"A girl with the Id {girlId} does not exist."));
                }

                AmazonConsumer consumer = new AmazonConsumer();

                // Generate the search queries.
                List <string>       queries = girl.GetGiftSearchQueries(occassion);
                List <SearchResult> results = new List <SearchResult>();

                foreach (string query in queries)
                {
                    // No more than 30 results from each query.
                    // Also don't want to add duplicate entries from amazon.
                    List <SearchResult>        queryResults       = consumer.Search(query);
                    IEnumerable <SearchResult> uniqueQueryResults = queryResults.Where(qr => !results.Exists(r => r.AmazonId == qr.AmazonId))
                                                                    .Take(MAX_QUERY_RESULTS);

                    results.AddRange(uniqueQueryResults);
                }

                return(Ok(await GiftComparer.GetHighestRatedGifts(girl.GetRandomImage(), results, NUM_GIFTS)));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
コード例 #2
0
        public async Task <IHttpActionResult> EvaluateGift(int girlId, [FromBody] EvaluateGiftRequest request)
        {
            try
            {
                Girl girl = db.Girls.Find(girlId);
                if (girl is null)
                {
                    return(NotFound());
                }

                return(Ok(await GiftComparer.CompareImages(girl.GetRandomImage(), request.ImageBytes)));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }