Browse Source

HttpClient fixes.

pull/575/head
Sebastian 5 years ago
parent
commit
5593733a36
  1. 8
      backend/extensions/Squidex.Extensions/Actions/Fastly/FastlyActionHandler.cs
  2. 15
      backend/extensions/Squidex.Extensions/Actions/Webhook/WebhookActionHandler.cs
  3. 17
      backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Extensions/HttpJintExtension.cs
  4. 6
      backend/src/Squidex.Domain.Apps.Entities/Backup/TempFolderBackupArchiveLocation.cs
  5. 28
      backend/src/Squidex.Infrastructure/Translations/DeepLTranslator.cs
  6. 23
      backend/src/Squidex/Areas/Api/Controllers/Users/UsersController.cs

8
backend/extensions/Squidex.Extensions/Actions/Fastly/FastlyActionHandler.cs

@ -50,11 +50,13 @@ namespace Squidex.Extensions.Actions.Fastly
httpClient.Timeout = TimeSpan.FromSeconds(2);
var requestUrl = $"https://api.fastly.com/service/{job.FastlyServiceID}/purge/{job.Key}";
var request = new HttpRequestMessage(HttpMethod.Post, requestUrl);
request.Headers.Add("Fastly-Key", job.FastlyApiKey);
using (var request = new HttpRequestMessage(HttpMethod.Post, requestUrl))
{
request.Headers.Add("Fastly-Key", job.FastlyApiKey);
return await httpClient.OneWayRequestAsync(request, ct: ct);
return await httpClient.OneWayRequestAsync(request, ct: ct);
}
}
}
}

15
backend/extensions/Squidex.Extensions/Actions/Webhook/WebhookActionHandler.cs

@ -57,16 +57,17 @@ namespace Squidex.Extensions.Actions.Webhook
{
using (var httpClient = httpClientFactory.CreateClient())
{
var request = new HttpRequestMessage(HttpMethod.Post, job.RequestUrl)
using (var request = new HttpRequestMessage(HttpMethod.Post, job.RequestUrl)
{
Content = new StringContent(job.RequestBody, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Signature", job.RequestSignature);
request.Headers.Add("X-Application", "Squidex Webhook");
request.Headers.Add("User-Agent", "Squidex Webhook");
})
{
request.Headers.Add("X-Signature", job.RequestSignature);
request.Headers.Add("X-Application", "Squidex Webhook");
request.Headers.Add("User-Agent", "Squidex Webhook");
return await httpClient.OneWayRequestAsync(request, job.RequestBody, ct);
return await httpClient.OneWayRequestAsync(request, job.RequestBody, ct);
}
}
}
}

17
backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Extensions/HttpJintExtension.cs

@ -52,16 +52,19 @@ namespace Squidex.Domain.Apps.Core.Scripting.Extensions
{
using (var httpClient = httpClientFactory.CreateClient())
{
var request = CreateRequest(url, headers);
var response = await httpClient.SendAsync(request, context.CancellationToken);
response.EnsureSuccessStatusCode();
using (var request = CreateRequest(url, headers))
{
using (var response = await httpClient.SendAsync(request, context.CancellationToken))
{
response.EnsureSuccessStatusCode();
var responseObject = await ParseResponse(context, response);
var responseObject = await ParseResponse(context, response);
context.Engine.ResetConstraints();
context.Engine.ResetConstraints();
callback(responseObject);
callback(responseObject);
}
}
}
}
catch (Exception ex)

6
backend/src/Squidex.Domain.Apps.Entities/Backup/TempFolderBackupArchiveLocation.cs

@ -54,7 +54,7 @@ namespace Squidex.Domain.Apps.Entities.Backup
{
client.Timeout = TimeSpan.FromHours(1);
response = await client.GetAsync(url);
response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);
response.EnsureSuccessStatusCode();
using (var sourceStream = await response.Content.ReadAsStreamAsync())
@ -67,6 +67,10 @@ namespace Squidex.Domain.Apps.Entities.Backup
{
throw new BackupRestoreException($"Cannot download the archive. Got status code: {response?.StatusCode}.", ex);
}
finally
{
response?.Dispose();
}
}
try

28
backend/src/Squidex.Infrastructure/Translations/DeepLTranslator.cs

@ -70,25 +70,29 @@ namespace Squidex.Infrastructure.Translations
parameters["source_lang"] = GetLanguageCode(sourceLanguage);
}
var response = await httpClient.PostAsync(Url, new FormUrlEncodedContent(parameters), ct);
var responseString = await response.Content.ReadAsStringAsync();
var body = new FormUrlEncodedContent(parameters);
if (response.IsSuccessStatusCode)
using (var response = await httpClient.PostAsync(Url, body, ct))
{
var result = jsonSerializer.Deserialize<Response>(responseString);
var responseString = await response.Content.ReadAsStringAsync();
if (result?.Translations?.Length == 1)
if (response.IsSuccessStatusCode)
{
return new Translation(TranslationResult.Translated, result.Translations[0].Text);
var result = jsonSerializer.Deserialize<Response>(responseString);
if (result?.Translations?.Length == 1)
{
return new Translation(TranslationResult.Translated, result.Translations[0].Text);
}
}
}
if (response.StatusCode == HttpStatusCode.BadRequest)
{
return new Translation(TranslationResult.LanguageNotSupported, resultText: responseString);
}
if (response.StatusCode == HttpStatusCode.BadRequest)
{
return new Translation(TranslationResult.LanguageNotSupported, resultText: responseString);
}
return new Translation(TranslationResult.Failed, resultText: responseString);
return new Translation(TranslationResult.Failed, resultText: responseString);
}
}
private static string GetLanguageCode(Language language)

23
backend/src/Squidex/Areas/Api/Controllers/Users/UsersController.cs

@ -189,22 +189,23 @@ namespace Squidex.Areas.Api.Controllers.Users
if (!string.IsNullOrWhiteSpace(url))
{
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
using (var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead))
{
var contentType = response.Content.Headers.ContentType.ToString();
if (response.IsSuccessStatusCode)
{
var contentType = response.Content.Headers.ContentType.ToString();
var etag = response.Headers.ETag;
var etag = response.Headers.ETag;
var result = new FileStreamResult(await response.Content.ReadAsStreamAsync(), contentType);
var result = new FileStreamResult(await response.Content.ReadAsStreamAsync(), contentType);
if (!string.IsNullOrWhiteSpace(etag?.Tag))
{
result.EntityTag = new EntityTagHeaderValue(etag.Tag, etag.IsWeak);
}
if (!string.IsNullOrWhiteSpace(etag?.Tag))
{
result.EntityTag = new EntityTagHeaderValue(etag.Tag, etag.IsWeak);
}
return result;
return result;
}
}
}
}

Loading…
Cancel
Save