Exemplo n.º 1
0
        /// <summary>
        ///  WebClient Logic - Communicates to and from Trakt
        /// </summary>
        /// <param name="address">The URI to use</param>
        /// <param name="data">The Data to Send</param>
        /// <returns>The response from Trakt</returns>
        private static string Transmit(string address, string data)
        {
            // address.Replace("  ", "");
            if (OnDataSend != null)
            {
                OnDataSend(address, data);
            }

            try
            {
                ServicePointManager.Expect100Continue = false;
                WebClient client = new WebClient();
                client.Encoding = Encoding.UTF8;
                client.Headers.Add("user-agent", TrakttvAPI.UserAgent);

                // wait for a response from the server
                string response = client.UploadString(address, data);

                // received data, pass it back
                if (OnDataReceived != null)
                {
                    OnDataReceived(response);
                }
                return(response);
            }
            catch (WebException e)
            {
                if (OnDataError != null)
                {
                    OnDataError(e.Message);
                }

                if (e.Status == WebExceptionStatus.ProtocolError)
                {
                    var response = ((HttpWebResponse)e.Response);
                    try
                    {
                        using (var stream = response.GetResponseStream())
                        {
                            using (var reader = new StreamReader(stream))
                            {
                                return(reader.ReadToEnd());
                            }
                        }
                    }
                    catch { }
                }

                // create a proper response object
                TraktResponse error = new TraktResponse
                {
                    Status = "failure",
                    Error  = e.Message
                };
                // not using at moment
                //  throw new TraktException(error.Message);
                return(error.ToJSON());
            }
        }