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."); } }
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)); } }
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.")); }
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."); }