Exemple #1
0
 public FtpPutter(string url, string user, string password, Plataform plataform)
 {
     _url       = url;
     _user      = user;
     _password  = password;
     _plataform = plataform;
 }
Exemple #2
0
        public SiteDiagnostic GetSiteDiagnostic(Plataform plataform, string apiKey)
        {
            var    plataformPrefix = plataform == Plataform.PS ? "ps." : string.Empty;
            string url             = $"https://{plataformPrefix}wotclans.com.br/api/status";

            return(GetSiteDiagnostic(url, apiKey));
        }
Exemple #3
0
 /// <summary>
 /// Constroi
 /// </summary>
 /// <param name="plataform">Plataforma</param>
 /// <param name="playerId">Id no jogo</param>
 /// <param name="name">Gamer Tag</param>
 public Player(Plataform plataform, long playerId, string name)
 {
     Id        = playerId;
     Name      = name;
     Plataform = plataform;
     Moment    = DateTime.UtcNow;
 }
Exemple #4
0
        private static void DumpMoEFiles(string[] args)
        {
            var connectionString = ConfigurationManager.ConnectionStrings["Main"].ConnectionString;
            var provider         = new DbProvider(connectionString);

            const Plataform plataform = Plataform.XBOX;

            var date    = new DateTime(2017, 03, 10);
            var maxDate = new DateTime(2017, 04, 26);

            while (date <= maxDate)
            {
                var moes     = provider.GetMoe(plataform, date).ToDictionary(t => t.TankId);
                var dateOnDb = moes.First().Value.Date;

                string json = JsonConvert.SerializeObject(moes, Formatting.Indented);

                var baseDir = ConfigurationManager.AppSettings["ResultsFolder"];
                var file    = Path.Combine(baseDir, "MoE", $"{dateOnDb:yyyy-MM-dd}.moe.json");
                File.WriteAllText(file, json, Encoding.UTF8);

                date = date.AddDays(1.0);

                Log.InfoFormat("Escrito {0}", file);
            }
        }
Exemple #5
0
        /// <summary>
        ///     Obtem os tanques de um jogador
        /// </summary>
        public async Task <IEnumerable <TankPlayer> > GetTanksForPlayerAsync(Plataform plataform, long playerId,
                                                                             long?tankId = null)
        {
            Log.DebugFormat("Obtendo tanques do jogador {0}@{1}...", playerId, plataform);

            string server;

            switch (plataform)
            {
            case Plataform.XBOX:
                server = "api-xbox-console.worldoftanks.com";
                break;

            case Plataform.PS:
                server = "api-ps4-console.worldoftanks.com";
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(plataform), plataform, null);
            }

            string requestUrl =
                $"https://{server}/wotx/tanks/stats/?application_id={ApplicationId}&account_id={playerId}";

            if (tankId.HasValue)
            {
                requestUrl += $"&tank_id={tankId.Value}";
            }

            var content =
                await
                GetContent($"TanksStats.{plataform}.{playerId}.json", requestUrl, WebCacheAge, false,
                           Encoding.UTF8);

            var json     = content.Content;
            var response = JsonConvert.DeserializeObject <TanksStatsResponse>(json);

            if (response.IsError)
            {
                Log.Error(response.Error);
                return(Enumerable.Empty <TankPlayer>());
            }

            var list = new List <TankPlayer>();

            foreach (var tankPlayers in response.Tanks.Values)
            {
                if (tankPlayers != null)
                {
                    foreach (var tankPlayer in tankPlayers)
                    {
                        tankPlayer.Plataform = plataform;
                        list.Add(tankPlayer);
                    }
                }
            }

            return(list);
        }
Exemple #6
0
        public void DisableClan(Plataform plataform, long clanId, DisabledReason disabledReason)
        {
            Log.DebugFormat("Desabilitando clã {0}.{1} no BD por motivo {2}...", clanId, plataform, disabledReason);
            var sw = Stopwatch.StartNew();

            Execute(t => EnableDisableClan(plataform, clanId, false, disabledReason, t));
            Log.DebugFormat("Desabilitado clã {0}.{1} no BD em {2}.", clanId, plataform, sw.Elapsed);
        }
