示例#1
0
        public void SetResponse(SerializableWebResponse response)
        {
            Regex           rx;
            MatchCollection matches;
            string          captureString;

            rx      = new Regex(REGEX_DIGGS);
            matches = rx.Matches(response.Content);
            if (matches.Count == 0)
            {
                _errorState = true;
                return;
            }
            captureString = matches[0].Groups[1].Value;
            _diggCount    = int.Parse(captureString);

            rx      = new Regex(REGEX_COMMENT_COUNT);
            matches = rx.Matches(response.Content);
            if (matches.Count == 0)
            {
                _errorState = true;
                return;
            }
            _commentCount = int.Parse(matches[0].Groups[1].Value);

            _finished = true;
        }
示例#2
0
        public void SetResponse(SerializableWebResponse response)
        {
            _log.DebugFormat("Parsing PageRank response: '{0}'", response.ToString());
            _pageRank = _gpr.ParseRankFromResult(response.Content);

            _log.DebugFormat("PageRank parsed as {0}", _pageRank);
        }
示例#3
0
        public void SetResponse(SerializableWebResponse response)
        {
            switch (_currentStage)
            {
            case stage.GetHiddenFields:
                //Advance to the next stage
                _currentStage = stage.Authenticate;
                processLoginFormHiddenFields(response);
                break;

            case stage.Authenticate:
                //Advance to the next stage
                _currentStage = stage.PostAuthenticateRedirect;
                processSendCredentialsResponse(response);
                break;

            case stage.PostAuthenticateRedirect:
                //Advance to the next stage
                _currentStage = stage.RunReports;
                processPostAuthenticateResponse(response);
                break;

            case stage.RunReports:
                processReportResponse(response);
                break;
            }
        }
示例#4
0
        /// <summary>
        ///		Parses the response and stores the results in the database.
        /// </summary>
        /// <remarks>
        ///		This should be called once the request has been made.
        /// </remarks>
        /// <param name="response">
        ///		The response that was recieved as a result of making the
        ///		request from <see cref="SerializableWebRequest"/>.
        ///	</param>
        public void SetResponse(SerializableWebResponse response)
        {
            XmlSerializer serializer;
            StringReader  sr;

            YTech.General.Web.Seo.RankChecking.Yahoo.ResultSet rs;

            using (sr = new StringReader(response.Content))
            {
                serializer = new XmlSerializer(typeof(ResultSet));
                rs         = (ResultSet)serializer.Deserialize(sr);
            }

            for (int i = 0; i < rs.Result.Length; i++)
            {
                if (rs.Result[i].Url.StartsWith(Url, true, CultureInfo.InvariantCulture))
                {
                    //We found a match!

                    //Remember, item 0 in the array is search result #1
                    _searchPosition = i + 1;
                    break;
                }
            }
        }
示例#5
0
        public void SetResponse()
        {
            SerializableWebResponse resp;

            resp         = new SerializableWebResponse();
            resp.Content = readEmbeddedText("Delicious_Sample1.txt");

            d.SetResponse(resp);
        }
示例#6
0
    public bool ReprocessItem(int queueId)
    {
        DatasourceManager       datasourceManager;
        DatasourceDataQueueItem queueItem;
        RawDataValue            rawData;
        ConfiguredDatasource    cds;
        IDataSource             currentDatasource;

        DatasourceParameterType[] parameterTypes;

        queueItem = _db.ORManager.Get <DatasourceDataQueueItem>(queueId);
        rawData   = _db.ORManager.Get <RawDataValue>(queueItem.RawDataId);
        cds       = _db.ORManager.Get <ConfiguredDatasource>(rawData.ConfiguredDatasourceId);

        datasourceManager = new DatasourceManager();

        currentDatasource = datasourceManager.GetDatasource(cds.DatasourceType.Id);

        //Load the parameter types
        parameterTypes = _db.GetParameterTypesForDatasource(cds.DatasourceType.Id);

        //Set up the datasource
        cds.InitializeDatasource(currentDatasource, parameterTypes);

        //Fake the web response
        SerializableWebResponse resp;

        resp         = new SerializableWebResponse();
        resp.Content = queueItem.Data;
        currentDatasource.SetResponse(resp);

        RawDataValue[] values;
        values = currentDatasource.Values;

        foreach (RawDataValue currValue in values)
        {
            if (!currValue.Success || currValue.Fuzzy)
            {
                return(false);
            }
        }

        //Save the new values
        foreach (RawDataValue currValue in values)
        {
            currValue.ConfiguredDatasourceId = cds.Id.Value;
            _db.BulkInsertRawData(values);
        }

        //Delete the extra state data
        _db.ORManager.Delete(queueItem);

        //If we get here, it must have worked!
        return(true);
    }
