Search in sources :

Example 46 with OAuthRequest

use of com.github.scribejava.core.model.OAuthRequest in project dataverse by IQSS.

the class AbstractOAuth2AuthenticationProvider method getUserRecord.

public OAuth2UserRecord getUserRecord(String code, String state, String redirectUrl) throws IOException, OAuth2Exception {
    OAuth20Service service = getService(state, redirectUrl);
    OAuth2AccessToken accessToken = service.getAccessToken(code);
    final String userEndpoint = getUserEndpoint(accessToken);
    final OAuthRequest request = new OAuthRequest(Verb.GET, userEndpoint, service);
    request.addHeader("Authorization", "Bearer " + accessToken.getAccessToken());
    request.setCharset("UTF-8");
    final Response response = request.send();
    int responseCode = response.getCode();
    final String body = response.getBody();
    logger.log(Level.FINE, "In getUserRecord. Body: {0}", body);
    if (responseCode == 200) {
        final ParsedUserResponse parsed = parseUserResponse(body);
        return new OAuth2UserRecord(getId(), parsed.userIdInProvider, parsed.username, OAuth2TokenData.from(accessToken), parsed.displayInfo, parsed.emails);
    } else {
        throw new OAuth2Exception(responseCode, body, "Error getting the user info record.");
    }
}
Also used : OAuthRequest(com.github.scribejava.core.model.OAuthRequest) Response(com.github.scribejava.core.model.Response) OAuth2AccessToken(com.github.scribejava.core.model.OAuth2AccessToken) OAuth20Service(com.github.scribejava.core.oauth.OAuth20Service)

Example 47 with OAuthRequest

use of com.github.scribejava.core.model.OAuthRequest in project dataverse by IQSS.

the class OrcidOAuth2AP method getOrganizationalData.

protected AuthenticatedUserDisplayInfo getOrganizationalData(String userEndpoint, String accessToken, OAuth20Service service) throws IOException {
    final OAuthRequest request = new OAuthRequest(Verb.GET, userEndpoint.replace("/person", "/employments"), service);
    request.addHeader("Authorization", "Bearer " + accessToken);
    request.setCharset("UTF-8");
    final Response response = request.send();
    int responseCode = response.getCode();
    final String responseBody = response.getBody();
    if (responseCode != 200) {
        // This is bad, but not bad enough to stop a signup/in process.
        logger.log(Level.WARNING, "Cannot get affiliation data from ORCiD. Response code: {0} body:\n{1}\n/body", new Object[] { responseCode, responseBody });
        return null;
    } else {
        return parseActivitiesResponse(responseBody);
    }
}
Also used : OAuthRequest(com.github.scribejava.core.model.OAuthRequest) Response(com.github.scribejava.core.model.Response)

Example 48 with OAuthRequest

use of com.github.scribejava.core.model.OAuthRequest in project legendarybot by greatman.

the class WoWLinkPlugin method start.