Exemple #7
0
        public void EnableClan(Plataform plataform, long clanId)
        {
            Log.DebugFormat("Habilitando clã {0}.{1} no BD...", clanId, plataform);
            var sw = Stopwatch.StartNew();

            Execute(t => EnableDisableClan(plataform, clanId, true, DisabledReason.NotDisabled, t));
            Log.DebugFormat("Habilitado clã {0}.{1} no BD em {2}.", clanId, plataform, sw.Elapsed);
        }
 public ClanNotFoundException(Plataform plataform, long clanId, string clanTag, string url, WebException innerException) :
     base($"{clanId}.{clanTag}@{plataform} não achado (404) em '{url}'", innerException)
 {
     Plataform = plataform;
     ClanTag   = clanTag;
     Url       = url;
     ClanId    = clanId;
 }
Exemple #9
0
    void OnCollisionEnter2D(Collision2D collision)
    {
        Vector2        vNormal           = collision.contacts[0].normal;
        Plataform      plataform         = collision.transform.GetComponent <Plataform>();
        GenaratorEdges genaratorEdges    = collision.transform.GetComponent <GenaratorEdges>();
        bool           bCollisionInvalid = false;
        Vector2        normal            = Vector2.zero;

        foreach (ContactPoint2D c in collision.contacts)
        {
            normal += c.normal;
        }
        normal /= collision.contacts.Length;
        normal.Normalize();

        if (plataform != null)
        {
            if (vNormal != Vector2.up)
            {
                bCollisionInvalid = true;
            }
            else
            {
                //ManagerGame.iPonts++;
                psSheets.Play();
            }
        }
        else if (genaratorEdges != null)
        {
            if (vNormal == Vector2.up)
            {
                bCollisionInvalid = true;
            }
        }
        else
        {
            bCollisionInvalid = false;

            Bounds  bordasColisor   = collision.transform.GetComponent <SpriteRenderer>().bounds;
            Vector3 positionCreator = new Vector3(collision.transform.position.x + bordasColisor.extents.x, collision.transform.position.y - bordasColisor.extents.y, collision.transform.position.z);

            GameObject     particles          = (GameObject)Instantiate(goParticleBlock, positionCreator, Quaternion.identity);
            ParticleSystem componentParticles = particles.GetComponent <ParticleSystem>();
            Destroy(particles, componentParticles.duration + componentParticles.startLifetime);
            Destroy(collision.gameObject);
            ManagerGame.iNumberBlocksDestroyed++;
        }

        if (!bCollisionInvalid)
        {
            vDirection = Vector2.Reflect(vDirection, vNormal);
            vDirection.Normalize();
        }
        else
        {
            ManagerGame.managerGame.GameOver(goPanelGameOver);
        }
    }
Exemple #10
0
    void randomizePlataformPlace()
    {
        float      plataformWidth = PlataformPrefab.GetComponent <RectTransform>().rect.width;
        Vector3    spawnPos       = transform.TransformPoint(Random.Range(Camera.main.transform.position.x - 12, Camera.main.transform.position.x + 12), Camera.main.rect.height + 10, 0);
        GameObject newPlataformGO = Instantiate(PlataformPrefab, spawnPos, PlataformPrefab.transform.rotation);

        Plataform newPlataform = new Plataform(newPlataformGO, Random.Range(MinVelocity, MaxVelocity));

        _presentPlataforms.Add(newPlataform);
    }
Exemple #11
0
 public static string TagName(this Plataform plataform)
 {
     if (plataform == Plataform.PS)
     {
         return("PSN Name");
     }
     else
     {
         return("Gamer Tag");
     }
 }