示例#7
0
        private void processLoginFormHiddenFields(SerializableWebResponse resp)
        {
            MatchCollection matches;

            matches = Regex.Matches(resp.Content, "<input type=\"hidden\" name=\"(.*?)\" value=\"(.*?)\">");

            _loginFormHiddenFields = new string[matches.Count][];
            for (int i = 0; i < matches.Count; i++)
            {
                _loginFormHiddenFields[i]    = new string[2];
                _loginFormHiddenFields[i][0] = matches[i].Groups[1].Value;
                _loginFormHiddenFields[i][1] = matches[i].Groups[2].Value;
            }
        }
示例#8
0
        public void SetResponse_Fuzzy()
        {
            SerializableWebResponse sr;

            sr         = new SerializableWebResponse();
            sr.Content = readEmbeddedText("GoogleRankResults_Fuzzy.txt");

            gr.Url = "blah";
            gr.SetResponse(sr);

            values = gr.Values;

            Assert.AreEqual(true, values[0].Success);
            Assert.AreEqual(true, values[0].Fuzzy);
        }
示例#9
0
        public void SetResponse(SerializableWebResponse response)
        {
            Regex           re;
            MatchCollection matches;
            int             resultCount;

            re      = new Regex(SEARCH_RESULT_REGEX);
            matches = re.Matches(response.Content);

            //Check if the page has no results
            if (response.Content.Contains("did not match any documents"))
            {
                _searchPosition = null;
                return;
            }

            //Check the number of results to make sure our regex isn't broken
            resultCount = getSearchResultCount(response.Content);

            if (matches.Count != resultCount)
            {
                _log.WarnFormat("There were {0} matches, but the page says there should be {1} results", matches.Count, resultCount);
                _log.DebugFormat("Dumping response for analysis: {0}", response.Content);

                if (matches.Count >= resultCount - 3 && matches.Count <= resultCount + 3)
                {
                    _fuzzy = true;
                }
                else
                {
                    _log.Debug("The result is too far off to be considered fuzzy");
                    _errorState = true;
                    return;
                }
            }

            for (int i = 0; i < matches.Count; i++)
            {
                if (matches[i].Groups[1].Value.StartsWith(Url, true, CultureInfo.InvariantCulture))
                {
                    //we found a match

                    //Remember, item 0 in the array is search result #1
                    _searchPosition = i + 1;
                    break;
                }
            }
        }
示例#10
0
        public void ErrorHandling()
        {
            RawDataValue[] values;

            d.Parameters.Add(1, "http://www.digg.com/asdfasdf");
            req          = d.GetNextRequest();
            resp         = new SerializableWebResponse();
            resp.Content = "asdfasdf";
            d.SetResponse(resp);

            values = d.Values;

            Assert.AreEqual(2, values.Length);
            Assert.AreEqual(false, values[0].Success);
            Assert.AreEqual(false, values[1].Success);
        }
示例#11
0
        public void SetResponse3()
        {
            SerializableWebResponse sr;

            sr         = new SerializableWebResponse();
            sr.Content = readEmbeddedText("GoogleRankResults3.txt");

            gr.Url = "http://www.kbalertz.com/kb_933568.aspx";
            gr.SetResponse(sr);

            values = gr.Values;

            Assert.AreEqual(2, values[0].FloatValue);
            Assert.AreEqual(true, values[0].Success);
            Assert.AreEqual(false, values[0].Fuzzy);
        }
