Package glacier.foursquare

Source Code of glacier.foursquare.FoursquareConnectorController

package glacier.foursquare;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.fluxtream.core.auth.AuthHelper;
import org.fluxtream.core.domain.ApiKey;
import org.fluxtream.core.utils.UnexpectedHttpResponseCodeException;
import net.sf.json.JSONObject;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import org.fluxtream.core.Configuration;
import org.fluxtream.core.connectors.Connector;
import org.fluxtream.core.domain.Guest;
import org.fluxtream.core.services.GuestService;
import org.fluxtream.core.services.SystemService;
import org.fluxtream.core.utils.HttpUtils;

@Controller
@RequestMapping(value = "/foursquare")
public class FoursquareConnectorController {

  @Autowired
  Configuration env;
 
  @Autowired
  SystemService systemService;
 
  @Autowired
  GuestService guestService;

  @RequestMapping(value = "/token")
  public String getToken(HttpServletRequest request,
      HttpServletResponse response) throws IOException, ServletException{
   
    String redirectUri = env.get("foursquare.redirect_uri");
    String clientId = env.get("foursquare.client.id");

    String authorizeUrl = "https://foursquare.com/oauth2/authenticate" +
      "?client_id=" + clientId +
      "&response_type=code" +
      "&redirect_uri=" + redirectUri;
   
    return "redirect:" + authorizeUrl;
  }
 
  @RequestMapping(value = "/swapToken")
  public String upgradeToken(HttpServletRequest request,
      HttpServletResponse response) throws IOException, UnexpectedHttpResponseCodeException {
   
    String swapTokenUrl = "https://foursquare.com/oauth2/access_token";
    String code = request.getParameter("code");
    String redirectUri = env.get("foursquare.redirect_uri");
   
    Map<String,String> params = new HashMap<String,String>();
    params.put("code", code);
    params.put("client_id", env.get("foursquare.client.id"));
    params.put("client_secret", env.get("foursquare.client.secret"));
    params.put("redirect_uri", redirectUri);
    params.put("grant_type", "authorization_code");
   
    String fetched = HttpUtils.fetch(swapTokenUrl, params);
   
    JSONObject token = JSONObject.fromObject(fetched);
    Connector scopedApi = Connector.getConnector("foursquare");
    Guest guest = AuthHelper.getGuest();

        final ApiKey apiKey = guestService.createApiKey(guest.getId(), scopedApi);

    guestService.setApiKeyAttribute(apiKey,
        "accessToken", token.getString("access_token"));
   
    return "redirect:/app/from/"+scopedApi.getName();
  }
}
TOP

Related Classes of glacier.foursquare.FoursquareConnectorController

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.