Exemple #12
0
 /// <summary>
 /// The site for the platafor, like https://wotclans.com.br or https://ps.wotclans.com.br
 /// </summary>
 /// <param name="plataform"></param>
 /// <returns></returns>
 public static string SiteUrl(this Plataform plataform)
 {
     if (plataform == Plataform.PS)
     {
         return("https://ps.wotclans.com.br");
     }
     else
     {
         return("https://wotclans.com.br");
     }
 }
 private static async Task ValidateDataFields(Sale sale)
 {
     try
     {
         //Status.Valdiate(sale.Status);
         Inventory.Validate(sale.Inventory);
         Plataform.Validate(sale.Plataform);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Exemple #14
0
    private void CheckMovement(Plataform currentPlataform)
    {
        switch (currentPlataform)
        {
        case Plataform.UNITY:
            CheckUnityMovement();
            break;

        case Plataform.ANDROID:
            CheckAndroidMovement();
            break;
        }
    }
Exemple #15
0
        private IEnumerable <Tank> GetTanks(Plataform plataform, long?tankId)
        {
            Log.DebugFormat("Procurando dados de tanques para {0}...", plataform);
            string server;

            switch (plataform)
            {
            case Plataform.XBOX:
                server = "api-xbox-console.worldoftanks.com";
                break;

            case Plataform.PS:
                server = "api-ps4-console.worldoftanks.com";
                break;

            case Plataform.PC:
                return(GetPcTanks(tankId));

            default:
                throw new ArgumentOutOfRangeException(nameof(plataform), plataform, null);
            }

            string requestUrl =
                $"https://{server}/wotx/encyclopedia/vehicles/?application_id={ApplicationId}&fields=tank_id%2Cname%2Cshort_name%2Cis_premium%2Ctier%2Ctag%2Ctype%2Cimages%2Cnation";

            if (tankId != null)
            {
                requestUrl += $"&tank_id={tankId.Value}";
            }

            var json =
                GetContentSync($"Vehicles.{plataform}.{DateTime.UtcNow:yyyyMMddHH}.json", requestUrl, WebCacheAge,
                               false,
                               Encoding.UTF8).Content;

            var response = JsonConvert.DeserializeObject <VehiclesResponse>(json);

            if (response.IsError)
            {
                Log.Error(response.Error);
                return(Enumerable.Empty <Tank>());
            }

            foreach (var tank in response.Data.Values)
            {
                tank.Plataform = plataform;
            }

            return(response.Data.Values);
        }
Exemple #16
0
    void Start()
    {
#if UNITY_EDITOR
        {
            Debug.Log("Estoy en el editor");
            currentPlataform = Plataform.UNITY;
        }
#elif UNITY_ANDROID
        {
            //Debugg en adroid
            currentPlataform = Plataform.ANDROID;
        }
#endif
        rb = GetComponent <Rigidbody2D>();
    }
Exemple #17
0
        /// <summary>
        ///     Devolve a GT a partir do ID
        /// </summary>
        public string GetPlayerNameById(Plataform plataform, long id)
        {
            Log.DebugFormat("Procurando GT de {1} na plataforma {0}...", plataform, id);
            string server;

            switch (plataform)
            {
            case Plataform.XBOX:
                server = "api-xbox-console.worldoftanks.com";
                break;

            case Plataform.PS:
                server = "api-ps4-console.worldoftanks.com";
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(plataform), plataform, null);
            }

            string url =
                $"https://{server}/wotx/account/info/?application_id={ApplicationId}&account_id={id}&fields=nickname";
            var json = GetContentSync($"GamerTagById.{plataform}.{id}.json", url, WebCacheAge, false, Encoding.UTF8)
                       .Content;

            var result = JObject.Parse(json);

            if ((string)result["status"] != "ok")
            {
                var    error = result["error"];
                int    code  = (int)error["code"];
                string msg   = (string)error["message"];
                Log.ErrorFormat("Erro de API {0}, '{1}' chamando {2}", code, msg, url);
                return(null);
            }

            var count = (int)result["meta"]["count"];

            if (count < 1)
            {
                Log.WarnFormat("Não achado ninguém com id '{0}'.", id);
                return(null);
            }

            var name = (string)result["data"][$"{id}"]["nickname"];

            Log.DebugFormat("...achado '{0}'.", name);
            return(name);
        }
Exemple #18
0
    public void InstantiatePlataforms()
    {
        plataform = plataforms[plataformIndex];
        Debug.Log(plataformIndex.ToString());
        if (instantiateTime == 0)
        {
            Plataform firstPlataform  = Instantiate(plataforms[instantiateTime], new Vector3(0f, 0f, 0f), Quaternion.identity);
            Plataform secondPlataform = Instantiate(plataforms[instantiateTime], new Vector3(0f, 0f, firstPlataform.transform.localScale.z), Quaternion.identity);
            instantiateTime = 1;
        }
        else
        {
            Plataform newPlataform = Instantiate(plataform, plataform.initialPosition + new Vector3(0f, 0f, instantiateTime * plataform.transform.localScale.z), Quaternion.identity);
        }

        instantiateTime++;
    }
Exemple #19
0
        private static void GetAllTanks(Plataform plataform)
        {
            var cacheDirectory = ConfigurationManager.AppSettings["CacheDirectory"];
            var fetcher        = new Fetcher(cacheDirectory)
            {
                WebCacheAge      = TimeSpan.FromMinutes(15),
                WebFetchInterval = TimeSpan.FromSeconds(1),
                ApplicationId    = ConfigurationManager.AppSettings["WgApi"]
            };

            var tanks = fetcher.GetTanks(Plataform.PC).ToArray();

            var connectionString = ConfigurationManager.ConnectionStrings["Main"].ConnectionString;
            var recorder         = new DbRecorder(connectionString);

            recorder.Set(tanks);
        }
Exemple #20
0
        public static ICloudBooster GetBooster(Plataform plataform)
        {
            ICloudBooster webDriverBooster = null;

            switch (plataform)
            {
            case Plataform.Mixcloud:
                webDriverBooster = new MixcloudWebDriverBooster(ConfigurationFactory.GetConfiguration());
                break;

            case Plataform.Soundcloud:
                //webDriverBooster = new SoundcloudWebDriverBooster();
                break;
            }

            return(webDriverBooster);
        }
Exemple #21
0
        public Putter(Plataform plataform, string apiKey)
        {
            switch (plataform)
            {
            case Plataform.XBOX:
                _baseUrl = "https://wotclans.com.br";
                break;

            case Plataform.PS:
                _baseUrl = "https://ps.wotclans.com.br";
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(plataform), plataform, "Not supported.");
            }
            _apiKey = apiKey;
        }
