private void stagePhoto()

in facebook-share/src/main/java/com/facebook/share/ShareApi.java [669:736]


  private void stagePhoto(
      final SharePhoto photo,
      final CollectionMapper.OnMapValueCompleteListener onPhotoStagedListener) {
    final Bitmap bitmap = photo.getBitmap();
    final Uri imageUrl = photo.getImageUrl();
    if ((bitmap != null) || (imageUrl != null)) {
      final GraphRequest.Callback requestCallback =
          new GraphRequest.Callback() {
            @Override
            public void onCompleted(GraphResponse response) {
              final FacebookRequestError error = response.getError();
              if (error != null) {
                String message = error.getErrorMessage();
                if (message == null) {
                  message = "Error staging photo.";
                }
                onPhotoStagedListener.onError(
                    new FacebookGraphResponseException(response, message));
                return;
              }
              final JSONObject data = response.getJSONObject();
              if (data == null) {
                onPhotoStagedListener.onError(new FacebookException("Error staging photo."));
                return;
              }
              final String stagedImageUri = data.optString("uri");
              if (stagedImageUri == null) {
                onPhotoStagedListener.onError(new FacebookException("Error staging photo."));
                return;
              }

              final JSONObject stagedObject = new JSONObject();
              try {
                stagedObject.put("url", stagedImageUri);
                stagedObject.put("user_generated", photo.getUserGenerated());
              } catch (final JSONException ex) {
                String message = ex.getLocalizedMessage();
                if (message == null) {
                  message = "Error staging photo.";
                }
                onPhotoStagedListener.onError(new FacebookException(message));
                return;
              }
              onPhotoStagedListener.onComplete(stagedObject);
            }
          };
      if (bitmap != null) {
        ShareInternalUtility.newUploadStagingResourceWithImageRequest(
                AccessToken.getCurrentAccessToken(), bitmap, requestCallback)
            .executeAsync();
      } else {
        try {
          ShareInternalUtility.newUploadStagingResourceWithImageRequest(
                  AccessToken.getCurrentAccessToken(), imageUrl, requestCallback)
              .executeAsync();
        } catch (final FileNotFoundException ex) {
          String message = ex.getLocalizedMessage();
          if (message == null) {
            message = "Error staging photo.";
          }
          onPhotoStagedListener.onError(new FacebookException(message));
        }
      }
    } else {
      onPhotoStagedListener.onError(
          new FacebookException("Photos must have an imageURL or bitmap."));
    }
  }