66 lines
2.4 KiB
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());
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|