Ran linter

This commit is contained in:
2026-01-06 03:00:54 +01:00
parent ccd82b2c0d
commit 97ebe81399
10 changed files with 27 additions and 24 deletions

View File

@@ -6,13 +6,13 @@ import java.util.List;
import org.springframework.core.convert.converter.Converter; import org.springframework.core.convert.converter.Converter;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.RequestEntity; import org.springframework.http.RequestEntity;
import org.springframework.lang.Nullable;
import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequest; import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequest;
import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequestEntityConverter; import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequestEntityConverter;
import org.springframework.security.oauth2.client.registration.ClientRegistration; import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames; import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import org.springframework.lang.Nullable;
/** /**
* Ensures Twitch token requests always include {@code client_id} and {@code client_secret} in the * Ensures Twitch token requests always include {@code client_id} and {@code client_secret} in the

View File

@@ -12,10 +12,10 @@ import dev.kruhlmann.imgfloat.model.PlaybackRequest;
import dev.kruhlmann.imgfloat.model.TransformRequest; import dev.kruhlmann.imgfloat.model.TransformRequest;
import dev.kruhlmann.imgfloat.model.TwitchUserProfile; import dev.kruhlmann.imgfloat.model.TwitchUserProfile;
import dev.kruhlmann.imgfloat.model.VisibilityRequest; import dev.kruhlmann.imgfloat.model.VisibilityRequest;
import dev.kruhlmann.imgfloat.util.LogSanitizer;
import dev.kruhlmann.imgfloat.service.AuthorizationService; import dev.kruhlmann.imgfloat.service.AuthorizationService;
import dev.kruhlmann.imgfloat.service.ChannelDirectoryService; import dev.kruhlmann.imgfloat.service.ChannelDirectoryService;
import dev.kruhlmann.imgfloat.service.TwitchUserLookupService; import dev.kruhlmann.imgfloat.service.TwitchUserLookupService;
import dev.kruhlmann.imgfloat.util.LogSanitizer;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@@ -256,7 +256,12 @@ public class ChannelApiController {
.updateTransform(broadcaster, assetId, request) .updateTransform(broadcaster, assetId, request)
.map(ResponseEntity::ok) .map(ResponseEntity::ok)
.orElseThrow(() -> { .orElseThrow(() -> {
LOG.warn("Transform request for missing asset {} on {} by {}", logAssetId, logBroadcaster, logSessionUsername); LOG.warn(
"Transform request for missing asset {} on {} by {}",
logAssetId,
logBroadcaster,
logSessionUsername
);
return createAsset404(); return createAsset404();
}); });
} }

View File

@@ -36,6 +36,7 @@ import org.springframework.web.server.ResponseStatusException;
@RequestMapping("/api/settings") @RequestMapping("/api/settings")
@SecurityRequirement(name = "administrator") @SecurityRequirement(name = "administrator")
public class SettingsApiController { public class SettingsApiController {
private static final Logger LOG = LoggerFactory.getLogger(SettingsApiController.class); private static final Logger LOG = LoggerFactory.getLogger(SettingsApiController.class);
private final SettingsService settingsService; private final SettingsService settingsService;

View File

@@ -6,12 +6,12 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import dev.kruhlmann.imgfloat.model.OauthSessionUser; import dev.kruhlmann.imgfloat.model.OauthSessionUser;
import dev.kruhlmann.imgfloat.model.Settings; import dev.kruhlmann.imgfloat.model.Settings;
import dev.kruhlmann.imgfloat.util.LogSanitizer;
import dev.kruhlmann.imgfloat.service.AuthorizationService; import dev.kruhlmann.imgfloat.service.AuthorizationService;
import dev.kruhlmann.imgfloat.service.ChannelDirectoryService; import dev.kruhlmann.imgfloat.service.ChannelDirectoryService;
import dev.kruhlmann.imgfloat.service.SettingsService;
import dev.kruhlmann.imgfloat.service.GitInfoService; import dev.kruhlmann.imgfloat.service.GitInfoService;
import dev.kruhlmann.imgfloat.service.SettingsService;
import dev.kruhlmann.imgfloat.service.VersionService; import dev.kruhlmann.imgfloat.service.VersionService;
import dev.kruhlmann.imgfloat.util.LogSanitizer;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken; import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
@@ -100,11 +100,7 @@ public class ViewController {
); );
String logBroadcaster = LogSanitizer.sanitize(broadcaster); String logBroadcaster = LogSanitizer.sanitize(broadcaster);
String logSessionUsername = LogSanitizer.sanitize(sessionUsername); String logSessionUsername = LogSanitizer.sanitize(sessionUsername);
LOG.info( LOG.info("Rendering admin console for {} (requested by {})", logBroadcaster, logSessionUsername);
"Rendering admin console for {} (requested by {})",
logBroadcaster,
logSessionUsername
);
Settings settings = settingsService.get(); Settings settings = settingsService.get();
model.addAttribute("broadcaster", broadcaster.toLowerCase()); model.addAttribute("broadcaster", broadcaster.toLowerCase());
model.addAttribute("username", sessionUsername); model.addAttribute("username", sessionUsername);

View File

@@ -64,7 +64,10 @@ public class AuthorizationService {
public void userIsSystemAdministratorOrThrowHttpError(String sessionUsername) { public void userIsSystemAdministratorOrThrowHttpError(String sessionUsername) {
if (!userIsSystemAdministrator(sessionUsername)) { if (!userIsSystemAdministrator(sessionUsername)) {
LOG.warn("Access denied for system administrator-only action by user {}", LogSanitizer.sanitize(sessionUsername)); LOG.warn(
"Access denied for system administrator-only action by user {}",
LogSanitizer.sanitize(sessionUsername)
);
throw new ResponseStatusException(FORBIDDEN, "You do not have permission to perform this action"); throw new ResponseStatusException(FORBIDDEN, "You do not have permission to perform this action");
} }
} }

View File

@@ -154,12 +154,8 @@ public class ChannelDirectoryService {
.orElse("asset_" + System.currentTimeMillis()); .orElse("asset_" + System.currentTimeMillis());
boolean isAudio = optimized.mediaType().startsWith("audio/"); boolean isAudio = optimized.mediaType().startsWith("audio/");
double width = optimized.width() > 0 double width = optimized.width() > 0 ? optimized.width() : isAudio ? 400 : 640;
? optimized.width() double height = optimized.height() > 0 ? optimized.height() : isAudio ? 80 : 360;
: isAudio ? 400 : 640;
double height = optimized.height() > 0
? optimized.height()
: isAudio ? 80 : 360;
Asset asset = new Asset(channel.getBroadcaster(), safeName, "", width, height); Asset asset = new Asset(channel.getBroadcaster(), safeName, "", width, height);
asset.setOriginalMediaType(mediaType); asset.setOriginalMediaType(mediaType);

View File

@@ -93,7 +93,7 @@ public class GitInfoService {
return null; return null;
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
LOG.debug("Thread interrupt during git command {}", String.join(" ", command), e); LOG.debug("Thread interrupt during git command {}", String.join(" ", command), e);
return null; return null;
} catch (IOException e) { } catch (IOException e) {

View File

@@ -89,10 +89,10 @@ function createWindow() {
app.whenReady().then(() => { app.whenReady().then(() => {
if (process.env.CI) { if (process.env.CI) {
process.on("uncaughtException", (err) => { process.on("uncaughtException", (err) => {
console.error("Uncaught exception:", err); console.error("Uncaught exception:", err);
app.exit(1); app.exit(1);
}); });
setTimeout(() => app.quit(), 3000); setTimeout(() => app.quit(), 3000);
} }
autoUpdater.checkForUpdatesAndNotify(); autoUpdater.checkForUpdatesAndNotify();

View File

@@ -1,4 +1,4 @@
(function() { (function () {
const CSRF_COOKIE_NAME = "XSRF-TOKEN"; const CSRF_COOKIE_NAME = "XSRF-TOKEN";
const DEFAULT_HEADER_NAME = "X-XSRF-TOKEN"; const DEFAULT_HEADER_NAME = "X-XSRF-TOKEN";
const SAFE_METHODS = new Set(["GET", "HEAD", "OPTIONS", "TRACE"]); const SAFE_METHODS = new Set(["GET", "HEAD", "OPTIONS", "TRACE"]);

View File

@@ -53,7 +53,9 @@
target="_blank" target="_blank"
>unknown</a >unknown</a
> >
<span class="version-badge" th:unless="${buildCommitUrl}" th:text="${buildCommitShort}">unknown</span> <span class="version-badge" th:unless="${buildCommitUrl}" th:text="${buildCommitShort}"
>unknown</span
>
</div> </div>
</footer> </footer>
</div> </div>