public void When()
        {
            using (var session = OpenSession())
            {
                DateTimeProvider.Now = () => new DateTime(2012, 10, 11);

                var query = new TweedehandsQuery(Guid.NewGuid(), "Carzzz", "Category", "*****@*****.**");
                query.ChangeStatus(Status.Confirmed);

                session.Store(query);

                _querId = query.Id;

                var queryCollection1 = new QueryResultCollection(query.Id, new List<QueryResult>()
                {
                    new QueryResult(new DateTime(2010, 10, 10), "Test 1", "http://www.test.be/1"),
                    new QueryResult(new DateTime(2010, 10, 11), "Test 2", "http://www.test.be/2"),
                });
                var queryCollection2 = new QueryResultCollection(query.Id, new List<QueryResult>()
                {
                    new QueryResult(new DateTime(2010, 10, 12), "Test 3", "http://www.test.be/3"),
                    new QueryResult(new DateTime(2010, 10, 13), "Test 4", "http://www.test.be/4"),
                });

                session.Store(queryCollection1);
                session.Store(queryCollection2);

                _collectionId1 = queryCollection1.Id;
                _collectionId2 = queryCollection2.Id;

                session.SaveChanges();
            }

            DateTimeProvider.Now = () => new DateTime(2012, 10, 12);

            _mailGun = new Mock<IMailGun>();
            var mailJob = new AlertJob(_mailGun.Object);
            mailJob.Execute(new Mock<IJobExecutionContext>().Object);
        }
Example #2
0
        /// <summary>
        /// Query the freedb server to see if there is information on this cd
        /// </summary>
        /// <param name="querystring"></param>
        /// <param name="queryResult"></param>
        /// <param name="queryResultsColl"></param>
        /// <returns></returns>
        public string Query(string querystring, out QueryResult queryResult, out QueryResultCollection queryResultsColl)
        {
            queryResult      = null;
            queryResultsColl = null;
            StringCollection coll = null;

            StringBuilder builder = new StringBuilder(FreedbHelper.Commands.CMD_QUERY);

            builder.Append("+");
            builder.Append(querystring);

            //make call
            try
            {
                coll = Call(builder.ToString());
            }

            catch (Exception ex)
            {
                string    msg   = "Unable to perform cddb query.";
                Exception newex = new Exception(msg, ex);
                throw newex;
            }

            // check if results came back
            if (coll.Count < 0)
            {
                string    msg = "No results returned from cddb query.";
                Exception ex  = new Exception(msg, null);
                throw ex;
            }

            string code = GetCode(coll[0]);

            if (code == ResponseCodes.CODE_INVALID)
            {
                string    msg = "Unable to process results returned for query: Data returned: " + coll[0];
                Exception ex  = new Exception(msg, null);
                throw ex;
            }


            switch (code)
            {
            case ResponseCodes.CODE_500:
                return(ResponseCodes.CODE_500);

            // Multiple results were returned
            // Put them into a queryResultCollection object
            case ResponseCodes.CODE_211:
            case ResponseCodes.CODE_210:
            {
                queryResultsColl = new QueryResultCollection();
                //remove the 210 or 211
                coll.RemoveAt(0);
                foreach (string line in coll)
                {
                    QueryResult result = new QueryResult(line, true);
                    queryResultsColl.Add(result);
                }

                return(ResponseCodes.CODE_211);
            }


            // exact match
            case ResponseCodes.CODE_200:
            {
                queryResult = new QueryResult(coll[0]);
                return(ResponseCodes.CODE_200);
            }


            //not found
            case ResponseCodes.CODE_202:
                return(ResponseCodes.CODE_202);

            //Database entry is corrupt
            case ResponseCodes.CODE_403:
                return(ResponseCodes.CODE_403);

            //no handshake
            case ResponseCodes.CODE_409:
                return(ResponseCodes.CODE_409);

            default:
                return(ResponseCodes.CODE_500);
            }             // end of switch
        }
Example #3
0
        private void Query(string queryId)
        {
            try
            {
                using (var session = DocumentStore.OpenSession())
                {
                    var query = session.Load<Documents.TweedehandsQuery>(queryId);

                    //TODO: Change document to have region property
                    var queryResults = _queryService.Query("belgium", query.Category, query.Value);

                    var resultsMinTimestamp = query.LastQueriedOn ?? query.CreatedOn;
                    var newResults = queryResults.Items
                        .Where(x => x.DateTime.Value > resultsMinTimestamp)
                        .Select(x => new Documents.QueryResult(x.DateTime.Value, x.Title.Value, x.Url));

                    if (newResults.Any())
                    {
                        var queryResultCollection = new QueryResultCollection(query.Id, new List<Documents.QueryResult>(newResults));
                        session.Store(queryResultCollection);
                    }

                    query.UpdateLastQueriedOn();

                    session.SaveChanges();
                }

                Logger.Debug("Query", "Query " + queryId);
            }
            catch (Exception ex)
            {
                Logger.Error(GetType().ToString(), string.Format("Something went wrong querying queryId {0}.", queryId), ex);
            }
        }