示例#12
0
        public void SetResponse7()
        {
            SerializableWebResponse sr;

            sr         = new SerializableWebResponse();
            sr.Content = readEmbeddedText("GoogleRankResults7.txt");

            gr.Url = "http://find.yuku.com/find/communities?q=survivorsucks+teens";
            gr.SetResponse(sr);

            values = gr.Values;

            Assert.AreEqual(11, values[0].FloatValue);
            Assert.AreEqual(true, values[0].Success);
            Assert.AreEqual(false, values[0].Fuzzy);
        }
示例#13
0
        public void SetResponse5()
        {
            SerializableWebResponse sr;

            sr         = new SerializableWebResponse();
            sr.Content = readEmbeddedText("GoogleRankResults5.txt");

            gr.Url = "http://en.wikipedia.org/wiki/Scuba_diving";
            gr.SetResponse(sr);

            values = gr.Values;

            Assert.AreEqual(5, values[0].FloatValue);
            Assert.AreEqual(true, values[0].Success);
            Assert.AreEqual(false, values[0].Fuzzy);
        }
示例#14
0
        public void SetResponse6()
        {
            SerializableWebResponse sr;

            sr         = new SerializableWebResponse();
            sr.Content = readEmbeddedText("GoogleRankResults6.txt");

            gr.Url = "maps.caribseek.com/";
            gr.SetResponse(sr);

            values = gr.Values;

            Assert.AreEqual(4, values[0].FloatValue);
            Assert.AreEqual(true, values[0].Success);
            Assert.AreEqual(false, values[0].Fuzzy);
        }
示例#15
0
        public void SetResponse4()
        {
            SerializableWebResponse sr;

            sr         = new SerializableWebResponse();
            sr.Content = readEmbeddedText("GoogleRankResults4.txt");

            gr.Url = "http://www.obishawn.com/archive/2006/02/19/4.aspx";
            gr.SetResponse(sr);

            values = gr.Values;

            Assert.AreEqual(7, values[0].FloatValue);
            Assert.AreEqual(true, values[0].Success);
            Assert.AreEqual(false, values[0].Fuzzy);
        }
示例#16
0
        public void SetResponse2()
        {
            SerializableWebResponse sr;

            sr         = new SerializableWebResponse();
            sr.Content = readEmbeddedText("GoogleRankResults2.txt");

            gr.Url = "http://www.humanmetrics.com/cgi-win/JTypes1.htm";
            gr.SetResponse(sr);

            values = gr.Values;

            Assert.AreEqual(4, values[0].FloatValue);
            Assert.AreEqual(true, values[0].Success);
            Assert.AreEqual(false, values[0].Fuzzy);
        }
示例#17
0
        public void SetResponse_BadResults()
        {
            SerializableWebResponse sr;

            sr         = new SerializableWebResponse();
            sr.Content = readEmbeddedText("GoogleRankResults_Bad.txt");

            gr.Url = "http://www.blackwell-synergy.com";
            gr.SetResponse(sr);

            values = gr.Values;

            Assert.AreEqual(null, values[0].FloatValue);
            Assert.AreEqual(false, values[0].Success);
            Assert.AreEqual(false, values[0].Fuzzy);
        }
示例#18
0
        public void SetResponse_8Results()
        {
            SerializableWebResponse sr;

            sr         = new SerializableWebResponse();
            sr.Content = readEmbeddedText("GoogleRankResults_8Results.txt");

            gr.Url = "http://www.ObiShawn.com";
            gr.SetResponse(sr);

            values = gr.Values;

            Assert.AreEqual(1, values[0].FloatValue);
            Assert.AreEqual(true, values[0].Success);
            Assert.AreEqual(false, values[0].Fuzzy);
        }
示例#19
0
        public void SetResponse()
        {
            SerializableWebResponse resp;

            RawDataValue[] values;

            resp         = new SerializableWebResponse();
            resp.Content = readEmbeddedText("GoogleBacklinks_Sample1.txt");

            gb.SetResponse(resp);
            values = gb.Values;
            Assert.AreEqual(1, values.Length);
            Assert.AreEqual(null, values[0].DatasourceSubTypeId);
            Assert.AreEqual(86, values[0].FloatValue);
            Assert.AreEqual(true, values[0].Success);
            Assert.IsTrue(values[0].Timestamp > DateTime.UtcNow.AddSeconds(-10) && values[0].Timestamp <= DateTime.UtcNow);
        }