Exemple #22
0
        private static void PutTanksReferencesOnPlataform(Plataform plataform, DateTime?lastReferences,
                                                          DbProvider provider, MailSender mailSender, string resultDirectory, FtpPutter ftpPutter, int utcShiftToCalculate)
        {
            Debug.Assert(lastReferences != null, nameof(lastReferences) + " != null");
            Log.Debug($"Referências no site {plataform}: {lastReferences.Value:yyyy-MM-dd ddd}");
            var cd             = DateTime.UtcNow.AddHours(utcShiftToCalculate);
            var previousMonday = cd.PreviousDayOfWeek(DayOfWeek.Monday);

            Log.Debug($"Segunda-Feira anterior: {previousMonday:yyyy-MM-dd ddd}; Current: {cd:o}");

            if (previousMonday <= lastReferences.Value)
            {
                return;
            }

            // Preciso gerar referências e subir
            var references = provider
                             .GetTanksReferences(plataform, previousMonday).ToArray();
            var referencesDir = Path.Combine(resultDirectory, "Tanks");
            var leaders       = new ConcurrentBag <Leader>();

            Parallel.For(0, references.Length, new ParallelOptions {
                MaxDegreeOfParallelism = 4
            }, (i) =>
            {
                var r        = references[i];
                var tankFile = r.Save(referencesDir);
                ftpPutter.PutTankReference(tankFile);
                Log.Info($"Escrito e feito upload da referência {tankFile}");

                foreach (var leader in r.Leaders)
                {
                    leaders.Add(leader);
                }
            });

            var json        = JsonConvert.SerializeObject(leaders.ToArray(), Formatting.Indented);
            var leadersFile = Path.Combine(referencesDir, $"{previousMonday:yyyy-MM-dd}.Leaders.json");

            File.WriteAllText(leadersFile, json, Encoding.UTF8);
            ftpPutter.PutTankReference(leadersFile);

            mailSender.Send($"Upload das Referências {plataform} para {previousMonday:yyyy-MM-dd} Ok",
                            $"Leaderboard: https://{(plataform == Plataform.PS ? "ps." : "")}wotclans.com.br/Leaderboard/All");
        }
