Esempio n. 1
0
        public static bool ReissueAuthToken()
        {
            Dictionary <string, string> packet = SessionItemContainer.Retrieve(SessionItemContainerKey.AuthPacket) as Dictionary <string, string>;

            if (packet != null)
            {
                string apiurl = packet["__apiurl"];
                string apikey = packet["__apikey"];
                Dictionary <string, string> parameters = packet.Where(p => !p.Key.StartsWith("__")).ToDictionary(p => p.Key, p => p.Value);

                XmlNode xToken = LegionService.GetReply(apiurl, apikey, ReplyFormat.XML.ToString(), "__system", "CreateAuthToken", parameters).ToXml().SelectSingleNode("//token");
                if (xToken != null)
                {
                    string token = xToken.InnerText;
                    SessionItemContainer.Store(SessionItemContainerKey.AuthPacket, packet);
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="apikey"></param>
        /// <param name="apiurl"></param>
        /// <param name="type"></param>
        /// <param name="identifier"></param>
        /// <param name="email"></param>
        /// <param name="givenname"></param>
        /// <param name="surname"></param>
        /// <returns></returns>
        public static string CreateAuthToken(string apikey, string apiurl, LegionAccountType type, string identifier)
        {
            Dictionary <string, string> packet = new Dictionary <string, string>()
            {
                { "AccountType", type.ToString() },
                { "AccountId", identifier },
                { "__apikey", apikey },
                { "__apiurl", apiurl }
            };

            Dictionary <string, string> parameters = packet.Where(p => !p.Key.StartsWith("__")).ToDictionary(p => p.Key, p => p.Value);

            XmlDocument xReply = LegionService.GetReply(apiurl, apikey, ReplyFormat.XML.ToString(), "__system", "CreateAuthToken", parameters).ToXml();

            XmlNode xToken = xReply.SelectSingleNode("//token");

            if (xToken != null)
            {
                string token = xToken.InnerText;
                SessionItemContainer.Store(SessionItemContainerKey.AuthPacket, packet);
                return(token);
            }
            else
            {
                XmlNode xFriendly = xReply.SelectSingleNode("//error/description[@type='friendly']");
                if (xFriendly != null)
                {
                    throw new LegionServiceException(string.Format("{0} ({1}:{2})", xFriendly.InnerText, type, identifier));
                }
                else
                {
                    XmlNode xError = xReply.SelectSingleNode("//error");
                    if (xError != null)
                    {
                        throw new LegionServiceException(string.Format("{0} ({1}:{2})", xFriendly.InnerText, type, identifier));
                    }
                    else
                    {
                        XmlNode xFault = xReply.SelectSingleNode("//fault");
                        if (xFault != null)
                        {
                            throw new LegionServiceException(string.Format("{0} ({1})", xFault.InnerText, xFault.Attributes["type"].Value));
                        }
                        else
                        {
                            throw new LegionServiceException("Unknown error. Unable to parse CreateAuthToken() response.");
                        }
                    }
                }
            }
        }
Esempio n. 3
0
        private static string GetReply(string apiurl, string apikey, string replyformat, string service, string method, Dictionary <string, string> p)
        {
            if (apiurl == null)
            {
                apiurl = LEGION_URL;
            }

            Dictionary <string, string> pToPass;

            if (p == null)
            {
                pToPass = new Dictionary <string, string>();
            }
            else if (p.ContainsKey(USER_IP_KEY))
            {
                throw new Exception(string.Format("Reserved parameter '{0}' found in parameter set", USER_IP_KEY));
            }
            else
            {
                pToPass = p.Clone();
            }

            string authtoken = SessionItemContainer.Retrieve(SessionItemContainerKey.AuthToken) as string;

            if (authtoken != null)
            {
                pToPass.Add(AUTH_TOKEN_KEY, authtoken);
            }

            pToPass.Add(USER_IP_KEY, HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);

            Uri uri = new Uri(string.Format("{0}/{1}/{2}/{3}/?k={4}", apiurl, service, method, replyformat, apikey));

            WebClient client = new WebClient();

            client.Headers["Content-type"] = "application/x-www-form-urlencoded";
            string reply = client.UploadString(uri, pToPass.Flatten());

            return(reply);
        }