예제 #1
0
        public async Task TestTwitterStorage()
        {
            IDataParser Parser = DataParserFactory.CreateParser("Twitter", "#freebandnames");

            Assert.IsNotNull(Parser);

            Assert.IsInstanceOfType(Parser, typeof(IDataParser), $"{nameof(Parser)} must inherit {nameof(IDataParser)}");
            Assert.IsInstanceOfType(Parser, typeof(DataParserBase), $"{nameof(Parser)} must inherit {nameof(DataParserBase)}");
            Assert.IsInstanceOfType(Parser, typeof(TwitterParser), $"{nameof(Parser)} must be a {nameof(DataParser.DataParsers.TwitterParser)}");

            Assert.IsNotNull(Parser.ProviderName, $"{nameof(Parser.ProviderName)} must have a value assigned (\"Twitter\").");
            Assert.AreEqual(Parser.ProviderName, "Twitter", $"{nameof(Parser.ProviderName)} must have a value (\"Twitter\").");

            Assert.IsNotNull(Parser.SearchTerm, $"{nameof(Parser.SearchTerm)} must have a value assigned (\"#freebandnames\").");
            Assert.AreEqual("#freebandnames", Parser.SearchTerm, $"{Parser.SearchTerm} must have a value (\"#freebandnames\").");

            TwitterParser TwitterParser = (TwitterParser)Parser;

            DataModel Model = TwitterParser.ParseResult(Resources.SampleTwitterJson);

            Assert.IsNotNull(Model, $"{nameof(Model)} must not be null. This indicates that {nameof(TwitterParser.ParseResult)} failed.");

            using (HttpClient Client = new HttpClient())
            {
                string JsonModel = new JavaScriptSerializer().Serialize(Model);
                Assert.IsNotNull(JsonModel, $"{JsonModel} must be a valid JSON string.");

                StringContent       Content         = new StringContent(JsonModel, Encoding.UTF8, "application/json");
                HttpResponseMessage ResponseMessage = await Client.PostAsync("http://localhost:46778/News", Content);

                Assert.IsTrue(ResponseMessage.IsSuccessStatusCode, $"{ResponseMessage.IsSuccessStatusCode} must be true. Otherwise it indicates a failed REST POST request.");
            }
        }
예제 #2
0
 public IEnumerable <ReferencePage <TPageModel> > GetPagesIn <TPageModel>(string uri) where TPageModel : IPageModel
 {
     foreach (var fileUri in directorySearcher.GetFiles(uri))
     {
         var data   = FileReader.Read(directorySearcher.GetFile(fileUri));
         var parser = parserFactory.CreateParser(data);
         var model  = parser.Parse <TPageModel>();
         yield return(new ReferencePage <TPageModel>(model, fileUri));
     }
 }
예제 #3
0
        public Maybe <IPageModel> GetModel(string uri)
        {
            IPageModel model = null;

            dataFileFetcher.Find(uri).Apply(page =>
            {
                var parser    = parserFactory.CreateParser(page);
                var baseModel = parser.Parse <PageModel>();
                var modelType = typeFetcher.GetModelType(baseModel.View);
                model         = parser.Parse(modelType);
            });

            return(model == null ? new Maybe <IPageModel>() : new Maybe <IPageModel>(model));
        }
        public async Task <IHttpActionResult> Post([FromUri] string provider, [FromUri] string searchTerm, HttpRequestMessage json)
        {
            if (string.IsNullOrEmpty(provider))
            {
                return(BadRequest("Provider must be set."));
            }

            if (string.IsNullOrEmpty(searchTerm))
            {
                return(BadRequest("Search term must be set."));
            }

            string JSON = await json.Content.ReadAsStringAsync();

            if (string.IsNullOrEmpty(JSON))
            {
                return(BadRequest("JSON data must be set."));
            }

            try
            {
                JsonSchema Schema     = JsonSchema.Parse(JSON);
                JObject    JsonObject = JObject.Parse(JSON);

                if (!JsonObject.IsValid(Schema))
                {
                    return(BadRequest("JSON provided is invalid."));
                }
            }
            catch (JsonReaderException)
            {
                return(BadRequest("JSON provided is invalid."));
            }

            IDataParser Parser = DataParserFactory.CreateParser(provider, searchTerm);
            DataModel   Model  = Parser.ParseResult(JSON);

            if (Model != null)
            {
                if (await Parser.StoreData(Model))
                {
                    return(Ok("Data sent to storage successfully."));
                }
            }


            return(BadRequest("Data has not been stored."));
        }
예제 #5
0
        public void TestTwitterParser()
        {
            IDataParser Parser = DataParserFactory.CreateParser("Twitter", "#freebandnames");

            Assert.IsNotNull(Parser);

            Assert.IsInstanceOfType(Parser, typeof(IDataParser), $"{nameof(Parser)} must inherit {nameof(IDataParser)}");
            Assert.IsInstanceOfType(Parser, typeof(DataParserBase), $"{nameof(Parser)} must inherit {nameof(DataParserBase)}");
            Assert.IsInstanceOfType(Parser, typeof(TwitterParser), $"{nameof(Parser)} must be a {nameof(DataParsers.TwitterParser)}");

            Assert.IsNotNull(Parser.ProviderName, $"{nameof(Parser.ProviderName)} must have a value assigned (\"Twitter\").");
            Assert.AreEqual(Parser.ProviderName, "Twitter", $"{nameof(Parser.ProviderName)} must have a value (\"Twitter\").");

            Assert.IsNotNull(Parser.SearchTerm, $"{nameof(Parser.SearchTerm)} must have a value assigned (\"#freebandnames\").");
            Assert.AreEqual("#freebandnames", Parser.SearchTerm, $"{Parser.SearchTerm} must have a value (\"#freebandnames\").");

            TwitterParser TwitterParser = (TwitterParser)Parser;

            DataModel Model = TwitterParser.ParseResult(Resources.SampleTwitterJson);

            Assert.IsNotNull(Model, $"{nameof(Model)} must not be null. This indicates that {nameof(TwitterParser.ParseResult)} failed.");

            Assert.IsNotNull(Model.SearchTerm, $"{nameof(Model.SearchTerm)} must have a value assigned (\"#freebandnames\").");
            Assert.AreEqual(Model.SearchTerm, TwitterParser.SearchTerm, $"{nameof(Model.SearchTerm)} and {nameof(TwitterParser.SearchTerm)} must have equal values.");

            Assert.IsNotNull(Model.Message, $"{nameof(Model.Message)} must have a value (\"Aggressive Ponytail #freebandnames\").");
            Assert.AreEqual(Model.Message, "Aggressive Ponytail #freebandnames");

            Assert.IsNotNull(Model.Date, $"{nameof(Model.Date)} must have a value (Mon Sep 24 03:35:21 +0000 2012).");
            Assert.AreEqual(Model.Date,
                            DateTime.ParseExact("Mon Sep 24 03:35:21 +0000 2012", "ddd MMM dd HH:mm:ss +ffff yyyy",
                                                new CultureInfo("en-US")), $"{nameof(Model.Date)} must match the value (Mon Sep 24 03:35:21 +0000 2012).");

            Assert.AreEqual(Model.Provider, TwitterParser.ProviderName, $"{nameof(Model.Provider)} and {nameof(TwitterParser.ProviderName)} must have equal values.");

            Assert.IsNotNull(Model.Poster, $"{nameof(Model.Poster)} must have a value assigned (\"@sean_cummings\")");
            Assert.AreEqual("@sean_cummings", Model.Poster, $"{nameof(Model.Poster)} must have (\"@sean_cummings\") as its value.");
        }