Package com.feth.play.module.pa.providers.oauth2.vk

Source Code of com.feth.play.module.pa.providers.oauth2.vk.VkAuthProvider

package com.feth.play.module.pa.providers.oauth2.vk;

import play.Application;
import play.Logger;
import play.libs.ws.WS;
import play.libs.ws.WSResponse;

import com.fasterxml.jackson.databind.JsonNode;
import com.feth.play.module.pa.exceptions.AccessTokenException;
import com.feth.play.module.pa.exceptions.AuthException;
import com.feth.play.module.pa.providers.oauth2.OAuth2AuthProvider;

/**
* @author Denis Borisenko
*/
public class VkAuthProvider extends OAuth2AuthProvider<VkAuthUser, VkAuthInfo> {

  static final String PROVIDER_KEY = "vk";

  private static final String USER_INFO_URL_SETTING_KEY = "userInfoUrl";
  private static final String USER_INFO_FIELDS_SETTING_KEY = "userInfoFields";

  private static final String FIELDS_REQUEST_KEY = "fields";
  private static final String UIDS_REQUEST_KEY = "uids";

  private static final String BODY_RESPONSE_KEY = "response";

  public VkAuthProvider(final Application app) {
    super(app);
  }

  @Override
  protected VkAuthUser transform(VkAuthInfo info, final String state)
      throws AuthException {

    final String url = getConfiguration().getString(
        USER_INFO_URL_SETTING_KEY);
    final String fields = getConfiguration().getString(
        USER_INFO_FIELDS_SETTING_KEY);
    final WSResponse r = WS.url(url)
        .setQueryParameter(UIDS_REQUEST_KEY, info.getUserId())
        .setQueryParameter(FIELDS_REQUEST_KEY, fields).get()
        .get(getTimeout());

    final JsonNode result = r.asJson();

    if (result.get(OAuth2AuthProvider.Constants.ERROR) != null) {
      throw new AuthException(result.get(
          OAuth2AuthProvider.Constants.ERROR).asText());
    } else {
      return new VkAuthUser(result.get(BODY_RESPONSE_KEY).get(0), info,
          state);
    }
  }

  @Override
  public String getKey() {
    return PROVIDER_KEY;
  }

  @Override
  protected VkAuthInfo buildInfo(final WSResponse r)
      throws AccessTokenException {
    final JsonNode n = r.asJson();
    Logger.debug(n.toString());

    if (n.get(OAuth2AuthProvider.Constants.ERROR) != null) {
      throw new AccessTokenException(n.get(
          OAuth2AuthProvider.Constants.ERROR).asText());
    } else {
      return new VkAuthInfo(n);
    }
  }
}
TOP

Related Classes of com.feth.play.module.pa.providers.oauth2.vk.VkAuthProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.