PingController.java
package net.hostsharing.hsadminng.ping;
import io.micrometer.core.annotation.Timed;
import net.hostsharing.hsadminng.config.MessageTranslator;
import net.hostsharing.hsadminng.config.NoSecurityRequirement;
import net.hostsharing.hsadminng.generated.api.v1.api.TestApi;
import net.hostsharing.hsadminng.generated.api.v1.model.ApiVersionGetResponse200Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.RestController;
@RestController
@NoSecurityRequirement
public class PingController implements TestApi {
@Autowired
private MessageTranslator messageTranslator;
@Autowired
private VersionProvider versionProvider;
@Timed("app.api.ping")
@Override
public ResponseEntity<String> ping() {
// HOWTO translate text with placeholders - also see in resource files i18n/messages_*.properties.
final var translatedMessage = messageTranslator.translate("test.pinged--in-your-language");
return ResponseEntity.ok(translatedMessage + "\n");
}
@Timed("app.api.pong")
@Override
public ResponseEntity<String> pong() {
return createPongResponse();
}
@Timed("app.api.pong")
@Override
public ResponseEntity<String> pongPost() {
return createPongResponse();
}
@Timed("app.api.version")
@Override
public ResponseEntity<ApiVersionGetResponse200Resource> version() {
return versionProvider.getVersion();
}
private ResponseEntity<String> createPongResponse() {
final var userName = SecurityContextHolder.getContext().getAuthentication().getName();
// HOWTO translate text with placeholders - also see in resource files i18n/messages_*.properties.
final var translatedMessage = messageTranslator.translate("test.ponged-{0}--in-your-language", userName);
return ResponseEntity.ok(translatedMessage + "\n");
}
}