@Override
public void start() {
    // Load the configuration
    props = new Properties();
    try {
        props.load(new FileInputStream("app.properties"));
    } catch (java.io.IOException e) {
        e.printStackTrace();
        getBot().getStacktraceHandler().sendStacktrace(e);
    }
    path("/auth", () -> get("/battlenetcallback", (req, res) -> {
        String state = req.queryParams("state");
        String region = state.split(":")[0];
        OAuth20Service service = new ServiceBuilder(props.getProperty("battlenetoauth.key")).apiSecret(props.getProperty("battlenetoauth.secret")).scope("wow.profile").callback("https://legendarybot.greatmancode.com/auth/battlenetcallback").build(new OAuthBattleNetApi(region));
        String oAuthCode = req.queryParams("code");
        // TODO: Save oauth code to do a character refresh.
        OAuth2AccessToken token = service.getAccessToken(oAuthCode);
        OAuthRequest request = new OAuthRequest(Verb.GET, "https://" + region + ".api.battle.net/wow/user/characters");
        service.signRequest(token, request);
        Response response = service.execute(request);
        JSONParser parser = new JSONParser();
        JSONObject obj = (JSONObject) parser.parse(response.getBody());
        JSONArray charactersArray = (JSONArray) obj.get("characters");
        List<WoWCharacter> characterList = new ArrayList<>();
        charactersArray.forEach((c) -> {
            JSONObject jsonObject = (JSONObject) c;
            if (jsonObject.containsKey("guild")) {
                characterList.add(new WoWCharacter((String) jsonObject.get("name"), ((String) jsonObject.get("realm")).toLowerCase(), (String) jsonObject.get("guild"), region, HeroClass.values()[((Long) jsonObject.get("class")).intValue()]));
                log.info("User " + state.split(":")[1] + " user have the character " + jsonObject.get("name") + " in guild " + jsonObject.get("guild"));
            }
        });
        if (characterList.size() > 0) {
            MongoCollection<Document> collection = getBot().getMongoDatabase().getCollection(MONGO_WOW_CHARACTERS_COLLECTION);
            characterList.forEach((c) -> collection.updateOne(and(eq("region", c.getRegion()), eq("realm", c.getRealm()), eq("name", c.getCharacterName())), and(set("guild", c.getGuild()), set("owner", state.split(":")[1])), new UpdateOptions().upsert(true)));
        }
        return "Your WoW characters are now synced to LegendaryBot!";
    }));
    getBot().getCommandHandler().addCommand("linkwowchars", new LinkWoWCharsCommand(this), "World of Warcraft Character");
    getBot().getCommandHandler().addCommand("guildchars", new GuildCharsCommand(this), "World of Warcraft Character");
    getBot().getCommandHandler().addCommand("setmainchar", new SetMainCharacterCommand(this), "World of Warcraft Character");
    getBot().getCommandHandler().addCommand("enableautorank", new EnableAutoRankCommand(this), "WoW Admin Commands");
    getBot().getCommandHandler().addCommand("disableautorank", new DisableAutoRankCommand(this), "WoW Admin Commands");
    getBot().getCommandHandler().addCommand("setwowrank", new SetWoWRankCommand(this), "WoW Admin Commands");
    getBot().getCommandHandler().addCommand("syncrank", new SyncRankCommand(this), "World of Warcraft Character");
    getBot().getCommandHandler().addCommand("syncguild", new SyncGuildCommand(this), "WoW Admin Commands");
    getBot().getCommandHandler().addCommand("enableautorankupdate", new EnableAutoRankUpdateCommand(this), "WoW Admin Commands");
    getBot().getCommandHandler().addCommand("disableautorankupdate", new DisableAutoRankUpdateCommand(this), "WoW Admin Commands");
    // We load the scheduler
    getBot().getJDA().forEach((jda -> {
        jda.getGuilds().forEach(guild -> {
            if (getBot().getGuildSettings(guild).getSetting(SETTING_SCHEDULER) != null && getBot().getGuildSettings(guild).getSetting(SETTING_RANKSET_ENABLED) != null) {
                scheduler.put(guild.getId(), new SyncRankScheduler(this, guild));
            }
        });
    }));
}
Also used : OAuthBattleNetApi(com.greatmancode.legendarybot.plugins.wowlink.utils.OAuthBattleNetApi) Document(org.bson.Document) Spark.get(spark.Spark.get) java.util(java.util) ServiceBuilder(com.github.scribejava.core.builder.ServiceBuilder) WoWCharacter(com.greatmancode.legendarybot.plugins.wowlink.utils.WoWCharacter) MongoCollection(com.mongodb.client.MongoCollection) LegendaryBotPlugin(com.greatmancode.legendarybot.api.plugin.LegendaryBotPlugin) LoggerFactory(org.slf4j.LoggerFactory) OAuth20Service(com.github.scribejava.core.oauth.OAuth20Service) BattleNetAPIInterceptor(com.greatmancode.legendarybot.api.utils.BattleNetAPIInterceptor) HeroClass(com.greatmancode.legendarybot.api.utils.HeroClass) Spark.path(spark.Spark.path) JSONArray(org.json.simple.JSONArray) PluginWrapper(org.pf4j.PluginWrapper) com.greatmancode.legendarybot.plugins.wowlink.commands(com.greatmancode.legendarybot.plugins.wowlink.commands) PermissionException(net.dv8tion.jda.core.exceptions.PermissionException) Filters.and(com.mongodb.client.model.Filters.and) ParseException(org.json.simple.parser.ParseException) OAuth2AccessToken(com.github.scribejava.core.model.OAuth2AccessToken) GuildSettings(com.greatmancode.legendarybot.api.server.GuildSettings) ResultSet(java.sql.ResultSet) Filters.eq(com.mongodb.client.model.Filters.eq) UpdateOptions(com.mongodb.client.model.UpdateOptions) Updates.unset(com.mongodb.client.model.Updates.unset) Role(net.dv8tion.jda.core.entities.Role) Request(okhttp3.Request) Logger(org.slf4j.Logger) JSONParser(org.json.simple.parser.JSONParser) Verb(com.github.scribejava.core.model.Verb) IOException(java.io.IOException) Filters.exists(com.mongodb.client.model.Filters.exists) FileInputStream(java.io.FileInputStream) Updates.set(com.mongodb.client.model.Updates.set) Guild(net.dv8tion.jda.core.entities.Guild) OkHttpClient(okhttp3.OkHttpClient) JSONObject(org.json.simple.JSONObject) OAuthRequest(com.github.scribejava.core.model.OAuthRequest) Block(com.mongodb.Block) User(net.dv8tion.jda.core.entities.User) Response(com.github.scribejava.core.model.Response) HttpUrl(okhttp3.HttpUrl) Spark(spark.Spark) OAuthRequest(com.github.scribejava.core.model.OAuthRequest) UpdateOptions(com.mongodb.client.model.UpdateOptions) OAuth20Service(com.github.scribejava.core.oauth.OAuth20Service) ServiceBuilder(com.github.scribejava.core.builder.ServiceBuilder) OAuth2AccessToken(com.github.scribejava.core.model.OAuth2AccessToken) WoWCharacter(com.greatmancode.legendarybot.plugins.wowlink.utils.WoWCharacter) JSONArray(org.json.simple.JSONArray) IOException(java.io.IOException) OAuthBattleNetApi(com.greatmancode.legendarybot.plugins.wowlink.utils.OAuthBattleNetApi) FileInputStream(java.io.FileInputStream) Response(com.github.scribejava.core.model.Response) MongoCollection(com.mongodb.client.MongoCollection) JSONObject(org.json.simple.JSONObject) JSONParser(org.json.simple.parser.JSONParser)