Exemple #23
0
    // Start is called before the first frame update
    void Start()
    {
        _tileRot = Quaternion.identity;

        _world = new Queue <Plataform>(10);

        Plataform plataform = default;

        for (int i = 0; i < 10; i++)
        {
            _offset = new Vector3(0f, 0f, (2 * i));

            plataform = Instantiate(_pltfrm, _offset, _tileRot);

            plataform.transform.SetParent(transform);

            _world.Enqueue(plataform);
        }
    }
Exemple #24
0
        private static void EnableDisableClan(Plataform plataform, long clanId, bool enable,
                                              DisabledReason disabledReason, SqlTransaction t)
        {
            const string sql =
                "update Main.Clan set [Enabled] = @enableDisable, DisabledReason = @disabledReason where (ClanId = @clanId) and (PlataformId = @plataformId);";

            using (var cmd = new SqlCommand(sql, t.Connection, t))
            {
                cmd.CommandType    = CommandType.Text;
                cmd.CommandTimeout = 5 * 60;

                cmd.Parameters.AddWithValue("@clanId", clanId);
                cmd.Parameters.AddWithValue("@plataformId", (int)plataform);
                cmd.Parameters.AddWithValue("@enableDisable", enable);
                cmd.Parameters.AddWithValue("@disabledReason", (int)disabledReason);

                cmd.ExecuteNonQuery();
            }
        }
Exemple #25
0
        private static void PutMoEOnPlataform(Plataform plataform, DateTime?moeLastDate,
                                              DbProvider provider, MailSender mailSender,
                                              string resultDirectory, FtpPutter ftpPutter)
        {
            Log.Debug($"Verificando atualização de MoE em {plataform}");

            Debug.Assert(moeLastDate != null, nameof(moeLastDate) + " != null");
            Log.DebugFormat("Site Date: {0:yyyy-MM-dd}", moeLastDate.Value);

            var dbDate = provider.GetMoe(plataform).First().Date;

            Log.DebugFormat("DB Date: {0:yyyy-MM-dd}", dbDate);

            var date = moeLastDate.Value.AddDays(1);

            while (date <= dbDate)
            {
                Log.InfoFormat("Calculando e fazendo upload para {0:yyyy-MM-dd}...", date);
                var moes = provider.GetMoe(plataform, date).ToDictionary(t => t.TankId);

                if (moes.Count > 0)
                {
                    var json = JsonConvert.SerializeObject(moes, Formatting.Indented);
                    var file = Path.Combine(resultDirectory, "MoE", $"{date:yyyy-MM-dd}.moe.json");
                    File.WriteAllText(file, json, Encoding.UTF8);
                    Log.DebugFormat("Salvo o MoE em '{0}'", file);

                    ftpPutter.PutMoe(file);
                    Log.Debug("Feito uploado do MoE");

                    mailSender.Send($"Upload das MoE {plataform} para {date:yyyy-MM-dd} Ok",
                                    $"MoE: https://{(plataform == Plataform.PS ? "ps." : "")}wotclans.com.br/Tanks/MoE");
                }
                else
                {
                    Log.ErrorFormat("Os MoEs para {0:yyyy-MM-dd} retornaram 0 tanques!", date);
                }

                date = date.AddDays(1);
            }

            Log.Debug($"Verificação do MoE completa para {plataform}.");
        }
Exemple #26
0
        /// <summary>
        ///     Retorna o nome do clã, ou nulo caso ele não exista
        /// </summary>
        private static string GetClanTag(Plataform plataform, long clanId, SqlTransaction t)
        {
            const string sql =
                "select ClanTag from Main.Clan where (PlataformId = @plataformId) and (ClanId = @clanId);";

            using (var cmd = new SqlCommand(sql, t.Connection, t))
            {
                cmd.CommandTimeout = 5 * 60;
                cmd.Parameters.AddWithValue("@plataformId", (int)plataform);
                cmd.Parameters.AddWithValue("@clanId", clanId);
                using (var reader = cmd.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        return(reader.GetNonNullValue <string>(0));
                    }
                }
            }
            return(null);
        }
