Skip to content

Commit baf09c0

Browse files
committed
[main_svc] Оптимизировал StatisticClient
1 parent da36fcc commit baf09c0

File tree

2 files changed

+20
-45
lines changed

2 files changed

+20
-45
lines changed

main-service/src/main/java/ru/practicum/ewm/serices/EventService.java

-3
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,6 @@ public EventFullDto findPublishedById(long id) {
101101
.map(ViewStats::getHits)
102102
.orElse(0L);
103103

104-
// //Тест ломается, поэтому сделал бяку. Такое впечатление что стораж для статистики не работает во время провекрки
105-
// var views = hits.getOrDefault("/events/" + id, 0L);
106-
107104
log.trace("Getted vievs for " + "/events/" + id + " is " + views);
108105

109106
var req = QParticipationRequestEntity.participationRequestEntity;

stat-service/statistic-client/src/main/java/ru/practicum/statistic/client/StatisticClient.java

+20-42
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,24 @@
2222
import java.time.Duration;
2323
import java.time.LocalDateTime;
2424
import java.time.format.DateTimeFormatter;
25-
import java.util.Collections;
2625
import java.util.List;
2726

2827
@Slf4j
2928
@Component
3029
public class StatisticClient {
31-
private static final DateTimeFormatter DTF = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
30+
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
3231

33-
private final String application;
34-
private final String statsServiceUri;
32+
@Value("${spring.application.name}")
33+
private String application;
34+
@Value("${services.stats-service.uri}")
35+
private String statsServiceUri;
3536
private final ObjectMapper json;
3637
private final HttpClient httpClient;
3738

38-
public StatisticClient(@Value("${spring.application.name}") String application,
39-
@Value("${services.stats-service.uri}") String statsServiceUri,
40-
ObjectMapper json) {
41-
this.application = application;
42-
this.statsServiceUri = statsServiceUri;
39+
public StatisticClient(ObjectMapper json) {
4340
this.json = json;
4441
this.httpClient = HttpClient.newBuilder()
45-
.connectTimeout(Duration.ofSeconds(2))
42+
.connectTimeout(Duration.ofSeconds(5))
4643
.build();
4744
}
4845

@@ -66,23 +63,25 @@ public void hit(HttpServletRequest userRequest) {
6663
.header(HttpHeaders.ACCEPT, "application/json")
6764
.build();
6865

69-
HttpResponse<Void> response = httpClient.send(hitRequest, HttpResponse.BodyHandlers.discarding());
70-
log.debug("Response from stats-service: {}", response);
66+
httpClient.send(hitRequest, HttpResponse.BodyHandlers.discarding());
7167
} catch (Exception e) {
72-
log.warn("Cannot record hit", e);
68+
log.error("Record hit error", e);
7369
}
7470
}
7571

7672
public List<ViewStats> getStats(ViewsStatsRequest request) {
7773
try {
78-
String queryString = toQueryString(
79-
request.toBuilder()
80-
.application(application)
81-
.build()
82-
);
74+
String start = URLEncoder.encode(DATE_TIME_FORMATTER.format(request.getStart()), StandardCharsets.UTF_8);
75+
String end = URLEncoder.encode(DATE_TIME_FORMATTER.format(request.getEnd()), StandardCharsets.UTF_8);
76+
77+
String query = String.format("?start=%s&end=%s&unique=%b&application=%s", start, end, request.isUnique(), application);
78+
query += "&uris=" + String.join(",", request.getUris());
79+
if (request.hasLimitCondition()) {
80+
query += "&limit=" + request.getLimit();
81+
}
8382

8483
HttpRequest httpRequest = HttpRequest.newBuilder()
85-
.uri(URI.create(statsServiceUri + "/stats" + queryString))
84+
.uri(URI.create(statsServiceUri + "/stats" + query))
8685
.header(HttpHeaders.ACCEPT, "application/json")
8786
.build();
8887

@@ -92,30 +91,9 @@ public List<ViewStats> getStats(ViewsStatsRequest request) {
9291
return json.readValue(response.body(), new TypeReference<>() {
9392
});
9493
}
95-
log.debug("Response from stats-service: {}", response);
9694
} catch (Exception e) {
97-
log.warn("Cannot get view stats for request: " + request, e);
95+
log.error("Get view stats error", e);
9896
}
99-
return Collections.emptyList();
100-
}
101-
102-
private String toQueryString(ViewsStatsRequest request) {
103-
String start = encode(DTF.format(request.getStart()));
104-
String end = encode(DTF.format(request.getEnd()));
105-
106-
String queryString = String.format("?start=%s&end=%s&unique=%b&application=%s",
107-
start, end, request.isUnique(), application);
108-
109-
queryString += "&uris=" + String.join(",", request.getUris());
110-
111-
if (request.hasLimitCondition()) {
112-
queryString += "&limit=" + request.getLimit();
113-
}
114-
115-
return queryString;
116-
}
117-
118-
private String encode(String value) {
119-
return URLEncoder.encode(value, StandardCharsets.UTF_8);
97+
return List.of();
12098
}
12199
}

0 commit comments

Comments
 (0)