From c02cf1c75415266242fc48aae3fcf9dc9751d25f Mon Sep 17 00:00:00 2001 From: Gelu Mihes Date: Wed, 6 May 2026 16:48:28 +0300 Subject: [PATCH] Changes --- api/Clients/Api/Contracts/ICvMatcherApi.cs | 1 - api/Controllers/CvMatcherController.cs | 20 ++++++++------------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/api/Clients/Api/Contracts/ICvMatcherApi.cs b/api/Clients/Api/Contracts/ICvMatcherApi.cs index ee95e0f..236fb1d 100644 --- a/api/Clients/Api/Contracts/ICvMatcherApi.cs +++ b/api/Clients/Api/Contracts/ICvMatcherApi.cs @@ -1,4 +1,3 @@ -using System.Net.Http; using Refit; using Api.Models.Requests; diff --git a/api/Controllers/CvMatcherController.cs b/api/Controllers/CvMatcherController.cs index 8856f05..98d3941 100644 --- a/api/Controllers/CvMatcherController.cs +++ b/api/Controllers/CvMatcherController.cs @@ -16,18 +16,15 @@ namespace Api.Controllers; public sealed class CvMatcherController : ControllerBase { private readonly ICvMatcherApi _cvApi; - private readonly IConfiguration _configuration; private readonly ICaptchaVerifier _captcha; private readonly ILogger _logger; public CvMatcherController( ICvMatcherApi cvApi, - IConfiguration configuration, ICaptchaVerifier captcha, ILogger logger) { _cvApi = cvApi; - _configuration = configuration; _captcha = captcha; _logger = logger; } @@ -60,9 +57,6 @@ public sealed class CvMatcherController : ControllerBase try { - _logger.LogInformation("Proxying CV upload to cv-matcher-api. FileName={FileName}, Size={SizeBytes}, GdprConsent={GdprConsent}", - cv.FileName, cv.Length, gdprConsent); - var userIp = HttpContext.Connection.RemoteIpAddress?.ToString(); var verdict = await _captcha.VerifyAsync(request.CaptchaToken ?? string.Empty, userIp, "cv_upload", ct); if (!verdict.Success) @@ -71,6 +65,9 @@ public sealed class CvMatcherController : ControllerBase return BadRequest(new { error = "Captcha verification failed." }); } + _logger.LogInformation("Proxying CV upload to cv-matcher-api. FileName={FileName}, Size={SizeBytes}, GdprConsent={GdprConsent}", + cv.FileName, cv.Length, gdprConsent); + var stream = cv.OpenReadStream(); var part = new Refit.StreamPart(stream, cv.FileName, "application/pdf"); using var response = await _cvApi.Upload(part, gdprConsent); @@ -105,11 +102,6 @@ public sealed class CvMatcherController : ControllerBase { try { - _logger.LogInformation("Proxying job match request to cv-matcher-api. CvDocumentId={CvDocumentId}, HasJobUrl={HasJobUrl}, HasJobDescription={HasJobDescription}", - request.CvDocumentId, - !string.IsNullOrWhiteSpace(request.JobUrl), - !string.IsNullOrWhiteSpace(request.JobDescription)); - var userIp = HttpContext.Connection.RemoteIpAddress?.ToString(); var verdict = await _captcha.VerifyAsync(request.CaptchaToken ?? string.Empty, userIp, "match_job", ct); if (!verdict.Success) @@ -118,6 +110,11 @@ public sealed class CvMatcherController : ControllerBase return BadRequest(new { error = "Captcha verification failed." }); } + _logger.LogInformation("Proxying job match request to cv-matcher-api. CvDocumentId={CvDocumentId}, HasJobUrl={HasJobUrl}, HasJobDescription={HasJobDescription}", + request.CvDocumentId, + !string.IsNullOrWhiteSpace(request.JobUrl), + !string.IsNullOrWhiteSpace(request.JobDescription)); + using var response = await _cvApi.MatchJob(request); return await ProxyResponseAsync(response, ct); } @@ -132,7 +129,6 @@ public sealed class CvMatcherController : ControllerBase return StatusCode(StatusCodes.Status502BadGateway, new { error = "CV matcher API request failed." }); } } - // Refit client is configured in Program.cs; this helper only reads config for diagnostics private static async Task ProxyResponseAsync(HttpResponseMessage response, CancellationToken ct) {