Exemple #27
0
        protected Plataform GetPlataform(string s, Plataform defaultPlataform, out string clean)
        {
            if (string.IsNullOrWhiteSpace(s))
            {
                clean = string.Empty;
                return(defaultPlataform);
            }

            s = s.Trim('\"', ' ', '\t', '\r', '\n', '\'', '`', '´');
            s = s.RemoveDiacritics().ToLowerInvariant();

            if (s.StartsWith("ps."))
            {
                clean = s.Substring(3);
                return(Plataform.PS);
            }
            else if (s.StartsWith("ps4."))
            {
                clean = s.Substring(4);
                return(Plataform.PS);
            }
            else if (s.StartsWith("xbox."))
            {
                clean = s.Substring(5);
                return(Plataform.XBOX);
            }
            else if (s.StartsWith("x."))
            {
                clean = s.Substring(2);
                return(Plataform.XBOX);
            }
            else if (s.StartsWith("p."))
            {
                clean = s.Substring(2);
                return(Plataform.PS);
            }

            clean = s;
            return(defaultPlataform);
        }
Exemple #28
0
        private Tank[] GetTanks(Plataform plataform)
        {
            lock (_tankListLock)
            {
                if (DateTime.UtcNow > (plataform == Plataform.PS ? _tanksListValidUntilPs : _tanksListValidUntilXbox))
                {
                    var provider = new DbProvider(_connectionString);
                    if (plataform == Plataform.PS)
                    {
                        _tanksPS = provider.EnumTanks(Plataform.PS).OrderByDescending(t => t.Tier).ThenBy(t => t.TankId).ToArray();
                        _tanksListValidUntilPs = DateTime.UtcNow.AddMinutes(30);
                    }
                    else
                    {
                        _tanksXbox = provider.EnumTanks(Plataform.XBOX).OrderByDescending(t => t.Tier).ThenBy(t => t.TankId).ToArray();
                        _tanksListValidUntilXbox = DateTime.UtcNow.AddMinutes(30);
                    }
                }

                return(plataform == Plataform.PS ? _tanksPS : _tanksXbox);
            }
        }
Exemple #29
0
        private static void HandleWn8ExpectedValues(Plataform plataform, DbProvider provider, string resultDirectory, FtpPutter ftpPutter, DbRecorder recorder, Fetcher fetcher)
        {
            // Aproveito e pego e salvo os dados de WN8
            if ((recorder != null) && (fetcher != null))
            {
                Log.Info($"Pegando dados de WN8 para {plataform}...");
                recorder.Set(fetcher.GetXvmWn8ExpectedValuesAsync().Result);
                Log.Info("Dados de WN8 obtidos e salvos.");
            }

            var wn8 = provider.GetWn8ExpectedValues(plataform);

            if (wn8 != null)
            {
                var json = JsonConvert.SerializeObject(wn8, Formatting.Indented);
                var file = Path.Combine(resultDirectory, "MoE", $"{wn8.Date:yyyy-MM-dd}.WN8.json");
                File.WriteAllText(file, json, Encoding.UTF8);
                Log.DebugFormat("Salvo o WN8 Expected em '{0}'", file);

                ftpPutter.PutMoe(file);
                Log.Debug($"Feito uploado do WN8 para {plataform}");
            }
        }
        public ActionResult Save(Plataform computador)
        {
            if (!ModelState.IsValid)
            {
                var viewModel = new PlataformssFormViewModel
                {
                    Plataform = computador
                };
                return(View("ComputadorForm", viewModel));
            }

            if (computador.Id == 0)
            {
                _context.Computadores.Add(computador);
            }
            else
            {
                var computadorInDb = _context.Computadores.Single(c => c.Id == computador.Id);

                computadorInDb.Name = computador.Name;
            }
            _context.SaveChanges();
            return(RedirectToAction("Index"));
        }