Пример #1
0
        public MoviesResultset FindMovie(string movieTitle)
        {
            string Url = BaseUrl + "find?s=all&q=" + movieTitle.UrlEncode();

            var Wr = WebRequest.Create(Url);

            Wr.Timeout = 15000;//30 secs
            Wr.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
            //Wr.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 3.5;)");
            //Wr.Proxy = Proxy;

            MoviesResultset R = new MoviesResultset();

            try
            {
                WebResponse Response = Wr.GetResponse();
                HandleResponse(R, movieTitle, Response);
            }
            catch (Exception ex)
            {
                R.Error        = true;
                R.ErrorMessage = ex.Message;
            }
            return(R);

            //Wr.BeginGetResponse(new AsyncCallback(ResponseCallback), new RequestState() { Request = Wr, MovieTitle = movieTitle });
        }
Пример #2
0
        void ResponseCallback(IAsyncResult result)
        {
            MoviesResultset R = new MoviesResultset();

            try
            {
                RequestState state   = (RequestState)result.AsyncState;
                WebRequest   request = (WebRequest)state.Request;
                // get the Response
                HttpWebResponse Response = (HttpWebResponse)request.EndGetResponse(result);
                // process the response...
                HandleResponse(R, state.MovieTitle, (WebResponse)Response);
            }
            catch (Exception ex)
            {
                R.Error        = true;
                R.ErrorMessage = ex.Message;
            }

            OnFoundMovies(R);
        }
Пример #3
0
        private void HandleResponse(MoviesResultset R, string movieTitle, WebResponse Response)
        {
            string Html = "";
            var    haveBeenRedirected = Match(Response.ResponseUri.ToString(), IMDB_ID_REGEX);

            if (haveBeenRedirected.Success)
            {
                R.ExactMatches = new List <Movie>();
                R.ExactMatches.Add(new Movie()
                {
                    Id = haveBeenRedirected.ToString(), Title = movieTitle.CapitalizeAll()
                });
                OnFoundMovies(R);
            }
            else
            {
                switch (Response.Headers[HttpResponseHeader.ContentEncoding])
                {
                case "gzip":
                    Html = new StreamReader(new GZipStream(Response.GetResponseStream(), CompressionMode.Decompress)).ReadToEnd();
                    break;

                case "deflate":
                    Html = new StreamReader(new DeflateStream(Response.GetResponseStream(), CompressionMode.Decompress)).ReadToEnd();
                    break;

                default:
                    Html = new StreamReader(Response.GetResponseStream()).ReadToEnd();
                    break;
                }

                var H = new HtmlDocument();
                H.LoadHtml(Html);

                //Popular titles
                R.PopularTitles  = GetTitles(H, "Popular Titles");
                R.ExactMatches   = GetTitles(H, "Titles (Exact Matches)");
                R.PartialMatches = GetTitles(H, "Titles (Partial Matches)");
            }
        }
Пример #4
0
 protected virtual void OnFoundMovies(MoviesResultset R)
 {
     ProcessDelegate(FoundMovies, new object[] { R });
 }