diff --git a/pom.xml b/pom.xml
index 462a721..b6902cb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -64,6 +64,11 @@
42.7.8
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+
+
diff --git a/src/main/java/ru/oa2/lti/config/MapperConfig.java b/src/main/java/ru/oa2/lti/config/MapperConfig.java
new file mode 100644
index 0000000..9ce76bb
--- /dev/null
+++ b/src/main/java/ru/oa2/lti/config/MapperConfig.java
@@ -0,0 +1,19 @@
+package ru.oa2.lti.config;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MapperConfig {
+
+ @Bean
+ public ObjectMapper getMapper() {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new JavaTimeModule());
+ mapper.disable(com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+
+ return mapper;
+ }
+}
diff --git a/src/main/java/ru/oa2/lti/service/results/ResultServiceImpl.java b/src/main/java/ru/oa2/lti/service/results/ResultServiceImpl.java
index b206d1a..e10d710 100644
--- a/src/main/java/ru/oa2/lti/service/results/ResultServiceImpl.java
+++ b/src/main/java/ru/oa2/lti/service/results/ResultServiceImpl.java
@@ -5,8 +5,12 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClient;
import ru.oa2.lti.service.jwt.IdTokenPayload;
+import ru.oa2.lti.service.results.dto.GradingType;
+import ru.oa2.lti.service.results.dto.Lineitems;
+import ru.oa2.lti.service.results.dto.ProgressType;
+import ru.oa2.lti.service.results.dto.ResultRequest;
-import java.util.UUID;
+import java.time.LocalDateTime;
@Slf4j
@Service
@@ -15,9 +19,9 @@ public class ResultServiceImpl implements ResultService {
private final RestClient restClient;
private final ObjectMapper mapper;
- public ResultServiceImpl(RestClient client) {
+ public ResultServiceImpl(RestClient client, ObjectMapper mapper) {
this.restClient = client;
- this.mapper = new ObjectMapper();
+ this.mapper = mapper;
}
@Override
@@ -40,6 +44,18 @@ public class ResultServiceImpl implements ResultService {
String resourceId = "112999233990970"; //TODO
String userId = "efc0b988-cfe0-4d00-9466-cf86fcf8f885"; //TODO
+
+ var body = mapper.writeValueAsString(
+ ResultRequest.builder()
+ .scoreGiven(1L)
+ .scoreMaximum(1L)
+ .activityProgress(ProgressType.Completed)
+ .gradingProgress(GradingType.FullyGraded)
+ .timestamp(LocalDateTime.now())
+ .userId(userId)
+ .build()
+ );
+
var result = restClient
.post()
.uri(String.format("/lti/ags/%s/context/%s/lineitems/laba/lineitem/scores/x",
@@ -47,13 +63,9 @@ public class ResultServiceImpl implements ResultService {
.header("Authorization", "Bearer " + accessToken)
.header("Content-Type", "application/vnd.ims.lis.v1.score+json")
.header("Accept", "application/vnd.ims.lis.v1.score+json")
- .body(
- String.format(
- "{\"id\":\"%s\", \"userId\": \"%s\", \"scoreMaximum\": 1, \"label\":\"LTI page 1\", \"resourceId\": \"%s\"}",
- lineitems.id(), userId, lineitems.resourceId()
- )
- )
+ .body(body)
.retrieve();
+
log.info("RESULT RESP: {}", result.toEntity(String.class));
} catch (Exception e) {
log.error(e.getMessage());
diff --git a/src/main/java/ru/oa2/lti/service/results/dto/GradingType.java b/src/main/java/ru/oa2/lti/service/results/dto/GradingType.java
new file mode 100644
index 0000000..be43d2a
--- /dev/null
+++ b/src/main/java/ru/oa2/lti/service/results/dto/GradingType.java
@@ -0,0 +1,9 @@
+package ru.oa2.lti.service.results.dto;
+
+public enum GradingType {
+ NotStarted,
+ Pending,
+ PendingManual,
+ Failed,
+ FullyGraded
+}
diff --git a/src/main/java/ru/oa2/lti/service/results/Lineitems.java b/src/main/java/ru/oa2/lti/service/results/dto/Lineitems.java
similarity index 70%
rename from src/main/java/ru/oa2/lti/service/results/Lineitems.java
rename to src/main/java/ru/oa2/lti/service/results/dto/Lineitems.java
index b99c310..6ca5e3b 100644
--- a/src/main/java/ru/oa2/lti/service/results/Lineitems.java
+++ b/src/main/java/ru/oa2/lti/service/results/dto/Lineitems.java
@@ -1,4 +1,4 @@
-package ru.oa2.lti.service.results;
+package ru.oa2.lti.service.results.dto;
public record Lineitems(
String id,
diff --git a/src/main/java/ru/oa2/lti/service/results/dto/ProgressType.java b/src/main/java/ru/oa2/lti/service/results/dto/ProgressType.java
new file mode 100644
index 0000000..331dda2
--- /dev/null
+++ b/src/main/java/ru/oa2/lti/service/results/dto/ProgressType.java
@@ -0,0 +1,8 @@
+package ru.oa2.lti.service.results.dto;
+
+public enum ProgressType {
+ Initialized,
+ Started,
+ Submitted,
+ Completed
+}
diff --git a/src/main/java/ru/oa2/lti/service/results/dto/ResultRequest.java b/src/main/java/ru/oa2/lti/service/results/dto/ResultRequest.java
new file mode 100644
index 0000000..9e4d73e
--- /dev/null
+++ b/src/main/java/ru/oa2/lti/service/results/dto/ResultRequest.java
@@ -0,0 +1,18 @@
+package ru.oa2.lti.service.results.dto;
+
+
+import lombok.Builder;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@Builder
+public class ResultRequest {
+ long scoreGiven;
+ long scoreMaximum;
+ ProgressType activityProgress;
+ GradingType gradingProgress;
+ LocalDateTime timestamp;
+ String userId;
+}