Example #1
0
        /// <summary>
        /// Get the Freedb sites
        /// </summary>
        /// <param name="protocol"></param>
        /// <param name="sites">SiteCollection that is populated with the site information</param>
        /// <returns>Response Code</returns>
        /// 
        public string GetSites(string protocol, out SiteCollection sites)
        {
            if (protocol != Site.PROTOCOLS.CDDBP  && protocol != Site.PROTOCOLS.HTTP)
                protocol = Site.PROTOCOLS.ALL;

            StringCollection coll;

            try
            {
                coll= Call(Commands.CMD_SITES,m_mainSite.GetUrl());
            }

            catch (Exception ex)
            {
                Debug.WriteLine("Error retrieving Sites." + ex.Message);
                Exception newEx = new Exception("FreedbHelper.GetSites: Error retrieving Sites.",ex);
                throw newEx;
            }

            sites = null;

            // check if results came back
            if (coll.Count < 0)
            {
                string msg = "No results returned from sites request.";
                Exception ex = new Exception(msg,null);
                throw ex;
            }

            string code = GetCode(coll[0]);
            if (code == ResponseCodes.CODE_INVALID)
            {
                string msg = "Unable to process results Sites Request. Returned Data: " + coll[0];
                Exception ex = new Exception(msg,null);
                throw ex;
            }

            switch (code)
            {
                case ResponseCodes.CODE_500:
                    return ResponseCodes.CODE_500;

                case ResponseCodes.CODE_401:
                    return ResponseCodes.CODE_401;

                case ResponseCodes.CODE_210:
                {
                    coll.RemoveAt(0);
                    sites = new SiteCollection();
                    foreach (String line in coll)
                    {
                        Debug.WriteLine("line: " + line);
                        Site site = new Site(line);
                        if (protocol == Site.PROTOCOLS.ALL)
                            sites.Add(new Site(line));
                        else if (site.Protocol == protocol)
                            sites.Add(new Site(line));
                    }

                    return ResponseCodes.CODE_210;
                }

                default:
                    return ResponseCodes.CODE_500;
            }
        }