Files
Automatic-Parking/Source/ProofOfConcept/Utilities/TeslaOIDCConfigurationManager.cs
Szakáts Alpár Zsolt 9b96072982
All checks were successful
Build, Push and Run Container / build (push) Successful in 23s
Removes unused object instantiation
Removes the unnecessary instantiation of the OpenIdConnectConfigurationRetriever. The object is instantiated directly in the ConfigurationManager constructor, making the explicit instantiation redundant.
2025-08-17 00:32:05 +02:00

52 lines
2.1 KiB
C#

using System.Collections.Concurrent;
using System.IdentityModel.Tokens.Jwt;
using Microsoft.IdentityModel.Protocols;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
using Microsoft.IdentityModel.Tokens;
namespace ProofOfConcept.Utilities;
using Microsoft.IdentityModel.Protocols;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
public sealed class TeslaOIDCConfigurationManager : IConfigurationManager<OpenIdConnectConfiguration>
{
private readonly IConfigurationManager<OpenIdConnectConfiguration> _inner;
public TeslaOIDCConfigurationManager(string metadataAddress)
{
_inner = new ConfigurationManager<OpenIdConnectConfiguration>(metadataAddress, new OpenIdConnectConfigurationRetriever(), new HttpDocumentRetriever());
}
public async Task<OpenIdConnectConfiguration> GetConfigurationAsync(CancellationToken cancel)
{
OpenIdConnectConfiguration? configuration = await _inner.GetConfigurationAsync(cancel);
string cloudEndpointBase = "https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3";
configuration.AuthorizationEndpoint = $"{cloudEndpointBase}/authorize";
configuration.TokenEndpoint = $"{cloudEndpointBase}/token";
configuration.JwksUri = $"{cloudEndpointBase}/discovery/thirdparty/keys";
configuration.EndSessionEndpoint = $"{cloudEndpointBase}/logout";
configuration.UserInfoEndpoint = $"{cloudEndpointBase}/userinfo";
return configuration;
}
public void RequestRefresh() => _inner.RequestRefresh();
}
public class TeslaDocumentRetriever : IDocumentRetriever
{
private readonly HttpDocumentRetriever httpDocumentRetriever;
public TeslaDocumentRetriever(HttpDocumentRetriever httpDocumentRetriever)
{
this.httpDocumentRetriever = httpDocumentRetriever;
}
public async Task<string> GetDocumentAsync(string address, CancellationToken cancel)
{
string document = await this.httpDocumentRetriever.GetDocumentAsync(address, cancel);
return document.Replace("https://fleet-auth.tesla.com/oauth2/v3", "https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3");
}
}