CubeIsland.LyricsReloaded.LyricsReloaded.getDefaultUserAgent C# (CSharp) Method

getDefaultUserAgent() public method

public getDefaultUserAgent ( ) : string
return string
        public string getDefaultUserAgent()
        {
            return defaultUserAgent;
        }

Usage Example

Example #1
0
        protected WebResponse executeRequest(HttpWebRequest request)
        {
            // request configration
            string[] acceptEncodingValues = request.Headers.GetValues("Accept-Encoding");
            if (acceptEncodingValues == null || acceptEncodingValues.Length == 0)
            {
                // we support gzip if nothing else was specified.
                request.Headers.Add("Accept-Encoding", "gzip");
            }
            if (request.UserAgent == null)
            {
                request.UserAgent = lyricsReloaded.getDefaultUserAgent();
            }

            request.Accept = "*/*";
            request.Headers.Add("Accept-Encoding", "gzip");

            // load the response
            WebResponse     webResponse;
            String          contentString = null;
            Encoding        encoding      = Encoding.ASCII; // default encoding as the last fallback
            HttpWebResponse response;

            try
            {
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException e)
            {
                if (e.Status == WebExceptionStatus.Timeout)
                {
                    throw new WebException("The operation has timed out.", e);
                }
                else if (e.Status == WebExceptionStatus.ProtocolError || e.Status == WebExceptionStatus.UnknownError)
                {
                    throw new WebException("Ops, something went wrong. (Report this please)", e);
                }
                throw;
            }
            using (response)
            {
                if (response.CharacterSet != null)
                {
                    encoding = Encoding.GetEncoding(response.CharacterSet); // the response encoding specified by the server. this should be enough
                }

                Stream responsesStream = response.GetResponseStream();
                if (responsesStream != null)
                {
                    responsesStream.ReadTimeout = timeout;
                    if (String.Compare(response.ContentEncoding, "gzip", StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        // gzip compression detected, wrap the stream with a decompressing gzip stream
                        lyricsReloaded.getLogger().debug("gzip compression detected");
                        responsesStream = new GZipStream(responsesStream, CompressionMode.Decompress);
                    }
                    MemoryStream content    = new MemoryStream();
                    const int    bufferSize = 4096;
                    byte[]       buffer     = new byte[bufferSize];
                    int          bytesRead;

                    do
                    {
                        bytesRead = responsesStream.Read(buffer, 0, bufferSize);
                        if (bytesRead <= 0)
                        {
                            break;
                        }
                        content.Write(buffer, 0, bytesRead);
                    }while (bytesRead > 0);
                    responsesStream.Close();

                    contentString = encoding.GetString(content.GetBuffer()); // decode the data with the currently known encoding
                    Match match = ENCODING_REGEX.Match(contentString);       // search for a encoding specified in the content
                    if (match.Success)
                    {
                        try
                        {
                            Encoding tmp = Encoding.GetEncoding(match.Groups[1].ToString()); // try to get a encoding from the name
                            if (!encoding.Equals(tmp))
                            {
                                encoding      = tmp;
                                contentString = encoding.GetString(content.GetBuffer()); // decode again with the newly found encoding
                            }
                        }
                        catch (ArgumentException)
                        {}
                    }
                    content.Close();
                }
                webResponse = new WebResponse(contentString, encoding, response.Headers);
            }

            return(webResponse);
        }