protected DownloadSettings GetDownloadSettings()
        {
            DownloadSettings settings = new DownloadSettings();
            settings.ExtraHeaders["x-amx-apiusername"] = ApiUsername;
            if (!(string.IsNullOrEmpty(Token)))
                settings.ExtraHeaders["x-amx-token"] = Token;

            // return...
            return settings;
        }
        public static void Download(string url, DownloadSettings settings, Action<string> success, Failed failure)
        {
            // create the request stub...
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7";

            // add...
            if (settings != null)
            {
                foreach (string name in settings.ExtraHeaders.Keys)
                    request.Headers[name] = settings.ExtraHeaders[name];
            }

            // call the server... we'll get notified at some point...
            request.BeginGetResponse(new AsyncCallback(HandleDownloadResult), new object[] { request, success, failure });
        }
        internal static void DownloadXml(string url, DownloadSettings settings, Action<XDocument> callback, Failed failed)
        {
            // state...
            DownloadXmlState state = new DownloadXmlState();
            state.Callback = callback;
            state.Failed = failed;

            // call...
            Download(url, settings, new Action<string>(state.ReceiveHtml), failed);
        }