diff --git a/src/main/java/org/scribe/builder/api/LinkedInApi.java b/src/main/java/org/scribe/builder/api/LinkedInApi.java index dc3e58327..147070f3f 100644 --- a/src/main/java/org/scribe/builder/api/LinkedInApi.java +++ b/src/main/java/org/scribe/builder/api/LinkedInApi.java @@ -1,11 +1,41 @@ package org.scribe.builder.api; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; import org.scribe.model.*; +import org.scribe.utils.Preconditions; public class LinkedInApi extends DefaultApi10a { private static final String AUTHORIZE_URL = "https://api.linkedin.com/uas/oauth/authenticate?oauth_token=%s"; - + + private Set scopePermissions; + + /** + * Adds an scope permission parameter. + * + * @param key name of the parameter + * + * @throws IllegalArgumentException if the parameter is not an OAuth parameter + */ + public void addScopePermission(String permission) + { + Preconditions.checkEmptyString(permission, "Scope permission is incorrect. It can't be null or empty"); + + if(!scopePermissions.contains(permission)) + scopePermissions.add(permission); + } + + /** + * Delete the scope permission parameters. + */ + public void clearScopePermission() + { + scopePermissions.clear(); + } + @Override public String getAccessTokenEndpoint() { @@ -15,13 +45,31 @@ public String getAccessTokenEndpoint() @Override public String getRequestTokenEndpoint() { - return "https://api.linkedin.com/uas/oauth/requestToken"; + String permissions = ""; + Iterator it = scopePermissions.iterator(); + if(it.hasNext()) + { + permissions = "?scope=" + it.next(); + while(it.hasNext()) + permissions += "+" + it.next(); + } + + return "https://api.linkedin.com/uas/oauth/requestToken" + permissions; } @Override public String getAuthorizationUrl(Token requestToken) { return String.format(AUTHORIZE_URL, requestToken.getToken()); + } + + public LinkedInApi() + { + scopePermissions = new HashSet(); } + public LinkedInApi(String ... scopePermissionsParameters) + { + scopePermissions = new HashSet(Arrays.asList(scopePermissionsParameters)); + } }