Ejemplo n.º 1
0
  /**
   * Make a new Graph Request. View:
   * https://developers.facebook.com/docs/graph-api/reference/v2.4/request
   *
   * @param request
   * @param callback
   */
  public void newGraphRequest(
      GDXFacebookGraphRequest request, final GDXFacebookCallback<JsonResult> callback) {
    String accessToken = null;
    if (getAccessToken() != null) {
      accessToken = getAccessToken().getToken();
    }

    if (request.isUseCurrentAccessToken() && accessToken != null) {
      request.putField("access_token", accessToken);
    }

    Net.HttpRequest httpRequest = new Net.HttpRequest(request.getMethod());
    String url = request.getUrl() + config.GRAPH_API_VERSION + "/" + request.getNode();
    httpRequest.setUrl(url);
    httpRequest.setContent(request.getContentAsString());
    httpRequest.setTimeOut(request.getTimeout());

    HttpRequestBuilder builder = new HttpRequestBuilder().newRequest();
    builder.method(request.getMethod());

    Gdx.net.sendHttpRequest(
        httpRequest,
        new Net.HttpResponseListener() {

          @Override
          public void handleHttpResponse(Net.HttpResponse httpResponse) {
            String resultString = httpResponse.getResultAsString();
            int statusCode = httpResponse.getStatus().getStatusCode();

            if (statusCode == -1) {
              GDXFacebookError error =
                  new GDXFacebookError(
                      "Connection time out. Consider increasing timeout value by using setTimeout()");
              callback.onError(error);
            } else if (statusCode >= 200 && statusCode < 300) {
              callback.onSuccess(new JsonResult(resultString));
            } else {
              GDXFacebookError error = new GDXFacebookError("Error: " + resultString);
              callback.onError(error);
            }
          }

          @Override
          public void failed(Throwable t) {
            t.printStackTrace();
            callback.onFail(t);
          }

          @Override
          public void cancelled() {
            callback.onCancel();
          }
        });
  }