[Trunk | Orcid Service]:
1. orcidservice.properties: Added properties "apiURL", "tokenURL", "clientId", "clientSecret" for ORCID API. 2. log4j.properties: Added configuration for ORCID log file "uoa-orcid-service-orcid.log". 3. UoaOrcidServiceApplication.java: Added "OrcidConfig.class" in "@EnableConfigurationProperties". 4. SimpleErrorController.java: If body.path.contains("/uoa-orcid-service/orcid"), log error in ORCID log file too. 5. UserTokensService.java: Added method "getEncryptedUserTokensByAai()". 6. UserTokensController.java: a. Added ORCID log file for responses by ORCID API. b. Added @Autowired OrcidConfig for getting ORICD token url, client and secret from properties. c. Added method "getUserOrcidId()" (/local/orcidId) d. Added method "getPersonalDetailsFromOrcid()" (/orcid/personal-details) e. Renamed "/orcid/tokens/decrypt" to "/local/tokens/decrypt" & "/orcid/tokens/encrypt" to "/local/tokens/encrypt". 7. Work.java: Added field "updateDate". 8. WorkDAO.java & MongoDBWorkDAO.java: Added methods "List<Work> findByOrcidOrderByCreationDateDesc(String Orcid);" and "Work findByPutCode(String putCode);". 9. WorkService.java: a. Added method "getLocalWorkByPutCode()". b. Method "getLocalWorks()" returns works ordered by most recent creation date. 10. WorkController.java: a. Added ORCID log file for responses by ORCID API. b. Added @Autowired OrcidConfig for getting ORICD token url, client and secret from properties. c. Added "charset=UTF-8" in all Content-Type request headers. d. Renamed "/orcid/put-code" to "/local/put-code". e. Added method "List<List<Work>> getLocalWorks(@RequestBody String[][] pids)" (/local/works). f. Added method "List<Work> getMyLocalWorks()" (/local/works). g. Added method "updateWork()" (/orcid/work/update/{putCode}). h. Added method "getWorksByPutCodes()" (/orcid/works).
This commit is contained in:
parent
93acb15d2d
commit
d86ea2a8fa
|
@ -3,6 +3,7 @@ package eu.dnetlib.uoaorcidservice;
|
|||
import eu.dnetlib.uoaauthorizationlibrary.configuration.AuthorizationConfiguration;
|
||||
import eu.dnetlib.uoaorcidservice.configuration.properties.MongoConfig;
|
||||
//import eu.dnetlib.uoaauthorizationlibrary.configuration.AuthorizationConfiguration;
|
||||
import eu.dnetlib.uoaorcidservice.configuration.properties.OrcidConfig;
|
||||
import eu.dnetlib.uoaorcidservice.handlers.utils.AESUtils;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
@ -16,7 +17,7 @@ import org.springframework.context.annotation.PropertySources;
|
|||
@PropertySource("classpath:orcidservice.properties"),
|
||||
@PropertySource(value = "classpath:dnet-override.properties", ignoreResourceNotFound = true)
|
||||
})
|
||||
@EnableConfigurationProperties({MongoConfig.class, AESUtils.class})
|
||||
@EnableConfigurationProperties({MongoConfig.class, AESUtils.class, OrcidConfig.class})
|
||||
@Import(AuthorizationConfiguration.class)
|
||||
public class UoaOrcidServiceApplication {
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ import java.util.Map;
|
|||
@RequestMapping("/error")
|
||||
public class SimpleErrorController implements ErrorController {
|
||||
private final Logger log = Logger.getLogger(this.getClass());
|
||||
private final Logger orcid_log = Logger.getLogger("ORCID-"+this.getClass().getName());
|
||||
|
||||
private final ErrorAttributes errorAttributes;
|
||||
|
||||
|
@ -57,15 +58,18 @@ public class SimpleErrorController implements ErrorController {
|
|||
// message=Unknown status code [525] Origin SSL Handshake Error,
|
||||
// path=/uoa-orcid-service/orcid/work/save}
|
||||
|
||||
log.debug(body);
|
||||
log.debug(body.get("status"));
|
||||
String path = (String)body.get("path");
|
||||
if(path.contains("/uoa-orcid-service/orcid")) {
|
||||
orcid_log.error(body);
|
||||
} else {
|
||||
log.error(body);
|
||||
}
|
||||
|
||||
Integer status = (Integer)body.get("status");
|
||||
log.debug("status: "+status);
|
||||
|
||||
HttpStatus statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
|
||||
if (status != null) {
|
||||
statusCode = HttpStatus.valueOf(status);
|
||||
log.debug(statusCode);
|
||||
}
|
||||
|
||||
ExceptionResponse response = new ExceptionResponse();
|
||||
|
@ -73,7 +77,7 @@ public class SimpleErrorController implements ErrorController {
|
|||
response.setErrorMessage((String)body.get("exception"));
|
||||
response.setErrors((String)body.get("message"));
|
||||
response.setStatus(statusCode);
|
||||
log.error((String)body.get("exception")+" : "+ (String)body.get("message"));
|
||||
// log.error((String)body.get("exception")+" : "+ (String)body.get("message"));
|
||||
return new ResponseEntity<ExceptionResponse>(response, statusCode);
|
||||
|
||||
// return body;
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
package eu.dnetlib.uoaorcidservice.controllers;
|
||||
|
||||
import eu.dnetlib.uoaorcidservice.configuration.properties.OrcidConfig;
|
||||
import eu.dnetlib.uoaorcidservice.entities.UserTokens;
|
||||
import eu.dnetlib.uoaorcidservice.handlers.utils.AESUtils;
|
||||
import eu.dnetlib.uoaorcidservice.responses.SingleValueWrapperResponse;
|
||||
import eu.dnetlib.uoaorcidservice.services.UserTokensService;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.security.access.AuthorizationServiceException;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.client.DefaultResponseErrorHandler;
|
||||
|
@ -23,10 +26,14 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/orcid")
|
||||
//@RequestMapping("/orcid")
|
||||
@CrossOrigin(origins = "*")
|
||||
public class UserTokensController {
|
||||
private final Logger log = Logger.getLogger(this.getClass());
|
||||
private final Logger orcid_log = Logger.getLogger("ORCID-"+this.getClass().getName());
|
||||
|
||||
@Autowired
|
||||
private OrcidConfig orcidConfig;
|
||||
|
||||
@Autowired
|
||||
private UserTokensService userTokensService;
|
||||
|
@ -41,14 +48,26 @@ public class UserTokensController {
|
|||
// return "\""+userTokensService.getUserAccessToken(orcid)+"\"";
|
||||
// }
|
||||
|
||||
@RequestMapping(value = "/local/orcidId", method = RequestMethod.GET)
|
||||
public SingleValueWrapperResponse<String> getUserOrcidId() throws BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, IOException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException {
|
||||
UserTokens userTokens = userTokensService.getUserTokens();
|
||||
if(userTokens == null) {
|
||||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
String userOrcid = userTokens.getOrcid();
|
||||
return new SingleValueWrapperResponse<String>(userOrcid);
|
||||
}
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@RequestMapping(value = "/token/save", method = RequestMethod.GET)
|
||||
public String saveUserTokens(@RequestParam String code) throws BadPaddingException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, IllegalBlockSizeException, NoSuchPaddingException, InvalidKeyException, InvalidKeySpecException, IOException {
|
||||
@RequestMapping(value = "/orcid/token/save", method = RequestMethod.GET)
|
||||
public String saveUserTokens(@RequestParam String code
|
||||
// , @RequestParam String redirect_uri
|
||||
) throws BadPaddingException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, IllegalBlockSizeException, NoSuchPaddingException, InvalidKeyException, InvalidKeySpecException, IOException {
|
||||
log.debug("saveUserTokens: code="+code);
|
||||
|
||||
String url = "https://sandbox.orcid.org/oauth/token";
|
||||
String clientId = "APP-A5M3KTX6NCN67L91";
|
||||
String clientSecret = "96b20d71-ae06-4286-bb00-9172536c1ad4";
|
||||
String url = orcidConfig.getTokenURL();//"https://sandbox.orcid.org/oauth/token";
|
||||
String clientId = orcidConfig.getClientId();//"APP-A5M3KTX6NCN67L91";
|
||||
String clientSecret = orcidConfig.getClientSecret();//"96b20d71-ae06-4286-bb00-9172536c1ad4";
|
||||
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
|
@ -64,96 +83,85 @@ public class UserTokensController {
|
|||
"client_id="+clientId
|
||||
+"&client_secret="+clientSecret
|
||||
+"&grant_type=authorization_code"
|
||||
+"&code="+code
|
||||
+"&redirect_uri=http://duffy.di.uoa.gr:4300/orcid";
|
||||
log.debug(inputString);
|
||||
+"&code="+code;
|
||||
// +"&redirect_uri="+redirect_uri;//http://duffy.di.uoa.gr:4300/orcid";
|
||||
|
||||
HttpEntity<String> request = new HttpEntity<>(inputString, headers);
|
||||
//logger.info(restTemplate.exchange(fooResourceUrl, HttpMethod.GET, request, Object.class));
|
||||
orcid_log.info("url: "+url);
|
||||
orcid_log.info("request: "+request);
|
||||
|
||||
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, request, String.class);
|
||||
if(response.getStatusCode() != HttpStatus.OK) {
|
||||
log.debug("User tokens response code is: " + response.getStatusCode());
|
||||
log.debug(response.getBody());
|
||||
orcid_log.error("User tokens response code is: " + response.getStatusCode());
|
||||
orcid_log.error("Unexpected Response: "+response.getBody());
|
||||
return null;
|
||||
} else {
|
||||
log.debug(response);
|
||||
orcid_log.info("Response: "+response);
|
||||
|
||||
UserTokens userTokens = userTokensService.json2UserTokens(response.getBody().toString());
|
||||
userTokensService.saveUserTokens(userTokens);
|
||||
|
||||
return "\""+userTokens.getAccessToken()+"\"";
|
||||
}
|
||||
|
||||
// try {
|
||||
// URL obj = new URL(url);
|
||||
//
|
||||
// HttpURLConnection con = (HttpURLConnection) obj.openConnection();
|
||||
// con.setRequestMethod("POST");
|
||||
// con.setDoOutput(true);
|
||||
// con.setInstanceFollowRedirects(true);
|
||||
// con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
||||
// con.setRequestProperty("Accept", "application/json");
|
||||
//
|
||||
// String inputString =
|
||||
// "client_id="+clientId
|
||||
// +"&client_secret="+clientSecret
|
||||
// +"&grant_type=authorization_code"
|
||||
// +"&code="+code
|
||||
// +"&redirect_uri=http://duffy.di.uoa.gr:4300/orcid";
|
||||
//
|
||||
// log.debug(inputString);
|
||||
//
|
||||
// try(OutputStream os = con.getOutputStream()) {
|
||||
//// byte[] input = inputString.getBytes();
|
||||
//// os.write(inputString, 0, inputString.length());
|
||||
//
|
||||
// OutputStreamWriter osw = new OutputStreamWriter(os);
|
||||
// osw.write(inputString);
|
||||
// osw.flush();
|
||||
// osw.close();
|
||||
//
|
||||
// os.close(); //don't forget to close the OutputStream
|
||||
// log.debug("http request body added");
|
||||
// } catch (Exception e) {
|
||||
// log.error("Failed to add http request body", e);
|
||||
// }
|
||||
//
|
||||
// con.connect();
|
||||
//
|
||||
//// log.debug(con.getRequestMethod());
|
||||
//// log.debug(con.getErrorStream());
|
||||
//// log.debug(con.getContent());
|
||||
//
|
||||
//
|
||||
// if (con.getResponseCode() != 200) {
|
||||
// log.debug("User tokens response code is: " + con.getResponseCode());
|
||||
// return null;
|
||||
// } else {
|
||||
// BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
||||
// StringBuilder response = new StringBuilder();
|
||||
// String inputLine;
|
||||
// while ((inputLine = in.readLine()) != null) {
|
||||
// response.append(inputLine).append("\n");
|
||||
// }
|
||||
// in.close();
|
||||
// log.debug(response);
|
||||
//
|
||||
// UserTokens userTokens = userTokensService.json2UserTokens(response.toString());
|
||||
// userTokensService.saveUserTokens(userTokens);
|
||||
//
|
||||
// return "\""+userTokens.getAccessToken()+"\"";
|
||||
// }
|
||||
//
|
||||
// } catch (Exception e) {
|
||||
// log.error("An error occured while trying to fetch user tokens ", e);
|
||||
// return null;
|
||||
// }
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/orcid/personal-details", method = RequestMethod.GET)
|
||||
public String getPersonalDetailsFromOrcid() throws BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, IOException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException {
|
||||
log.debug("getPersonalDetailsFromOrcid");
|
||||
|
||||
UserTokens userTokens = userTokensService.getUserTokens();
|
||||
if(userTokens == null) {
|
||||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
String userOrcid = userTokens.getOrcid();
|
||||
String userAccessToken = userTokens.getAccessToken();
|
||||
|
||||
if(userOrcid == null || userAccessToken == null) {
|
||||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
|
||||
// log.debug("Access token: " + userAccessToken);
|
||||
// log.debug("User orcid: " + userOrcid);
|
||||
|
||||
String url = orcidConfig.getApiURL()+userOrcid+"/personal-details";
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
|
||||
protected boolean hasError(HttpStatus statusCode) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("Accept", "application/json");
|
||||
headers.add("Authorization", "Bearer " + userAccessToken);
|
||||
headers.add("Content-Type", "application/orcid+json");
|
||||
HttpEntity<String> request = new HttpEntity<>(headers);
|
||||
|
||||
orcid_log.info("request: "+request);
|
||||
orcid_log.info("url: "+url);
|
||||
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
|
||||
if (response.getStatusCode() != HttpStatus.OK) {
|
||||
orcid_log.error("Getting user details response code is: " + response.getStatusCode());
|
||||
orcid_log.error("Unexpected Response: "+response.getBody());
|
||||
return null;
|
||||
} else {
|
||||
orcid_log.info("response: "+response);
|
||||
return response.getBody().toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@RequestMapping(value = "/tokens/decrypt", method = RequestMethod.GET)
|
||||
@RequestMapping(value = "/local/tokens/decrypt", method = RequestMethod.GET)
|
||||
public UserTokens decryptToken(@RequestParam String aaiId) throws NoSuchPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, BadPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException, IOException {
|
||||
return userTokensService.getUserTokensByAai(aaiId);
|
||||
}
|
||||
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@RequestMapping(value = "/local/tokens/encrypt", method = RequestMethod.GET)
|
||||
public UserTokens encryptToken(@RequestParam String aaiId) throws NoSuchPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, BadPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException, IOException {
|
||||
UserTokens userTokens = userTokensService.getEncryptedUserTokensByAai(aaiId);
|
||||
return userTokensService.encryptTokens(userTokens);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package eu.dnetlib.uoaorcidservice.controllers;
|
|||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import eu.dnetlib.uoaorcidservice.configuration.properties.OrcidConfig;
|
||||
import eu.dnetlib.uoaorcidservice.entities.ResultIdAndWork;
|
||||
import eu.dnetlib.uoaorcidservice.entities.UserTokens;
|
||||
import eu.dnetlib.uoaorcidservice.entities.Work;
|
||||
|
@ -11,8 +12,10 @@ import eu.dnetlib.uoaorcidservice.services.UserTokensService;
|
|||
import eu.dnetlib.uoaorcidservice.services.WorkService;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.util.Pair;
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
||||
import org.springframework.security.access.AccessDeniedException;
|
||||
import org.springframework.security.access.AuthorizationServiceException;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
@ -28,15 +31,17 @@ import java.security.InvalidAlgorithmParameterException;
|
|||
import java.security.InvalidKeyException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/orcid")
|
||||
//@RequestMapping("/orcid")
|
||||
@CrossOrigin(origins = "*")
|
||||
public class WorkController {
|
||||
private final Logger log = Logger.getLogger(this.getClass());
|
||||
private final Logger orcid_log = Logger.getLogger("ORCID-"+this.getClass().getName());
|
||||
|
||||
@Autowired
|
||||
private OrcidConfig orcidConfig;
|
||||
|
||||
@Autowired
|
||||
private UserTokensService userTokensService;
|
||||
|
@ -45,7 +50,7 @@ public class WorkController {
|
|||
private WorkService workService;
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@RequestMapping(value = "put-code", method = RequestMethod.GET)
|
||||
@RequestMapping(value = "/local/put-code", method = RequestMethod.GET)
|
||||
public List<String> getPutCode(@RequestParam String[] pids) {
|
||||
String userOrcid = userTokensService.getCurrentUserOrcid();
|
||||
List<Work> works = workService.getWorks(pids, userOrcid);
|
||||
|
@ -60,7 +65,7 @@ public class WorkController {
|
|||
}
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@RequestMapping(value = "put-codes", method = RequestMethod.POST)
|
||||
@RequestMapping(value = "/local/put-codes", method = RequestMethod.POST)
|
||||
public List<List<String>> getPutCodes(@RequestBody String[][] pids) {
|
||||
String userOrcid = userTokensService.getCurrentUserOrcid();
|
||||
List<List<String>> putCodes = new ArrayList();
|
||||
|
@ -80,8 +85,24 @@ public class WorkController {
|
|||
}
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@RequestMapping(value = "/work/save", method = RequestMethod.POST)
|
||||
public String saveWork(@RequestBody String resultString) throws IOException, BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException {
|
||||
@RequestMapping(value = "/local/works", method = RequestMethod.POST)
|
||||
public List<List<Work>> getLocalWorks(@RequestBody String[][] pids) {
|
||||
String userOrcid = userTokensService.getCurrentUserOrcid();
|
||||
if(userOrcid == null) {
|
||||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
|
||||
List<List<Work>> returnedWorks = new ArrayList();
|
||||
for(int i=0; i<pids.length; i++) {
|
||||
List<Work> works = workService.getWorks(pids[i], userOrcid);
|
||||
returnedWorks.add(works);
|
||||
}
|
||||
return returnedWorks;
|
||||
}
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@RequestMapping(value = "/orcid/work/save", method = RequestMethod.POST)
|
||||
public Work saveWork(@RequestBody String resultString) throws Exception {
|
||||
log.debug("saveWork: result = " + resultString);
|
||||
|
||||
Gson gson = new GsonBuilder().create();
|
||||
|
@ -98,8 +119,8 @@ public class WorkController {
|
|||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
|
||||
log.debug("Access token: " + userAccessToken);
|
||||
log.debug("User orcid: " + userOrcid);
|
||||
// log.debug("Access token: " + userAccessToken);
|
||||
// log.debug("User orcid: " + userOrcid);
|
||||
|
||||
String url = "https://api.sandbox.orcid.org/v3.0/" + userOrcid + "/work";
|
||||
|
||||
|
@ -109,6 +130,7 @@ public class WorkController {
|
|||
restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
|
||||
protected boolean hasError(HttpStatus statusCode) {
|
||||
if(statusCode == HttpStatus.UNAUTHORIZED) {
|
||||
orcid_log.error("ORCID service returned UNAUTHORIZED: "+HttpStatus.UNAUTHORIZED);
|
||||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
return false;
|
||||
|
@ -117,186 +139,164 @@ public class WorkController {
|
|||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("Authorization", "Bearer " + userAccessToken);
|
||||
headers.add("Content-Type", "application/orcid+json;charset=UTF-8");
|
||||
log.debug(headers.get("Authorization"));
|
||||
|
||||
HttpEntity<String> request = new HttpEntity<>(gson.toJson(result.getWork()), headers);
|
||||
//logger.info(restTemplate.exchange(fooResourceUrl, HttpMethod.GET, request, Object.class));
|
||||
|
||||
orcid_log.info("request: "+request);
|
||||
orcid_log.info("url: "+url);
|
||||
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, request, String.class);
|
||||
|
||||
if (response.getStatusCode() != HttpStatus.CREATED) {
|
||||
log.debug("Saving work response code is: " + response.getStatusCode());
|
||||
log.debug(response.getBody());
|
||||
orcid_log.error("Saving work response code is: " + response.getStatusCode());
|
||||
orcid_log.error("Unexpected Response: "+response.getBody());
|
||||
|
||||
if(response.getStatusCode() == HttpStatus.UNAUTHORIZED) {
|
||||
throw new AuthorizationServiceException("You are not allowed to save work");
|
||||
}
|
||||
if(response.getStatusCode() == HttpStatus.CONFLICT) {
|
||||
} else if(response.getStatusCode() == HttpStatus.CONFLICT) {
|
||||
throw new ConflictException("Work is already saved");
|
||||
} else {
|
||||
throw new Exception("Internal server error");
|
||||
}
|
||||
return null;
|
||||
// return null;
|
||||
} else {
|
||||
orcid_log.info("Response: "+response);
|
||||
// log.debug("[success] Saving work response code is: " + response.getStatusCode());
|
||||
// log.debug(response.toString());
|
||||
|
||||
log.debug("[success] Saving work response code is: " + response.getStatusCode());
|
||||
log.debug(response.toString());
|
||||
Date date = new Date();
|
||||
|
||||
Work workToSave = new Work();
|
||||
workToSave.setPids(result.getPids());
|
||||
workToSave.setOrcid(userOrcid);
|
||||
workToSave.setCreationDate(new Date());
|
||||
workToSave.setCreationDate(date);
|
||||
workToSave.setUpdateDate(date);
|
||||
|
||||
HttpHeaders responseHeaders = response.getHeaders();
|
||||
String locationPath = responseHeaders.getLocation().toString();
|
||||
String[] locationPathArray = locationPath.split("/");
|
||||
workToSave.setPutCode(locationPathArray[locationPathArray.length - 1]);
|
||||
|
||||
log.debug(gson.toJson(result.getPids()));
|
||||
log.debug(responseHeaders.getLocation().toString());
|
||||
log.debug(gson.toJson(workToSave));
|
||||
// log.debug(gson.toJson(result.getPids()));
|
||||
// log.debug(responseHeaders.getLocation().toString());
|
||||
// log.debug(gson.toJson(workToSave));
|
||||
|
||||
workService.saveWork(workToSave);
|
||||
|
||||
return "\""+workToSave.getPutCode()+"\"";
|
||||
return workToSave;
|
||||
// return "\""+workToSave.getPutCode()+"\"";
|
||||
}
|
||||
}
|
||||
|
||||
// @RequestMapping(value = "/{orcid}/work/{putCode}", method = RequestMethod.PUT)
|
||||
// public String updateWork(@PathVariable String orcid,
|
||||
// @PathVariable String putCode,
|
||||
// @RequestBody String work) throws AccessDeniedException {
|
||||
// log.debug("updateWork: orcid = " + orcid + " - putCode = " + putCode);
|
||||
//
|
||||
// String userAccessToken = userTokensService.getUserAccessToken(orcid);
|
||||
// log.debug("Access token: " + userAccessToken);
|
||||
//
|
||||
//// String url = "https://sandbox.orcid.org/v3.0/" + orcid.toString() + "/works";
|
||||
// String url = "https://api.sandbox.orcid.org/v3.0/" + orcid + "/work/" + putCode;
|
||||
//
|
||||
// RestTemplate restTemplate = new RestTemplate();
|
||||
// restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
|
||||
// protected boolean hasError(HttpStatus statusCode) {
|
||||
// return false;
|
||||
// }
|
||||
// });
|
||||
// HttpHeaders headers = new HttpHeaders();
|
||||
//// headers.add("Accept", "application/json");
|
||||
// headers.add("Authorization", "Bearer " + userAccessToken);
|
||||
// headers.add("Content-Type","application/orcid+json");
|
||||
//
|
||||
// HttpEntity<String> request = new HttpEntity<>(work, headers);
|
||||
// //logger.info(restTemplate.exchange(fooResourceUrl, HttpMethod.GET, request, Object.class));
|
||||
// ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.PUT, request, String.class);
|
||||
// if (response.getStatusCode() != HttpStatus.OK) {
|
||||
// log.debug("Updating work response code is: " + response.getStatusCode());
|
||||
// return null;
|
||||
// } else {
|
||||
// log.debug(response);
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// }
|
||||
@RequestMapping(value = "/orcid/work/update/{putCode}", method = RequestMethod.POST)
|
||||
public Work updateWork(@PathVariable String putCode,
|
||||
@RequestBody String resultString) throws AccessDeniedException, BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, IOException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException {
|
||||
log.debug("updateWork: putCode = " + putCode);
|
||||
|
||||
// @RequestMapping(value = "/works/save", method = RequestMethod.POST)
|
||||
// public String saveWorks(@RequestBody String works) {
|
||||
// log.debug("saveWorks");
|
||||
//
|
||||
// String userAccessToken = userTokensService.getUserAccessToken(null);
|
||||
// log.debug("Access token: " + userAccessToken);
|
||||
// log.debug(works);
|
||||
//
|
||||
// String url = "https://api.sandbox.orcid.org/v3.0/0000-0001-9541-4617/work";
|
||||
//
|
||||
// RestTemplate restTemplate = new RestTemplate();
|
||||
// restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
|
||||
// protected boolean hasError(HttpStatus statusCode) {
|
||||
// return false;
|
||||
// }
|
||||
// });
|
||||
// HttpHeaders headers = new HttpHeaders();
|
||||
// headers.add("Authorization", "Bearer " + userAccessToken);
|
||||
// headers.add("Content-Type", "application/json");
|
||||
//// List<MediaType> list = new ArrayList();
|
||||
//// list.add(MediaType.TEXT_HTML);
|
||||
//// headers.setAccept(list);
|
||||
//
|
||||
//
|
||||
// HttpEntity<String> request = new HttpEntity<>(works.toString(), headers);
|
||||
//
|
||||
//// log.debug(restTemplate.exchange(url, HttpMethod.POST, request, Object.class));
|
||||
//
|
||||
// ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, request, String.class);
|
||||
// if (response.getStatusCode() != HttpStatus.OK) {
|
||||
// log.debug("Saving works response code is: " + response.getStatusCode());
|
||||
// log.debug(response.getBody().toString());
|
||||
// return null;
|
||||
// } else {
|
||||
// log.debug("[success] Saving works response code is: " + response.getStatusCode());
|
||||
// log.debug(response.toString());
|
||||
//
|
||||
// return response.toString();
|
||||
// }
|
||||
// }
|
||||
Gson gson = new GsonBuilder().create();
|
||||
ResultIdAndWork result = gson.fromJson(resultString, ResultIdAndWork.class);
|
||||
|
||||
UserTokens userTokens = userTokensService.getUserTokens();
|
||||
if(userTokens == null) {
|
||||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
String userOrcid = userTokens.getOrcid();
|
||||
String userAccessToken = userTokens.getAccessToken();
|
||||
|
||||
if(userOrcid == null || userAccessToken == null) {
|
||||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
|
||||
// @RequestMapping(value = "/works", method = RequestMethod.GET)
|
||||
// public String getAllWorks(@RequestParam String orcid) {
|
||||
// log.debug("getAllWorks: orcid = |" + orcid + "|");
|
||||
//
|
||||
// String userAccessToken = userTokensService.getUserAccessToken(orcid);
|
||||
// log.debug("Access token: " + userAccessToken);
|
||||
//
|
||||
//// String url = "https://sandbox.orcid.org/v3.0/" + orcid.toString() + "/works";
|
||||
// String url = "https://api.sandbox.orcid.org/v3.0/"+orcid+"/works";
|
||||
//
|
||||
// RestTemplate restTemplate = new RestTemplate();
|
||||
// restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
|
||||
// protected boolean hasError(HttpStatus statusCode) {
|
||||
// return false;
|
||||
// }
|
||||
// });
|
||||
// HttpHeaders headers = new HttpHeaders();
|
||||
// log.debug("User orcid: " + userOrcid);
|
||||
|
||||
// String url = "https://sandbox.orcid.org/v3.0/" + orcid.toString() + "/works";
|
||||
// String url = "https://api.sandbox.orcid.org/v3.0/" + userOrcid + "/work/" + putCode;
|
||||
String url = orcidConfig.getApiURL() + userOrcid + "/work/" + putCode;
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
|
||||
protected boolean hasError(HttpStatus statusCode) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
// headers.add("Accept", "application/json");
|
||||
// headers.add("Authorization", "Bearer " + userAccessToken);
|
||||
// headers.add("Content-Type", "application/orcid+json");
|
||||
// log.debug(headers.get("Authorization"));
|
||||
// HttpEntity<String> request = new HttpEntity<>(headers);
|
||||
// //logger.info(restTemplate.exchange(fooResourceUrl, HttpMethod.GET, request, Object.class));
|
||||
// ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
|
||||
// if (response.getStatusCode() != HttpStatus.OK) {
|
||||
// log.debug("Getting works response code is: " + response.getStatusCode());
|
||||
headers.add("Authorization", "Bearer " + userAccessToken);
|
||||
headers.add("Content-Type", "application/orcid+json;charset=UTF-8");
|
||||
|
||||
HttpEntity<String> request = new HttpEntity<>(gson.toJson(result.getWork()), headers);
|
||||
orcid_log.info("request: "+request);
|
||||
orcid_log.info("url: "+url);
|
||||
|
||||
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.PUT, request, String.class);
|
||||
if (response.getStatusCode() != HttpStatus.OK) {
|
||||
orcid_log.error("Updating work response code is: " + response.getStatusCode());
|
||||
orcid_log.error("Unexpected Response: "+response.getBody());
|
||||
return null;
|
||||
} else {
|
||||
orcid_log.info("Response: "+response);
|
||||
Date date = new Date();
|
||||
|
||||
Work localWork = workService.getLocalWorkByPutCode(putCode);
|
||||
localWork.setPids(result.getPids());
|
||||
localWork.setUpdateDate(date);
|
||||
|
||||
workService.saveWork(localWork);
|
||||
return localWork;
|
||||
// return null;
|
||||
// } else {
|
||||
// log.debug(response);
|
||||
// return response.getBody().toString();
|
||||
// }
|
||||
//
|
||||
//// try {
|
||||
//// URL obj = new URL(url);
|
||||
////
|
||||
//// HttpURLConnection con = (HttpURLConnection) obj.openConnection();
|
||||
//// con.setRequestProperty("Accept", "application/json");
|
||||
//// con.setRequestProperty("Content-Type", "application/orcid+json");
|
||||
//// con.setRequestProperty("Authorization", "Bearer "+userAccessToken);
|
||||
////
|
||||
//// if (con.getResponseCode() != 200) {
|
||||
//// log.debug("Getting works response code is: " + con.getResponseCode());
|
||||
//// return null;
|
||||
//// }
|
||||
//// BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
||||
//// StringBuilder response = new StringBuilder();
|
||||
//// String inputLine;
|
||||
//// while ((inputLine = in.readLine()) != null) {
|
||||
//// response.append(inputLine).append("\n");
|
||||
//// }
|
||||
//// in.close();
|
||||
//// log.debug(response);
|
||||
//// return response;
|
||||
//// } catch (Exception e) {
|
||||
//// log.error("An error occured while trying to fetch works for orcid: "+orcid, e);
|
||||
//// return null;
|
||||
//// }
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/orcid/works", method = RequestMethod.GET)
|
||||
public String getWorksByPutCodes(@RequestParam String put_codes) throws BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, IOException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException {
|
||||
log.debug("getWorksByPutCodes: put_codes = " + put_codes);
|
||||
|
||||
UserTokens userTokens = userTokensService.getUserTokens();
|
||||
if(userTokens == null) {
|
||||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
String userOrcid = userTokens.getOrcid();
|
||||
String userAccessToken = userTokens.getAccessToken();
|
||||
|
||||
if(userOrcid == null || userAccessToken == null) {
|
||||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
|
||||
// log.debug("Access token: " + userAccessToken);
|
||||
// log.debug("User orcid: " + userOrcid);
|
||||
|
||||
// String url = "https://sandbox.orcid.org/v3.0/" + orcid.toString() + "/works";
|
||||
String url = orcidConfig.getApiURL()+userOrcid+"/works/"+put_codes;
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
|
||||
protected boolean hasError(HttpStatus statusCode) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("Accept", "application/json");
|
||||
headers.add("Authorization", "Bearer " + userAccessToken);
|
||||
headers.add("Content-Type", "application/orcid+json;charset=UTF-8");
|
||||
|
||||
HttpEntity<String> request = new HttpEntity<>(headers);
|
||||
orcid_log.info("request: "+request);
|
||||
orcid_log.info("url: "+url);
|
||||
|
||||
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
|
||||
if (response.getStatusCode() != HttpStatus.OK) {
|
||||
orcid_log.error("Getting works response code is: " + response.getStatusCode());
|
||||
orcid_log.error("Unexpected Response: "+response.getBody());
|
||||
return null;
|
||||
} else {
|
||||
orcid_log.info("Response: "+response);
|
||||
return response.getBody().toString();
|
||||
}
|
||||
}
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@RequestMapping(value = "/work/{putCode}/delete", method = RequestMethod.DELETE)
|
||||
@RequestMapping(value = "/orcid/work/{putCode}/delete", method = RequestMethod.DELETE)
|
||||
public String deleteWork(@PathVariable String putCode) throws IOException, BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException {
|
||||
log.debug("deleteWork: putCode = " + putCode);
|
||||
|
||||
|
@ -311,10 +311,9 @@ public class WorkController {
|
|||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
|
||||
log.debug("Access token: " + userAccessToken);
|
||||
log.debug("User orcid: " + userOrcid);
|
||||
// log.debug("Access token: " + userAccessToken);
|
||||
// log.debug("User orcid: " + userOrcid);
|
||||
|
||||
// String url = "https://sandbox.orcid.org/v3.0/" + orcid.toString() + "/works";
|
||||
String url = "https://api.sandbox.orcid.org/v3.0/"+userOrcid+"/work/" + putCode;
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
|
@ -326,13 +325,17 @@ public class WorkController {
|
|||
HttpHeaders headers = new HttpHeaders();
|
||||
// headers.add("Accept", "application/json");
|
||||
headers.add("Authorization", "Bearer " + userAccessToken);
|
||||
headers.add("Content-Type","application/orcid+json");
|
||||
headers.add("Content-Type", "application/orcid+json;charset=UTF-8");
|
||||
|
||||
HttpEntity<String> request = new HttpEntity<>(headers);
|
||||
//logger.info(restTemplate.exchange(fooResourceUrl, HttpMethod.GET, request, Object.class));
|
||||
orcid_log.info("request: "+request);
|
||||
orcid_log.info("url: "+url);
|
||||
|
||||
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.DELETE, request, String.class);
|
||||
if (response.getStatusCode() != HttpStatus.NO_CONTENT) {
|
||||
log.debug("Deleting work response code is: " + response.getStatusCode());
|
||||
orcid_log.error("Deleting work response code is: " + response.getStatusCode());
|
||||
orcid_log.error("Unexpected Response: "+response.getBody());
|
||||
|
||||
if(response.getStatusCode() == HttpStatus.NOT_FOUND) {
|
||||
workService.deleteWork(putCode);
|
||||
return putCode;
|
||||
|
@ -342,7 +345,7 @@ public class WorkController {
|
|||
}
|
||||
return null;
|
||||
} else {
|
||||
log.debug(response);
|
||||
orcid_log.info("Response: "+response);
|
||||
|
||||
workService.deleteWork(putCode);
|
||||
|
||||
|
@ -352,7 +355,7 @@ public class WorkController {
|
|||
}
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@RequestMapping(value = "/works/delete", method = RequestMethod.POST)
|
||||
@RequestMapping(value = "/orcid/works/delete", method = RequestMethod.POST)
|
||||
public List<String> deleteWorks(@RequestBody List<String> putCodes) throws IOException, BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException {
|
||||
log.debug("deleteWorks: putCodes = " + putCodes);
|
||||
|
||||
|
@ -367,8 +370,8 @@ public class WorkController {
|
|||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
|
||||
log.debug("Access token: " + userAccessToken);
|
||||
log.debug("User orcid: " + userOrcid);
|
||||
// log.debug("Access token: " + userAccessToken);
|
||||
// log.debug("User orcid: " + userOrcid);
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
|
||||
|
@ -379,10 +382,9 @@ public class WorkController {
|
|||
HttpHeaders headers = new HttpHeaders();
|
||||
// headers.add("Accept", "application/json");
|
||||
headers.add("Authorization", "Bearer " + userAccessToken);
|
||||
headers.add("Content-Type","application/orcid+json");
|
||||
headers.add("Content-Type", "application/orcid+json;charset=UTF-8");
|
||||
|
||||
HttpEntity<String> request = new HttpEntity<>(headers);
|
||||
//logger.info(restTemplate.exchange(fooResourceUrl, HttpMethod.GET, request, Object.class));
|
||||
|
||||
List<String> deletedPutCodes = new ArrayList<>();
|
||||
int index = 0;
|
||||
|
@ -390,9 +392,14 @@ public class WorkController {
|
|||
String url = "https://api.sandbox.orcid.org/v3.0/"+userOrcid+"/work/" + putCode;
|
||||
// UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
|
||||
|
||||
orcid_log.info("request: "+request);
|
||||
orcid_log.info("url: "+url);
|
||||
|
||||
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.DELETE, request, String.class);
|
||||
if (response.getStatusCode() != HttpStatus.NO_CONTENT) {
|
||||
log.debug("Deleting work response code is: " + response.getStatusCode());
|
||||
orcid_log.error("Deleting work response code is: " + response.getStatusCode());
|
||||
orcid_log.error("Unexpected Response: "+response.getBody());
|
||||
|
||||
if(index == 0 && response.getStatusCode() == HttpStatus.UNAUTHORIZED) {
|
||||
throw new AuthorizationServiceException("You are not allowed to delete work");
|
||||
}
|
||||
|
@ -403,7 +410,7 @@ public class WorkController {
|
|||
deletedPutCodes.add(null);
|
||||
}
|
||||
} else {
|
||||
log.debug(response);
|
||||
orcid_log.info("Response: "+response);
|
||||
|
||||
workService.deleteWork(putCode);
|
||||
|
||||
|
@ -415,14 +422,14 @@ public class WorkController {
|
|||
}
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@RequestMapping(value = "/work", method = RequestMethod.GET)
|
||||
@RequestMapping(value = "/orcid/work", method = RequestMethod.GET)
|
||||
public List<String> getWorksOfReuslt(@RequestParam String[] pids, @RequestParam String orcid) throws BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException, IOException {
|
||||
log.debug("getWorks: pids = " + pids + " - orcid = "+orcid);
|
||||
|
||||
List<Work> works = workService.getWorks(pids, orcid);
|
||||
|
||||
String userAccessToken = userTokensService.getUserAccessToken(orcid);
|
||||
log.debug("Access token: " + userAccessToken);
|
||||
// log.debug("Access token: " + userAccessToken);
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
|
||||
|
@ -433,23 +440,22 @@ public class WorkController {
|
|||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("Accept", "application/json");
|
||||
headers.add("Authorization", "Bearer " + userAccessToken);
|
||||
headers.add("Content-Type", "application/orcid+json");
|
||||
log.debug(headers.get("Authorization"));
|
||||
headers.add("Content-Type", "application/orcid+json;charset=UTF-8");
|
||||
|
||||
HttpEntity<String> request = new HttpEntity<>(headers);
|
||||
|
||||
List<String> responseValues = new ArrayList<>();
|
||||
|
||||
for(Work work : works) {
|
||||
// String url = "https://api.sandbox.orcid.org/v3.0/0000-0001-9541-4617/work/"+work.getPutCode();
|
||||
String url = "https://api.sandbox.orcid.org/v3.0/" + orcid + "/work/" + work.getPutCode();
|
||||
log.debug(url);
|
||||
String url = orcidConfig.getApiURL() + orcid + "/work/" + work.getPutCode();
|
||||
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
|
||||
orcid_log.info("request: "+request);
|
||||
orcid_log.info("url: "+url);
|
||||
|
||||
//logger.info(restTemplate.exchange(fooResourceUrl, HttpMethod.GET, request, Object.class));
|
||||
ResponseEntity<String> response = restTemplate.exchange(builder.toUriString(), HttpMethod.GET, request, String.class);
|
||||
// ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
|
||||
if (response.getStatusCode() != HttpStatus.OK) {
|
||||
log.debug("Getting work response code is: " + response.getStatusCode());
|
||||
orcid_log.error("Getting work response code is: " + response.getStatusCode());
|
||||
orcid_log.error("Unexpected Response: "+response.getBody());
|
||||
|
||||
if (response.getStatusCode() == HttpStatus.NOT_FOUND) {
|
||||
// work.setPutCode(null);
|
||||
|
@ -459,28 +465,69 @@ public class WorkController {
|
|||
|
||||
responseValues.add(null);
|
||||
} else {
|
||||
log.debug(response);
|
||||
orcid_log.info("Response: "+response);
|
||||
responseValues.add(response.getBody().toString());
|
||||
}
|
||||
}
|
||||
return responseValues;
|
||||
}
|
||||
|
||||
// @PreAuthorize("isAuthenticated()")
|
||||
// @RequestMapping(value = "/local/works", method = RequestMethod.GET)
|
||||
// public Map<String, Object> getLocalWorks(@RequestParam(required = false) Integer page, @RequestParam(required = false) Integer size)
|
||||
// throws BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException, IOException {
|
||||
// log.debug("getWorks: page="+page+ " - size="+size);
|
||||
//
|
||||
// String userOrcid = userTokensService.getCurrentUserOrcid();
|
||||
// if(userOrcid == null) {
|
||||
// throw new AuthorizationServiceException("User is not registered");
|
||||
// }
|
||||
//
|
||||
// List<Work> works = workService.getLocalWorks(userOrcid);
|
||||
//
|
||||
// Map<String, Object> response = new HashMap<>();
|
||||
// response.put("total", works.size());
|
||||
//
|
||||
// if(page != null && page > 0 && size != null && size > 0) {
|
||||
// int from = (page-1)*size;
|
||||
// int to = page*size;
|
||||
//
|
||||
//// log.debug("size: "+works.size());
|
||||
// if(to > works.size()) {
|
||||
// to = works.size();
|
||||
// }
|
||||
//// log.debug("from="+from+" - to="+to);
|
||||
//
|
||||
//// int index = 0;
|
||||
//// Iterator<Work> iterator = works.iterator();
|
||||
//// while(iterator.hasNext()) {
|
||||
//// iterator.next();
|
||||
//// if(index < from || index > to) {
|
||||
//// iterator.remove();
|
||||
//// }
|
||||
//// index++;
|
||||
//// }
|
||||
// if(from < to) {
|
||||
// response.put("results", works.subList(from, to));
|
||||
// return response;
|
||||
// }
|
||||
// }
|
||||
// response.put("results", works);
|
||||
// return response;
|
||||
// }
|
||||
|
||||
@PreAuthorize("isAuthenticated()")
|
||||
@RequestMapping(value = "/works/local", method = RequestMethod.GET)
|
||||
public List<Work> getLocalWorks() throws BadPaddingException, InvalidKeyException, NoSuchAlgorithmException, IllegalBlockSizeException, NoSuchPaddingException, InvalidAlgorithmParameterException, InvalidKeySpecException, IOException {
|
||||
log.debug("getWorks");
|
||||
|
||||
UserTokens userTokens = userTokensService.getUserTokens();
|
||||
if(userTokens == null) {
|
||||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
String userOrcid = userTokens.getOrcid();
|
||||
|
||||
@RequestMapping(value = "/local/works", method = RequestMethod.GET)
|
||||
public List<Work> getMyLocalWorks() {
|
||||
log.debug("getMyWorks");
|
||||
//
|
||||
String userOrcid = userTokensService.getCurrentUserOrcid();
|
||||
if(userOrcid == null) {
|
||||
throw new AuthorizationServiceException("User is not registered");
|
||||
}
|
||||
|
||||
return workService.getLocalWorks(userOrcid);
|
||||
//
|
||||
List<Work> works = workService.getLocalWorks(userOrcid);
|
||||
//
|
||||
return works;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,8 +17,11 @@ public interface MongoDBWorkDAO extends WorkDAO, MongoRepository<Work, String> {
|
|||
|
||||
List<Work> findByPidsInAndOrcid(List<String> Pids, String Orcid);
|
||||
|
||||
List<Work> findByOrcidOrderByCreationDateDesc(String Orcid);
|
||||
List<Work> findByOrcid(String Orcid);
|
||||
|
||||
Work findByPutCode(String putCode);
|
||||
|
||||
Work save(Work work);
|
||||
|
||||
void deleteAll();
|
||||
|
|
|
@ -15,8 +15,11 @@ public interface WorkDAO {
|
|||
|
||||
List<Work> findByPidsInAndOrcid(String[] Pids, String Orcid);
|
||||
|
||||
List<Work> findByOrcidOrderByCreationDateDesc(String Orcid);
|
||||
List<Work> findByOrcid(String Orcid);
|
||||
|
||||
Work findByPutCode(String putCode);
|
||||
|
||||
Work save(Work work);
|
||||
|
||||
void deleteAll();
|
||||
|
|
|
@ -14,6 +14,7 @@ public class Work {
|
|||
private String putCode;
|
||||
private String orcid;
|
||||
private Date creationDate;
|
||||
private Date updateDate;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
|
@ -54,4 +55,12 @@ public class Work {
|
|||
public void setCreationDate(Date creationDate) {
|
||||
this.creationDate = creationDate;
|
||||
}
|
||||
|
||||
public Date getUpdateDate() {
|
||||
return updateDate;
|
||||
}
|
||||
|
||||
public void setUpdateDate(Date updateDate) {
|
||||
this.updateDate = updateDate;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,7 +87,7 @@ public class ExceptionsHandler {
|
|||
// @ExceptionHandler(Exception.class)
|
||||
// public ResponseEntity<ExceptionResponse> exception(Exception ex) {
|
||||
// ExceptionResponse response = new ExceptionResponse();
|
||||
// response.setErrorCode();
|
||||
// response.setErrorCode("Internal server error");
|
||||
// response.setErrorMessage("Exception");
|
||||
// response.setErrors(ex.getMessage());
|
||||
// response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR);
|
||||
|
|
|
@ -160,4 +160,9 @@ public class UserTokensService {
|
|||
UserTokens userTokens = userTokensDAO.findByAaiId(aaiId);
|
||||
return decryptTokens(userTokens);
|
||||
}
|
||||
|
||||
public UserTokens getEncryptedUserTokensByAai(String aaiId) {
|
||||
log.debug("getEncryptedUserTokensByAai");
|
||||
return userTokensDAO.findByAaiId(aaiId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,6 +35,11 @@ public class WorkService {
|
|||
}
|
||||
|
||||
public List<Work> getLocalWorks(String orcid) {
|
||||
return workDAO.findByOrcid(orcid);
|
||||
return workDAO.findByOrcidOrderByCreationDateDesc(orcid);
|
||||
// return workDAO.findByOrcid(orcid);
|
||||
}
|
||||
|
||||
public Work getLocalWorkByPutCode(String puutCode) {
|
||||
return workDAO.findByPutCode(puutCode);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
log4j.rootLogger = DEBUG, R
|
||||
|
||||
log4j.logger.eu.dnetlib = DEBUG
|
||||
log4j.logger.ORCID-eu.dnetlib = DEBUG, ORCID
|
||||
log4j.logger.org.springframework = DEBUG, S
|
||||
|
||||
log4j.additivity.org.springframework = false
|
||||
|
@ -17,4 +18,12 @@ log4j.appender.S.File=/var/log/dnet/uoa-orcid-service/uoa-orcid-service-spring.l
|
|||
log4j.appender.S.MaxFileSize=10MB
|
||||
log4j.appender.S.MaxBackupIndex=10
|
||||
log4j.appender.S.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.S.layout.ConversionPattern= %d %p %t [%c] - %m%n
|
||||
log4j.appender.S.layout.ConversionPattern= %d %p %t [%c] - %m%n
|
||||
|
||||
#log4j.ORCID.name = ORCID
|
||||
log4j.appender.ORCID=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.ORCID.File=/var/log/dnet/uoa-orcid-service/uoa-orcid-service-orcid.log
|
||||
log4j.appender.ORCID.MaxFileSize=10MB
|
||||
log4j.appender.ORCID.MaxBackupIndex=10
|
||||
log4j.appender.ORCID.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.ORCID.layout.ConversionPattern= %d %p %t [%c] - %m%n
|
|
@ -2,6 +2,12 @@
|
|||
orcidservice.mongodb.host=localhost
|
||||
orcidservice.mongodb.port=27017
|
||||
orcidservice.mongodb.database=openaire_orcid
|
||||
|
||||
orcidservice.orcid.apiURL=https://api.sandbox.orcid.org/v3.0/
|
||||
orcidservice.orcid.tokenURL=https://sandbox.orcid.org/oauth/token
|
||||
orcidservice.orcid.clientId=APP-A5M3KTX6NCN67L91
|
||||
orcidservice.orcid.clientSecret=96b20d71-ae06-4286-bb00-9172536c1ad4
|
||||
|
||||
#orcidservice.encryption.password=...
|
||||
|
||||
#beta
|
||||
|
|
Loading…
Reference in New Issue