示例#20
0
        public void SetResponse2()
        {
            SerializableWebResponse resp;

            RawDataValue[] values;

            resp         = new SerializableWebResponse();
            resp.Content = "asdfasd";

            gb.SetResponse(resp);
            values = gb.Values;
            Assert.AreEqual(1, values.Length);
            Assert.AreEqual(null, values[0].DatasourceSubTypeId);
            Assert.AreEqual(null, values[0].FloatValue);
            Assert.AreEqual(false, values[0].Success);
            Assert.IsTrue(values[0].Timestamp > DateTime.UtcNow.AddSeconds(-10) && values[0].Timestamp <= DateTime.UtcNow);
        }
示例#21
0
        public void Comments()
        {
            RawDataValue[] values;

            d.Parameters.Add(1, "http://www.digg.com/asdfasdf");
            req          = d.GetNextRequest();
            resp         = new SerializableWebResponse();
            resp.Content = readEmbeddedText("Digg_Sample2.txt");
            d.SetResponse(resp);

            values = d.Values;
            Assert.AreEqual(2, values.Length);

            Assert.AreEqual(6, values[1].DatasourceSubTypeId);
            Assert.AreEqual(16, values[1].FloatValue);
            Assert.AreEqual(true, values[1].Success);
            Assert.IsTrue(values[1].Timestamp > DateTime.UtcNow.AddSeconds(-10) && values[1].Timestamp <= DateTime.UtcNow);
        }
示例#22
0
        public SerializableWebResponse WrapHttpResponse(HttpWebResponse httpResponse)
        {
            StreamReader            sr;
            SerializableWebResponse response;

            _log.Debug("Wrapping HttpWebResponse stream into its serializable form");

            using (sr = new StreamReader(httpResponse.GetResponseStream()))
            {
                response         = new SerializableWebResponse();
                response.Content = sr.ReadToEnd();
            }

#if (DEBUG)
            _log.DebugFormat("Response contained {0}", response.Content);
#endif

            return(response);
        }
示例#23
0
        private void processSendCredentialsResponse(SerializableWebResponse resp)
        {
            Regex           reg;
            MatchCollection urlMatches;
            RegexOptions    options;

            options = RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.CultureInvariant;

            reg = new Regex("<a href=\"(https://.*?)\"", options);

            urlMatches = reg.Matches(resp.Content);

            //Check if we found the URL to post to
            if (urlMatches.Count == 0)
            {
                throw new ApplicationException("Unable to find redirect URL in Google Adsense authetication response");
            }

            _authenticateRedirectUrl = urlMatches[0].Groups[1].Value;
        }
示例#24
0
        public void SetResponse()
        {
            SerializableWebResponse resp;

            RawDataValue[] values;

            resp         = new SerializableWebResponse();
            resp.Content = readEmbeddedText("MSLiveSearch_Sample1.txt");

            m.Parameters = new Dictionary <int, object>();
            m.Parameters.Add(1, "test search");
            m.Url = "http://www.speakeasy.net/speedtest/";

            m.GetNextRequest();

            m.SetResponse(resp);

            values = m.Values;
            Assert.AreEqual(1, values.Length);
            Assert.AreEqual(3, values[0].FloatValue);
            Assert.AreEqual(true, values[0].Success);
            Assert.IsTrue(values[0].Timestamp > DateTime.UtcNow.AddSeconds(-10) && values[0].Timestamp <= DateTime.UtcNow);
        }
示例#25
0
 public void SetResponse(SerializableWebResponse response)
 {
     _position = GetSearchPosition(response.Content, _url);
 }
示例#26
0
 private void processReportResponse(SerializableWebResponse response)
 {
     _values = ParseAdsenseCsvReport(response.Content, _channelName);
 }
示例#27
0
 private void processPostAuthenticateResponse(SerializableWebResponse resp)
 {
     //The login process is now complete
 }
示例#28
0
 public void SetResponse(SerializableWebResponse response)
 {
     _linkCount = GetLinkCount(response.Content);
 }
