TD.ADSApi.Clients 1.1.1

td-adsapi-clients

Pouzitie klienta

  • cez DI zaregistrovat clienta
        // Mapovanie options z appsettings.json - kazdy projekt moze mat inu sekciu/kluce
        builder.Services.Configure<ClientCredentialsOptions>(opts =>
        {
            opts.TokenUrl = builder.Configuration["ADSTokenProvider:TokenUrl"]!;
            opts.ClientId = builder.Configuration["ADSTokenProvider:ClientId"]!;
            opts.ClientSecret = builder.Configuration["ADSTokenProvider:ClientSecret"]!;
        });

        builder.Services.AddHttpClient<IClientCredentialsTokenProvider, ClientCredentialsTokenProvider>();

        // Register AuthorizationHeaderHandler with fallback token provider
        builder.Services.AddTransient<AuthorizationHeaderHandler>(sp =>
        {
            var httpContextAccessor = sp.GetRequiredService<IHttpContextAccessor>();
            var tokenProvider = sp.GetRequiredService<IClientCredentialsTokenProvider>();
            return new AuthorizationHeaderHandler(httpContextAccessor, () => tokenProvider.GetTokenAsync());
        });



        // externe api, atd.
        var section = builder.Configuration.GetSection("TarDmnAPI");
        var baseUrl = section.GetValue<string>("BaseUrl") ?? string.Empty;
        var timeoutSeconds = section.GetValue<int?>("TimeoutSeconds") ?? 30;

        builder.Services.AddHttpClient<ITarDmnClient, TarDmnClient>(client =>
        {
            if (!string.IsNullOrEmpty(baseUrl))
            {
                client.BaseAddress = new Uri(baseUrl.TrimEnd('/') + "/");
            }

            client.Timeout = TimeSpan.FromSeconds(timeoutSeconds);
        }).AddHttpMessageHandler<AuthorizationHeaderHandler>(); 

AuthorizationHeaderHandler sluzi na preposielanie Authorization z aktualneho requestu do volania API, alebo vycita token podla potreby cez ClientCredentialsTokenProvider

  • ClientCredentialsTokenProvider sluzi na vycitavanie tokenu vyzaduje v appsettings.json sekciu ADSTokenProvider s klucmi TokenUrl, ClientId a ClientSecret

    "ADSTokenProvider": { "TokenUrl": "https://nieco.niekde.com/realms/nicl/protocol/openid-connect/token", "ClientId": "tajny_clienid", "ClientSecret": "tajny_clientsecret" },

  • navy mozu byt aj ine, len treba spravne plnit ClientCredentialsOptions

  • ak nie potrebne ziskavat token(vzdy sa bude predavat z requestu) staci zaregistrovat AuthorizationHeaderHandler

  • bez ClientCredentialsOptions a IClientCredentialsTokenProvider

self.Services.AddTransient<AuthorizationHeaderHandler>();

Generator spo

ads sluzby vyzaduju plnenie hodnot spo-deviceid, spo-requestid a spo-previousrequestid na generovaie je pripravena trieda SpoDeviceIdGenerator ktoru treba cez DI zaregistrovat

self.Services.AddSingleton<ISpoDeviceIdGenerator, SpoDeviceIdGenerator>();

nasledne funkcia SpoDeviceIdGenerator.Generate_spo_deviceid() generuje spo_deviceid podla formatu "127~HHmmssNN", kde NN je poradové číslo 00-99, jedinečné v rámci jedné sekundy přes všechny requesty. vysledny retazec je zakodovany do Base64.

funkcia Generate_spo_requestid() generuje spoRequestId a spoPreviousRequestId podla formátu "11yyyyMMdd" zakódovaného v Base64.

No packages depend on TD.ADSApi.Clients.

Version Downloads Last updated
1.1.1 18 04/27/2026
1.1.0 3 04/27/2026
1.0.1 13 04/20/2026
1.0.0 9 04/13/2026