Skip to content

Commit

Permalink
have "get DOI" accept normal form with doi: #5093
Browse files Browse the repository at this point in the history
  • Loading branch information
pdurbin committed May 22, 2020
1 parent e72616f commit 431ee35
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/main/java/edu/harvard/iq/dataverse/api/Pids.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public Response getPid(@QueryParam("persistentId") String persistentId) {
if (!user.isSuperuser()) {
return error(Response.Status.FORBIDDEN, BundleUtil.getStringFromBundle("admin.api.auth.mustBeSuperUser"));
}
String baseUrl = System.getProperty("doi.baseurlstringnext") + "/dois/";
String baseUrl = System.getProperty("doi.baseurlstringnext");
String username = System.getProperty("doi.username");
String password = System.getProperty("doi.password");
JsonObjectBuilder result = PidUtil.queryDoi(persistentId, baseUrl, username, password);
Expand Down
16 changes: 15 additions & 1 deletion src/main/java/edu/harvard/iq/dataverse/pidproviders/PidUtil.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package edu.harvard.iq.dataverse.pidproviders;

import edu.harvard.iq.dataverse.GlobalId;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
Expand All @@ -13,9 +14,10 @@
public class PidUtil {

public static JsonObjectBuilder queryDoi(String persistentId, String baseUrl, String username, String password) {
String doi = acceptOnlyDoi(persistentId);
URL url;
try {
url = new URL(baseUrl + persistentId);
url = new URL(baseUrl + "/dois/" + doi);
} catch (MalformedURLException ex) {
return Json.createObjectBuilder().add("response", ex.getLocalizedMessage());
}
Expand Down Expand Up @@ -60,4 +62,16 @@ public static JsonObjectBuilder queryDoi(String persistentId, String baseUrl, St
return ret;
}

/**
* @param PID in the form doi:10.7910/DVN/TJCLKP
* @return DOI in the form 10.7910/DVN/TJCLKP (no "doi:")
*/
private static String acceptOnlyDoi(String persistentId) {
GlobalId globalId = new GlobalId(persistentId);
if (!GlobalId.DOI_PROTOCOL.equals(globalId.getProtocol())) {
throw new IllegalArgumentException("Only doi: is supported.");
}
return globalId.getAuthority() + "/" + globalId.getIdentifier();
}

}
4 changes: 2 additions & 2 deletions src/test/java/edu/harvard/iq/dataverse/api/PidsIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ public static void setUpClass() {
@Test
public void testGetPid() {
String pid = "";
pid = "10.70122/FK2/9BXT5O"; // findable
pid = "10.70122/FK2/DNEUDP"; // draft
pid = "doi:10.70122/FK2/9BXT5O"; // findable
pid = "doi:10.70122/FK2/DNEUDP"; // draft

Response createUser = UtilIT.createRandomUser();
createUser.prettyPrint();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ public class PidUtilTest {
public void testGetDoi() throws IOException {
String username = System.getenv("DataCiteUsername");
String password = System.getenv("DataCitePassword");
String baseUrl = "https://api.test.datacite.org/dois/";
String baseUrl = "https://api.test.datacite.org";
String persistentId = "";
persistentId = "10.70122/FK2/9BXT5O"; // findable
persistentId = "10.70122/FK2/DOES-NOT-EXIST"; // does not exist
persistentId = "10.70122/87W6-F672"; // draft
persistentId = "doi:10.70122/FK2/9BXT5O"; // findable
persistentId = "doi:10.70122/FK2/DOES-NOT-EXIST"; // does not exist
persistentId = "doi:10.70122/87W6-F672"; // draft
persistentId = "doi:10.70122/87W6-F672"; // draft
JsonObjectBuilder result = PidUtil.queryDoi(persistentId, baseUrl, username, password);
String out = JsonUtil.prettyPrint(result.build());
System.out.println("out: " + out);
Expand Down

0 comments on commit 431ee35

Please sign in to comment.