diff --git a/src/main/java/ru/oa2/lti/ApplicationService.java b/src/main/java/ru/oa2/lti/ApplicationService.java index 2bfcfef..9835836 100644 --- a/src/main/java/ru/oa2/lti/ApplicationService.java +++ b/src/main/java/ru/oa2/lti/ApplicationService.java @@ -3,6 +3,7 @@ package ru.oa2.lti; import jakarta.transaction.Transactional; import org.springframework.stereotype.Service; import ru.oa2.lti.model.LtiLogin; +import ru.oa2.lti.model.TaskData; import ru.oa2.lti.repository.LMSContentRepository; import ru.oa2.lti.repository.entities.LMSContent; import ru.oa2.lti.repository.entities.Task; @@ -38,8 +39,10 @@ public class ApplicationService { Collection tasks = lmsContent.getTasks(); //TODO добавить версию в Task и выбирать самую старшую и опубликованную - Object data = tasks.stream().findFirst().get().getData(); - return (String)data; + TaskData data = tasks.stream().findFirst().get().getData(); + + //TODO запуск initScript + return data.getDescription(); } else { return "Not Page"; } diff --git a/src/main/java/ru/oa2/lti/config/AppConfig.java b/src/main/java/ru/oa2/lti/config/AppConfig.java index 48a08e3..46ba29d 100644 --- a/src/main/java/ru/oa2/lti/config/AppConfig.java +++ b/src/main/java/ru/oa2/lti/config/AppConfig.java @@ -24,7 +24,7 @@ public class AppConfig { @Bean public JwtDecoder jwtDecoder() { return NimbusJwtDecoder - .withJwkSetUri(appProperties.lmsUri() + "/lti/keys") + .withJwkSetUri(appProperties.lmsUrl() + "/lti/keys") .build(); } @@ -40,7 +40,7 @@ public class AppConfig { @Bean public RestClient getRestClient(RestClient.Builder restClientBuilder) { return restClientBuilder - .baseUrl(appProperties.lmsUri()) + .baseUrl(appProperties.lmsUrl()) .defaultHeader(HttpHeaders.USER_AGENT, "LtiProvider") .defaultStatusHandler(HttpStatusCode::isError, (req, res) -> { throw new RuntimeException("API error: " + res.getStatusCode() + " body: " + diff --git a/src/main/java/ru/oa2/lti/config/AppProperties.java b/src/main/java/ru/oa2/lti/config/AppProperties.java index 795221f..8379364 100644 --- a/src/main/java/ru/oa2/lti/config/AppProperties.java +++ b/src/main/java/ru/oa2/lti/config/AppProperties.java @@ -4,6 +4,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties(prefix = "lti") public record AppProperties( - String lmsUri + String lmsUrl ) { } diff --git a/src/main/java/ru/oa2/lti/model/TaskData.java b/src/main/java/ru/oa2/lti/model/TaskData.java new file mode 100644 index 0000000..054b2ec --- /dev/null +++ b/src/main/java/ru/oa2/lti/model/TaskData.java @@ -0,0 +1,10 @@ +package ru.oa2.lti.model; + +import lombok.Data; + +@Data +public class TaskData { + String initScript; + String description; + String verificationScript; +} diff --git a/src/main/java/ru/oa2/lti/repository/entities/Task.java b/src/main/java/ru/oa2/lti/repository/entities/Task.java index 47735b8..92d9823 100644 --- a/src/main/java/ru/oa2/lti/repository/entities/Task.java +++ b/src/main/java/ru/oa2/lti/repository/entities/Task.java @@ -2,6 +2,9 @@ package ru.oa2.lti.repository.entities; import jakarta.persistence.*; import lombok.Getter; +import org.hibernate.annotations.JdbcTypeCode; +import org.hibernate.type.SqlTypes; +import ru.oa2.lti.model.TaskData; import ru.oa2.lti.model.TaskType; @Getter @@ -17,6 +20,7 @@ public class Task { @Enumerated(EnumType.STRING) TaskType taskType; + @JdbcTypeCode(SqlTypes.JSON) @Column(name = "data", columnDefinition = "jsonb") - Object data; + TaskData data; } diff --git a/src/main/java/ru/oa2/lti/service/jwt/TokenService.java b/src/main/java/ru/oa2/lti/service/jwt/TokenService.java index 8d6f45a..3cb85ea 100644 --- a/src/main/java/ru/oa2/lti/service/jwt/TokenService.java +++ b/src/main/java/ru/oa2/lti/service/jwt/TokenService.java @@ -28,7 +28,7 @@ public class TokenService { public String exchangeForAccessToken( String clientId) { - var endpointUrl = appProperties.lmsUri() + "/lti/token"; + var endpointUrl = appProperties.lmsUrl() + "/lti/token"; try { // Генерируем client_assertion @@ -74,7 +74,7 @@ public class TokenService { "&code=code1" + "&iss=" + iss + "&login_hint=" + loginHint + - "&redirect_uri=" + appProperties.lmsUri() + "/tool/lti/redirect" + + "&redirect_uri=" + appProperties.lmsUrl() + "/tool/lti/redirect" + "<i_message_hint=" + ltiLoginHint) .retrieve();