lti-provider/src/main/java/ru/oa2/lti/service/results/ResultServiceImpl.java

66 lines
2.4 KiB
Java

package ru.oa2.lti.service.results;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClient;
import ru.oa2.lti.service.jwt.IdTokenPayload;
import java.util.UUID;
@Slf4j
@Service
public class ResultServiceImpl implements ResultService {
private final RestClient restClient;
private final ObjectMapper mapper;
public ResultServiceImpl(RestClient client) {
this.restClient = client;
this.mapper = new ObjectMapper();
}
@Override
public void setResult(String accessToken, IdTokenPayload idToken) {
// http://openolat.local/lti/ags/b0d12061-2564-47a0-9291-b0d226f1eefe/context/112999233990970/lineitems/112999233990979/lineitem
var resp = restClient.get()
.uri("http://openolat.local/lti/ags/b0d12061-2564-47a0-9291-b0d226f1eefe/context/112999233990970/lineitems/112999233990979/lineitem")
.header("Authorization", "Bearer " + accessToken)
.header("Content-Type", "application/vnd.ims.lis.v1.score+json")
.header("Accept", "application/vnd.ims.lis.v1.score+json")
.retrieve();
var respBody = resp.toEntity(String.class).getBody();
try {
Lineitems lineitems = mapper.readValue(respBody, Lineitems.class);
String resourceId = "112999233990970"; //TODO
String userId = "efc0b988-cfe0-4d00-9466-cf86fcf8f885"; //TODO
var result = restClient
.post()
.uri(String.format("/lti/ags/%s/context/%s/lineitems/laba/lineitem/scores/x",
idToken.getContext().id(), resourceId))
.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()
)
)
.retrieve();
log.info("RESULT RESP: {}", result.toEntity(String.class));
} catch (Exception e) {
log.error(e.getMessage());
}
}
}