示例#1
0
        private StringBuilder GetGreenTubeGameInfo(ceCasinoGameBaseEx game, string lang)
        {
            if (string.IsNullOrWhiteSpace(lang))
            {
                lang = "EN";
            }

            string cacheKey = string.Format("XmlFeedsController.GetGreenTubeGameInfo.{0}.{1}"
                                            , DomainManager.CurrentDomainID
                                            , lang
                                            );

            Dictionary <string, List <Topic> > dic = HttpRuntime.Cache[cacheKey] as Dictionary <string, List <Topic> >;

            if (dic == null)
            {
                using (GamMatrixClient client = new GamMatrixClient())
                {
                    GreenTubeAPIRequest request = new GreenTubeAPIRequest()
                    {
                        ArticlesGetRequest = new GreentubeArticlesGetRequest()
                        {
                            LanguageCode = lang.ToUpperInvariant()
                        }
                    };
                    request = client.SingleRequest <GreenTubeAPIRequest>(DomainManager.CurrentDomainID, request);
                    if (request.ArticlesGetResponse.ErrorCode < 0)
                    {
                        throw new Exception(request.ArticlesGetResponse.Message.Description);
                    }

                    if (request.ArticlesGetResponse.Topic != null &&
                        request.ArticlesGetResponse.Topic.Count > 0)
                    {
                        dic = new Dictionary <string, List <Topic> >(StringComparer.InvariantCultureIgnoreCase);
                        foreach (Topic topic in request.ArticlesGetResponse.Topic)
                        {
                            List <Topic> topics = null;
                            if (!dic.TryGetValue(topic.GameId.ToString(), out topics))
                            {
                                topics = new List <Topic>();
                                dic[topic.GameId.ToString()] = topics;
                            }

                            topics.Add(topic);
                        }
                        HttpRuntime.Cache.Insert(cacheKey, dic, null, DateTime.Now.AddMinutes(20), Cache.NoSlidingExpiration);
                    }
                }
            }

            List <Topic> found = null;

            if (dic != null &&
                dic.TryGetValue(game.GameID, out found))
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("<topics>");

                foreach (Topic t in found)
                {
                    sb.Append("<topic>");

                    sb.AppendFormat(CultureInfo.InvariantCulture, "<id>{0}</id>", t.Id);
                    sb.AppendFormat(CultureInfo.InvariantCulture, "<description>{0}</description>", t.Description.SafeHtmlEncode());

                    {
                        sb.Append("<articles>");
                        foreach (Article article in t.ArticleList)
                        {
                            sb.AppendFormat(CultureInfo.InvariantCulture, "<id>{0}</id>", article.Id);
                            sb.AppendFormat(CultureInfo.InvariantCulture, "<title>{0}</title>", article.Title.SafeHtmlEncode());
                            sb.AppendFormat(CultureInfo.InvariantCulture, "<content>{0}</content>", article.Content.SafeHtmlEncode());
                        }
                        sb.Append("</articles>");
                    }

                    sb.Append("</topic>");
                }

                sb.Append("</topics>");
                return(sb);
            }

            // if the translation is not found, try to search in English
            if (!string.Equals(lang, "en", StringComparison.InvariantCultureIgnoreCase))
            {
                return(GetGreenTubeGameInfo(game, "en"));
            }

            return(null);
        }
        public ContentResult RawXml(string apiUsername, string vendor, string username)
        {
            if (string.IsNullOrWhiteSpace(apiUsername))
            {
                return(WrapResponse(ResultCode.Error_InvalidParameter, "Operator is NULL!"));
            }

            var domains = DomainManager.GetApiUsername_DomainDictionary();
            ceDomainConfigEx domain;

            if (!domains.TryGetValue(apiUsername.Trim(), out domain))
            {
                return(WrapResponse(ResultCode.Error_InvalidParameter, "Operator is invalid!"));
            }

            if (!IsWhitelistedIPAddress(domain, Request.GetRealUserAddress()))
            {
                return(WrapResponse(ResultCode.Error_BlockedIPAddress, string.Format("IP Address [{0}] is denied!", Request.GetRealUserAddress())));
            }

            try
            {
                if (string.Equals(vendor, "IGT", StringComparison.InvariantCultureIgnoreCase))
                {
                    using (GamMatrixClient client = new GamMatrixClient())
                    {
                        IGTAPIRequest request = new IGTAPIRequest()
                        {
                            GameListV2 = true,
                        };
                        request = client.SingleRequest <IGTAPIRequest>(domain.DomainID, request);

                        return(this.Content(request.GameListV2Response, "text/xml"));
                    }
                }
                else if (string.Equals(vendor, "IGTgames", StringComparison.InvariantCultureIgnoreCase))
                {
                    Dictionary <string, IGTIntegration.Game> games = GamMatrixClient.GetIGTGames(domain.DomainID);

                    StringBuilder output = new StringBuilder();
                    foreach (var game in games)
                    {
                        output.AppendFormat("{0} {1}\n", game.Key, game.Value.Title);
                    }
                    return(this.Content(output.ToString(), "text/plain"));
                }
                else if (string.Equals(vendor, "GTgameInfo", StringComparison.InvariantCultureIgnoreCase))
                {
                    GreenTubeAPIRequest request = new GreenTubeAPIRequest()
                    {
                        ArticlesGetRequest = new GreentubeArticlesGetRequest()
                        {
                            LanguageCode = "EN"
                        }
                    };
                    using (GamMatrixClient client = new GamMatrixClient())
                    {
                        request = client.SingleRequest <GreenTubeAPIRequest>(domain.DomainID, request);
                        DataContractSerializer dcs = new DataContractSerializer(request.ArticlesGetResponse.GetType());

                        using (MemoryStream ms = new MemoryStream())
                        {
                            dcs.WriteObject(ms, request.ArticlesGetResponse);
                            byte[] buffer = ms.ToArray();
                            return(this.Content(Encoding.UTF8.GetString(buffer, 0, buffer.Length)
                                                , "text/xml"
                                                ));
                        }
                    }
                }
                else if (string.Equals(vendor, "XPRO", StringComparison.InvariantCultureIgnoreCase))
                {
                    XProGamingAPIRequest request = new XProGamingAPIRequest()
                    {
                        GetGamesListWithLimits           = true,
                        GetGamesListWithLimitsGameType   = (int)XProGaming.GameType.AllGames,
                        GetGamesListWithLimitsOnlineOnly = 0,
                        GetGamesListWithLimitsUserName   = username,
                        GetUserCurrency         = true,
                        GetUserCurrencyUserName = username,
                    };
                    using (GamMatrixClient client = new GamMatrixClient())
                    {
                        request = client.SingleRequest <XProGamingAPIRequest>(domain.DomainID, request);

                        StringBuilder output = new StringBuilder();
                        output.AppendFormat("XProGamingAPIRequest.GetUserCurrencyResponse = [{0}]"
                                            , request.GetUserCurrencyResponse
                                            );
                        output.AppendLine();
                        output.AppendLine();
                        output.Append("XProGamingAPIRequest.GetGamesListWithLimitsResponse = \n");


                        using (StringWriter sw = new StringWriter())
                        {
                            System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                            doc.LoadXml(request.GetGamesListWithLimitsResponse);
                            doc.Save(sw);
                            output.Append(sw.ToString());
                        }

                        return(this.Content(output.ToString(), "text/plain"));
                    }
                }
                //else if (string.Equals(vendor, "BALLY", StringComparison.InvariantCultureIgnoreCase))
                //{
                //    BallyGetGamesListRequest request = new BallyGetGamesListRequest();
                //    using (GamMatrixClient client = new GamMatrixClient())
                //    {
                //        request = client.SingleRequest<BallyGetGamesListRequest>(domain.DomainID, request);

                //        DataContractSerializer formatter = new DataContractSerializer(request.Games.GetType());
                //        using (MemoryStream ms = new MemoryStream())
                //        {
                //            formatter.WriteObject(ms, request.Games);
                //            string xml = Encoding.UTF8.GetString(ms.ToArray());
                //            return this.Content(xml, "text/plain");
                //        }
                //    }
                //}
                //else if (string.Equals(vendor, "ISoftBet", StringComparison.InvariantCultureIgnoreCase))
                //{
                //    List<ISoftBetIntegration.Game> list = ISoftBetIntegration.GameMgt.LoadRawGameFeedsForSpecialLanguage(domain,"en").Values.ToList();
                //    DataContractSerializer formatter = new DataContractSerializer(typeof(List<ISoftBetIntegration.Game>));
                //    using (MemoryStream ms = new MemoryStream())
                //    {
                //        formatter.WriteObject(ms, list);
                //        string xml = Encoding.UTF8.GetString(ms.ToArray());
                //        return this.Content(xml, "text/xml");
                //    }
                //}
                else if (string.Equals(vendor, "Vivo", StringComparison.InvariantCultureIgnoreCase))
                {
                    Dictionary <string, string> dicGameName = new Dictionary <string, string>();
                    dicGameName.Add("Baccarat", "Baccarat");
                    dicGameName.Add("Roulette", "Roulette");
                    dicGameName.Add("Blackjack", "Blackjack");


                    long operatorID = 0;
                    long.TryParse(domain.GetCfg(CE.DomainConfig.Vivo.OperatorID), out operatorID);
                    string vivoWebServiceUrl = domain.GetCfg(CE.DomainConfig.Vivo.VivoWebServiceUrl);
                    List <VivoActiveTable> vivoTables;
                    Type           t          = typeof(VivoActiveTable);
                    PropertyInfo[] properties = t.GetProperties();

                    StringBuilder xml = new StringBuilder();
                    xml.AppendLine(@"<?xml version=""1.0"" encoding=""ISO-8859-1""?>");
                    xml.AppendLine(@"<root>");
                    foreach (string key in dicGameName.Keys)
                    {
                        vivoTables = VivoAPI.LiveCasinoTable.GetActiveTables(vivoWebServiceUrl, domain.DomainID, operatorID, dicGameName[key], "EUR");
                        if (vivoTables != null)
                        {
                            xml.AppendLine(string.Format("<{0}>", key));
                            foreach (VivoActiveTable table in vivoTables)
                            {
                                xml.AppendLine(string.Format("<table-{0}>", table.TableID));
                                foreach (PropertyInfo p in properties)
                                {
                                    xml.AppendLine(string.Format("<{0}>{1}</{0}>", p.Name, p.GetValue(table).ToString()));
                                }
                                xml.AppendLine(string.Format("</table-{0}>", table.TableID));
                            }
                            xml.AppendLine(string.Format("</{0}>", key));
                        }
                    }
                    xml.AppendLine(@"</root>");
                    return(this.Content(xml.ToString(), "text/xml"));
                }
                else if (string.Equals(vendor, "RecentWinners", StringComparison.InvariantCultureIgnoreCase))
                {
                    string sql = DwAccessor.GetCasinoGameRecentWinnersInternalSql(domain, false);
                    return(this.Content(sql, "text/plain"));
                }
                else if (string.Equals(vendor, "GreenTube", StringComparison.InvariantCultureIgnoreCase))
                {
                    using (GamMatrixClient client = new GamMatrixClient())
                    {
                        GreenTubeAPIRequest request = new GreenTubeAPIRequest()
                        {
                            ArticlesGetRequest = new GreentubeArticlesGetRequest()
                            {
                                LanguageCode = "EN"
                            }
                        };
                        request = client.SingleRequest <GreenTubeAPIRequest>(domain.DomainID, request);

                        DataContractSerializer formatter = new DataContractSerializer(request.ArticlesGetResponse.GetType());
                        using (MemoryStream ms = new MemoryStream())
                        {
                            formatter.WriteObject(ms, request.ArticlesGetResponse);
                            string xml = Encoding.UTF8.GetString(ms.ToArray());
                            return(this.Content(xml, "text/xml"));
                        }
                    }
                }
                else
                {
                    throw new NotSupportedException();
                }
            }
            catch (Exception ex)
            {
                return(this.Content(ex.Message));
            }
        }