Example #1
0
        public async ValueTask <BungieResponse <T> > GetDestinyEntityDefinition <T>(DefinitionsEnum entityType, uint hash,
                                                                                    CancellationToken token = default) where T : IDestinyDefinition
        {
            var url = StringBuilderPool
                      .GetBuilder(token)
                      .Append("/Destiny2/Manifest/")
                      .AddUrlParam(entityType.ToString())
                      .AddUrlParam(hash.ToString())
                      .Build();

            return(await _httpClient.GetFromBungieNetPlatform <T>(url, token));
        }
Example #2
0
        public async ValueTask <BungieResponse <DestinyEntitySearchResult> > SearchDestinyEntities(
            DefinitionsEnum type,
            string searchTerm,
            int page = 0,
            CancellationToken token = default)
        {
            var url = StringBuilderPool
                      .GetBuilder(token)
                      .Append("/Destiny2/Armory/Search/")
                      .AddUrlParam(type.ToString())
                      .AddUrlParam(searchTerm)
                      .AddQueryParam("page", page.ToString())
                      .Build();

            return(await _httpClient.GetFromBungieNetPlatform <DestinyEntitySearchResult>(url, token));
        }
Example #3
0
        public string FetchJSONFromDB(DestinyLocales locale, DefinitionsEnum definitionType, uint hash)
        {
            if (!_assemblyData.DefinitionsToTypeMapping[definitionType].AttributeData.Sources.HasFlag(Attributes.DefinitionSources.SQLite))
            {
                throw new Exception("This definition type isn't present in SQLite database.");
            }

            var    manifest = StaticUnityContainer.GetManifestUpdateHandler().CurrentManifest;
            var    mobileWorldContentPathsLocalePath = Path.GetFileName(manifest.MobileWorldContentPaths[locale.LocaleToString()]);
            var    connectionString = @$ "Data Source={_configs.Settings.VersionsRepositoryPath}\\{manifest.Version}\\MobileWorldContent\\{locale.LocaleToString()}\\{mobileWorldContentPathsLocalePath}; Version=3;";
            string result           = string.Empty;

            using (SQLiteConnection connection = new SQLiteConnection(connectionString))
            {
                connection.Open();
                string        query   = $"SELECT * FROM {definitionType.ToString()} WHERE id={hash.ToInt32()}";
                SQLiteCommand command = new SQLiteCommand
                {
                    Connection  = connection,
                    CommandText = query
                };
                try
                {
                    var reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        var byteArray = (byte[])reader["json"];
                        result = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);
                    }
                }
                catch (Exception e)
                {
                    _logger.Log(e.Message, LogType.Error);
                }
                connection.Close();
            }
            return(result);
        }