示例#29
0
        public void Sample1()
        {
            GoogleAdsense           ga;
            SerializableWebRequest  req;
            SerializableWebResponse resp;

            ga            = new GoogleAdsense();
            ga.Parameters = new Dictionary <int, object>();
            ga.Parameters.Add(1, "testUser");
            ga.Parameters.Add(2, "testPass");

            //Stage 1
            req = ga.GetNextRequest();
            Assert.AreEqual(null, req.PostData);
            Assert.AreEqual("https://www.google.com/accounts/ServiceLoginAuth?service=adsense&hl=en-US&ltmpl=login&ifr=true&passive=true&rm=hide&nui=3&alwf=true&continue=https%3A%2F%2Fwww.google.com%2Fadsense%2Fgaiaauth&followup=https%3A%2F%2Fwww.google.com%2Fadsense%2Fgaiaauth", req.Url);

            resp         = new SerializableWebResponse();
            resp.Content = readEmbeddedText("GoogleAdsense_Sample1_Stage1.txt");

            ga.SetResponse(resp);


            //Stage 2
            req = ga.GetNextRequest();
            Assert.AreEqual("https://www.google.com/accounts/ServiceLoginAuth", req.Url);
            Assert.AreEqual("ltmpl=login&continue=https%3a%2f%2fwww.google.com%2fadsense%2fgaiaauth&followup=https%3a%2f%2fwww.google.com%2fadsense%2fgaiaauth&service=adsense&nui=3&ifr=true&rm=hide&ltmpl=login&hl=en-US&alwf=true&Email=testUser&Passwd=testPass&null=Sign+in", req.PostData);

            resp         = new SerializableWebResponse();
            resp.Content = readEmbeddedText("GoogleAdsense_Sample1_Stage2.txt");

            ga.SetResponse(resp);

            //Stage 3
            req = ga.GetNextRequest();
            Assert.AreEqual("https://www.google.com/accounts/CheckCookie?continue=https%3A%2F%2Fwww.google.com%2Fadsense%2Fgaiaauth&followup=https%3A%2F%2Fwww.google.com%2Fadsense%2Fgaiaauth&service=adsense&hl=en-US&chtml=LoginDoneHtml", req.Url);
            Assert.AreEqual(null, req.PostData);

            resp         = new SerializableWebResponse();
            resp.Content = readEmbeddedText("GoogleAdsense_Sample1_Stage3.txt");

            ga.SetResponse(resp);

            //Stage 4
            req = ga.GetNextRequest();
            Assert.AreEqual("https://www.google.com/adsense/report/aggregate?dateRange.dateRangeType=custom&dateRange.customDate.start.month=" + DateTime.Now.AddDays(-1).Date.Month + "&dateRange.customDate.start.day=" + DateTime.Now.AddDays(-1).Date.Day + "&dateRange.customDate.start.year=" + DateTime.Now.AddDays(-1).Date.Year + "&dateRange.customDate.end.month=" + DateTime.Now.AddDays(-1).Month + "&dateRange.customDate.end.day=" + DateTime.Now.AddDays(-1).Date.Day + "&dateRange.customDate.end.year=" + DateTime.Now.AddDays(-1).Date.Year + "&outputFormat=TSV_EXCEL", req.Url);
            Assert.AreEqual(null, req.PostData);

            resp         = new SerializableWebResponse();
            resp.Content = readEmbeddedText("GoogleAdsense_Sample1_Stage4.txt");

            ga.SetResponse(resp);

            //Check data
            RawDataValue[] values;
            values = ga.Values;
            Assert.AreEqual(3, values.Length);
            Assert.AreEqual(1, values[0].DatasourceSubTypeId);
            Assert.AreEqual(true, values[0].Success);
            Assert.AreEqual(1.64, values[0].FloatValue);
            Assert.AreEqual(DateTime.Parse("2-22-07"), values[0].Timestamp);

            Assert.AreEqual(2, values[1].DatasourceSubTypeId);
            Assert.AreEqual(true, values[1].Success);
            Assert.AreEqual(616, values[1].FloatValue);
            Assert.AreEqual(DateTime.Parse("2-22-07"), values[1].Timestamp);

            Assert.AreEqual(4, values[2].DatasourceSubTypeId);
            Assert.AreEqual(true, values[2].Success);
            Assert.AreEqual(16, values[2].FloatValue);
            Assert.AreEqual(DateTime.Parse("2-22-07"), values[2].Timestamp);
        }