Skip to content

Commit 2f2a09c

Browse files
committed
Fix problem with trying to access disposed HttpClient in some cases
1 parent b26d53a commit 2f2a09c

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

src/Gulla.Episerver.Labs.LanguageManager.OpenAi.csproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@
1010
<Title>Gulla.Episerver.Labs.LanguageManager.OpenAi</Title>
1111
<PackageId>Gulla.Episerver.Labs.LanguageManager.OpenAi</PackageId>
1212
<Authors>Tomas Hensrud Gulla</Authors>
13-
<Version>1.0.0</Version>
14-
<PackageVersion>1.0.0</PackageVersion>
15-
<AssemblyVersion>1.0.0.0</AssemblyVersion>
16-
<FileVersion>1.0.0.0</FileVersion>
13+
<Version>1.0.1</Version>
14+
<PackageVersion>1.0.1</PackageVersion>
15+
<AssemblyVersion>1.0.1.0</AssemblyVersion>
16+
<FileVersion>1.0.1.0</FileVersion>
1717
<Description>An addon for EPiServer.Labs.LanguageManager that enables translation using OpenAI.</Description>
1818
<PackageTags>Optimizely LanguageManager AI Translation OpenAI</PackageTags>
1919
<PackageProjectUrl>https://github.com/tomahg/Gulla.Episerver.Labs.LanguageManager.OpenAi/</PackageProjectUrl>
2020
<RepositoryUrl>https://github.com/tomahg/Gulla.Episerver.Labs.LanguageManager.OpenAi/</RepositoryUrl>
2121
<PackageLicenseExpression>MIT</PackageLicenseExpression>
2222
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
23-
<PackageReleaseNotes>Initial version</PackageReleaseNotes>
23+
<PackageReleaseNotes>Fix problem with httpclient</PackageReleaseNotes>
2424
</PropertyGroup>
2525

2626
<ItemGroup>

src/OpenAiService.cs renamed to src/LanguageManagerOpenAiService.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,19 @@
77

88
namespace Gulla.Episerver.Labs.LanguageManager.OpenAi
99
{
10-
public class OpenAiService
10+
public class LanguageManagerOpenAiService
1111
{
12-
private readonly HttpClient _client;
1312
private readonly IOptions<LanguageManagerOpenAiOptions> _options;
1413
private readonly string _endpointCompletions = "https://api.openai.com/v1/chat/completions";
1514

16-
public OpenAiService(HttpClient httpClient, IOptions<LanguageManagerOpenAiOptions> options)
15+
public LanguageManagerOpenAiService(IOptions<LanguageManagerOpenAiOptions> options)
1716
{
1817
if (options.Value.OpenAiApiKey == null)
1918
{
2019
throw new ArgumentException("Missing OpenAI API Key for Gulla.Episerver.Labs.LanguageManager.OpenAi!");
2120
}
2221

23-
_options = options;
24-
_client = httpClient;
25-
_client.DefaultRequestHeaders.Add("Authorization", $"Bearer {_options.Value.OpenAiApiKey}");
22+
_options = options;
2623
}
2724

2825
/// <summary>
@@ -34,6 +31,9 @@ public OpenAiService(HttpClient httpClient, IOptions<LanguageManagerOpenAiOption
3431
/// <returns></returns>
3532
public async Task<string> TranslateText(string input, string fromLanguageName, string toLanguageName)
3633
{
34+
using var httpClient = new HttpClient();
35+
httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {_options.Value.OpenAiApiKey}");
36+
3737
var prompt = $"Translate the following content from {fromLanguageName} to {toLanguageName}.";
3838
if (!string.IsNullOrEmpty(_options.Value.OpenAiExtraPrompt))
3939
{
@@ -46,7 +46,7 @@ public async Task<string> TranslateText(string input, string fromLanguageName, s
4646
var content = new StringContent(JsonConvert.SerializeObject(new { messages = messages, model = _options.Value.OpenAiModel, temperature = _options.Value.OpenAiTemperature }), Encoding.UTF8, "application/json");
4747
request.Content = content;
4848

49-
var response = await _client.SendAsync(request);
49+
var response = await httpClient.SendAsync(request);
5050
var json = await response.Content.ReadAsStringAsync();
5151
var data = JsonConvert.DeserializeObject<dynamic>(json);
5252

src/OpenAiTranslatorProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace Gulla.Episerver.Labs.LanguageManager.OpenAi
88
{
99
public class OpenAiTranslatorProvider : IMachineTranslatorProvider
1010
{
11-
private Injected<OpenAiService> _openAiService;
11+
private Injected<LanguageManagerOpenAiService> _openAiService;
1212

1313
public string DisplayName => "OpenAI Translator";
1414

src/ServiceCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public static IServiceCollection AddLanguageManagerOpenAi(this IServiceCollectio
1313

1414
public static IServiceCollection AddLanguageManagerOpenAi(this IServiceCollection services, Action<LanguageManagerOpenAiOptions> setupAction)
1515
{
16-
services.AddTransient<OpenAiService, OpenAiService>();
16+
services.AddTransient<LanguageManagerOpenAiService, LanguageManagerOpenAiService>();
1717

1818
services.AddOptions<LanguageManagerOpenAiOptions>().Configure<IConfiguration>((options, configuration) =>
1919
{

0 commit comments

Comments
 (0)