Example 49 with OAuthRequest

use of com.github.scribejava.core.model.OAuthRequest in project sonarqube by SonarSource.

the class BitbucketIdentityProvider method requestUser.

private GsonUser requestUser(OAuth20Service service, OAuth2AccessToken accessToken) throws InterruptedException, ExecutionException, IOException {
    OAuthRequest userRequest = new OAuthRequest(Verb.GET, settings.apiURL() + "2.0/user");
    service.signRequest(accessToken, userRequest);
    Response userResponse = service.execute(userRequest);
    if (!userResponse.isSuccessful()) {
        throw new IllegalStateException(format("Can not get Bitbucket user profile. HTTP code: %s, response: %s", userResponse.getCode(), userResponse.getBody()));
    }
    String userResponseBody = userResponse.getBody();
    return GsonUser.parse(userResponseBody);
}
Also used : OAuthRequest(com.github.scribejava.core.model.OAuthRequest) Response(com.github.scribejava.core.model.Response)

Example 50 with OAuthRequest

use of com.github.scribejava.core.model.OAuthRequest in project sonarqube by SonarSource.

the class BitbucketIdentityProvider method requestEmails.

@CheckForNull
private GsonEmails requestEmails(OAuth20Service service, OAuth2AccessToken accessToken) throws InterruptedException, ExecutionException, IOException {
    OAuthRequest userRequest = new OAuthRequest(Verb.GET, settings.apiURL() + "2.0/user/emails");
    service.signRequest(accessToken, userRequest);
    Response emailsResponse = service.execute(userRequest);
    if (emailsResponse.isSuccessful()) {
        return GsonEmails.parse(emailsResponse.getBody());
    }
    return null;
}
Also used : OAuthRequest(com.github.scribejava.core.model.OAuthRequest) Response(com.github.scribejava.core.model.Response) CheckForNull(javax.annotation.CheckForNull)

Aggregations

OAuthRequest (com.github.scribejava.core.model.OAuthRequest)107 Response (com.github.scribejava.core.model.Response)85 ServiceBuilder (com.github.scribejava.core.builder.ServiceBuilder)62 Scanner (java.util.Scanner)60 OAuth2AccessToken (com.github.scribejava.core.model.OAuth2AccessToken)48 OAuth20Service (com.github.scribejava.core.oauth.OAuth20Service)45 OAuth1AccessToken (com.github.scribejava.core.model.OAuth1AccessToken)21 OAuth1RequestToken (com.github.scribejava.core.model.OAuth1RequestToken)21 OAuth10aService (com.github.scribejava.core.oauth.OAuth10aService)20 Random (java.util.Random)16 OAuthConfig (com.github.scribejava.core.model.OAuthConfig)13 Test (org.junit.Test)11 HttpUrl (okhttp3.HttpUrl)9 MockResponse (okhttp3.mockwebserver.MockResponse)8 MockWebServer (okhttp3.mockwebserver.MockWebServer)8 IOException (java.io.IOException)6 HashMap (java.util.HashMap)6 RecordedRequest (okhttp3.mockwebserver.RecordedRequest)6 DefaultApi20 (com.github.scribejava.core.builder.api.DefaultApi20)4 ExecutionException (java.util.concurrent.ExecutionException)4