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 }); }
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); }
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)"); } }
protected virtual void OnFoundMovies(MoviesResultset R) { ProcessDelegate(FoundMovies, new object[] { R }); }