/**
* =============================================================================
*
* ORCID (R) Open Source
* http://orcid.org
*
* Copyright (c) 2012-2014 ORCID, Inc.
* Licensed under an MIT-Style License (MIT)
* http://orcid.org/open-source-license
*
* This copyright and license information (including a link to the full license)
* shall be included in its entirety in all copies or substantial portion of
* the software.
*
* =============================================================================
*/
package org.orcid.integration.api.pub;
import static org.orcid.core.api.OrcidApiConstants.ACTIVITIES;
import static org.orcid.core.api.OrcidApiConstants.PUTCODE;
import static org.orcid.core.api.OrcidApiConstants.RESEARCHER_URLS;
import static org.orcid.core.api.OrcidApiConstants.VND_ORCID_XML;
import static org.orcid.core.api.OrcidApiConstants.EDUCATION;
import static org.orcid.core.api.OrcidApiConstants.EDUCATION_SUMMARY;
import static org.orcid.core.api.OrcidApiConstants.EMPLOYMENT;
import static org.orcid.core.api.OrcidApiConstants.EMPLOYMENT_SUMMARY;
import static org.orcid.core.api.OrcidApiConstants.FUNDING;
import static org.orcid.core.api.OrcidApiConstants.FUNDING_SUMMARY;
import static org.orcid.core.api.OrcidApiConstants.WORK;
import static org.orcid.core.api.OrcidApiConstants.WORK_SUMMARY;
import static org.orcid.core.api.OrcidApiConstants.PEER_REVIEW;
import static org.orcid.core.api.OrcidApiConstants.PEER_REVIEW_SUMMARY;
import static org.orcid.core.api.OrcidApiConstants.EMAIL;
import static org.orcid.core.api.OrcidApiConstants.PERSONAL_DETAILS;
import static org.orcid.core.api.OrcidApiConstants.OTHER_NAMES;
import static org.orcid.core.api.OrcidApiConstants.EXTERNAL_IDENTIFIERS;
import static org.orcid.core.api.OrcidApiConstants.BIOGRAPHY;
import static org.orcid.core.api.OrcidApiConstants.KEYWORDS;
import static org.orcid.core.api.OrcidApiConstants.ADDRESS;
import static org.orcid.core.api.OrcidApiConstants.PERSON;
import static org.orcid.core.api.OrcidApiConstants.PROFILE_ROOT_PATH;
import java.net.URI;
import java.net.URISyntaxException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;
import org.orcid.api.common.OrcidClientHelper;
import org.orcid.pojo.ajaxForm.PojoUtil;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
public class PublicV2ApiClientImpl {
private OrcidClientHelper orcidClientHelper;
public PublicV2ApiClientImpl(URI baseUri, Client c) throws URISyntaxException {
orcidClientHelper = new OrcidClientHelper(baseUri, c);
}
public ClientResponse viewActivities(String orcid) {
return viewActivities(orcid, null);
}
public ClientResponse viewActivities(String orcid, String token) {
URI uri = UriBuilder.fromPath(ACTIVITIES).build(orcid);
return getClientReponse(uri, token);
}
public ClientResponse viewWorkXml(String orcid, String putCode) {
return viewWorkXml(orcid, putCode, null);
}
public ClientResponse viewWorkXml(String orcid, String putCode, String token) {
URI uri = UriBuilder.fromPath(WORK + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, token);
}
public ClientResponse viewWorkSummaryXml(String orcid, String putCode) {
return viewWorkSummaryXml(orcid, putCode, null);
}
public ClientResponse viewWorkSummaryXml(String orcid, String putCode, String token) {
URI uri = UriBuilder.fromPath(WORK_SUMMARY + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, token);
}
public ClientResponse viewFundingXml(String orcid, String putCode) {
return viewFundingXml(orcid, putCode, null);
}
public ClientResponse viewFundingXml(String orcid, String putCode, String token) {
URI uri = UriBuilder.fromPath(FUNDING + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, token);
}
public ClientResponse viewFundingSummaryXml(String orcid, String putCode) {
return viewFundingSummaryXml(orcid, putCode, null);
}
public ClientResponse viewFundingSummaryXml(String orcid, String putCode, String token) {
URI uri = UriBuilder.fromPath(FUNDING_SUMMARY + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, token);
}
public ClientResponse viewEducationXml(String orcid, String putCode) {
return viewEducationXml(orcid, putCode, null);
}
public ClientResponse viewEducationXml(String orcid, String putCode, String token) {
URI uri = UriBuilder.fromPath(EDUCATION + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, token);
}
public ClientResponse viewEducationSummaryXml(String orcid, String putCode) {
return viewEducationSummaryXml(orcid, putCode, null);
}
public ClientResponse viewEducationSummaryXml(String orcid, String putCode, String token) {
URI uri = UriBuilder.fromPath(EDUCATION_SUMMARY + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, token);
}
public ClientResponse viewEmploymentXml(String orcid, String putCode) {
return viewEmploymentXml(orcid, putCode, null);
}
public ClientResponse viewEmploymentXml(String orcid, String putCode, String token) {
URI uri = UriBuilder.fromPath(EMPLOYMENT + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, token);
}
public ClientResponse viewEmploymentSummaryXml(String orcid, String putCode) {
return viewEmploymentSummaryXml(orcid, putCode, null);
}
public ClientResponse viewEmploymentSummaryXml(String orcid, String putCode, String token) {
URI uri = UriBuilder.fromPath(EMPLOYMENT_SUMMARY + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, token);
}
public ClientResponse viewPeerReviewXml(String orcid, String putCode) {
return viewPeerReviewXml(orcid, putCode, null);
}
public ClientResponse viewPeerReviewXml(String orcid, String putCode, String token) {
URI uri = UriBuilder.fromPath(PEER_REVIEW + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, token);
}
public ClientResponse viewPeerReviewSummaryXml(String orcid, String putCode) {
return viewPeerReviewSummaryXml(orcid, putCode, null);
}
public ClientResponse viewPeerReviewSummaryXml(String orcid, String putCode, String token) {
URI uri = UriBuilder.fromPath(PEER_REVIEW_SUMMARY + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, token);
}
public ClientResponse viewResearcherUrlsXML(String orcid) {
URI uri = UriBuilder.fromPath(RESEARCHER_URLS).build(orcid);
return getClientReponse(uri, null);
}
public ClientResponse viewResearcherUrlXML(String orcid, String putCode) {
URI uri = UriBuilder.fromPath(RESEARCHER_URLS + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, null);
}
public ClientResponse viewEmailXML(String orcid) {
URI uri = UriBuilder.fromPath(EMAIL).build(orcid);
return getClientReponse(uri, null);
}
public ClientResponse viewPersonalDetailsXML(String orcid) {
URI uri = UriBuilder.fromPath(PERSONAL_DETAILS).build(orcid);
return getClientReponse(uri, null);
}
public ClientResponse viewOtherNamesXML(String orcid) {
URI uri = UriBuilder.fromPath(OTHER_NAMES).build(orcid);
return getClientReponse(uri, null);
}
public ClientResponse viewOtherNameXML(String orcid, Long putCode) {
URI uri = UriBuilder.fromPath(OTHER_NAMES + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, null);
}
public ClientResponse viewExternalIdentifiersXML(String orcid) {
URI uri = UriBuilder.fromPath(EXTERNAL_IDENTIFIERS).build(orcid);
return getClientReponse(uri, null);
}
public ClientResponse viewExternalIdentifierXML(String orcid, Long putCode) {
URI uri = UriBuilder.fromPath(EXTERNAL_IDENTIFIERS + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, null);
}
public ClientResponse viewBiographyXML(String orcid) {
URI uri = UriBuilder.fromPath(BIOGRAPHY).build(orcid);
return getClientReponse(uri, null);
}
public ClientResponse viewBiographyJson(String orcid) {
URI uri = UriBuilder.fromPath(BIOGRAPHY).build(orcid);
return getClientReponse(uri, null, MediaType.APPLICATION_JSON);
}
public ClientResponse viewKeywordsXML(String orcid) {
URI uri = UriBuilder.fromPath(KEYWORDS).build(orcid);
return getClientReponse(uri, null);
}
public ClientResponse viewKeywordsXML(String orcid, Long putCode) {
URI uri = UriBuilder.fromPath(KEYWORDS + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, null);
}
public ClientResponse viewAddressesXML(String orcid) {
URI uri = UriBuilder.fromPath(ADDRESS).build(orcid);
return getClientReponse(uri, null);
}
public ClientResponse viewAddressXML(String orcid, Long putCode) {
URI uri = UriBuilder.fromPath(ADDRESS + PUTCODE).build(orcid, putCode);
return getClientReponse(uri, null);
}
public ClientResponse viewPersonXML(String orcid) {
URI uri = UriBuilder.fromPath(PERSON).build(orcid);
return getClientReponse(uri, null);
}
public ClientResponse viewPersonJson(String orcid) {
URI uri = UriBuilder.fromPath(PERSON).build(orcid);
return getClientReponse(uri, null, MediaType.APPLICATION_JSON);
}
public ClientResponse viewRecordXML(String orcid) {
URI uri = UriBuilder.fromPath(PROFILE_ROOT_PATH).build(orcid);
return getClientReponse(uri, null);
}
private ClientResponse getClientReponse(URI uri, String token) {
return getClientReponse(uri, token, VND_ORCID_XML);
}
private ClientResponse getClientReponse(URI uri, String token, String mediaType) {
ClientResponse result = null;
if (PojoUtil.isEmpty(token)) {
result = orcidClientHelper.getClientResponse(uri, mediaType);
} else {
result = orcidClientHelper.getClientResponseWithToken(uri, mediaType, token);
}
return result;
}
}