private void startDownloadOfMagazineFromResponse(HttpResponse response) {
    String tempURL = null;
    if (null == response) {
      showAlertDialog(DOWNLOAD_ALERT);
      Log.w(TAG, "download response was null");
      return;
    }

    tempURL = getTempURL(response);
    if (tempURL == null) {
      // Toast.makeText(getContext(), "Download failed", Toast.LENGTH_SHORT).show();
      showAlertDialog(DOWNLOAD_ALERT);
      return;
    }
    if (getIntent().getExtras() != null) {
      MagazineDownloadService.startMagazineDownload(
          this, new Magazine(fileName, title, subtitle, null, this), true, tempURL);
      Intent intent = new Intent(getContext(), DownloadMagazineActivity.class);
      intent.putExtra(BillingActivity.FILE_NAME_KEY, fileName);
      intent.putExtra(BillingActivity.SUBTITLE_KEY, subtitle);
      intent.putExtra(BillingActivity.TITLE_KEY, title);
      intent.putExtra(BillingActivity.IS_SAMPLE_KEY, false);
      startActivity(intent);
      setResult(RESULT_OK);
      finish();
    } else {
      Toast.makeText(this, "Purchase successful", Toast.LENGTH_LONG).show();
    }
    finish();
  }
  // This is to check subscription status when a push notification is sent for a new issue
  // If something goes wrong, don't download the issue, just show a notification
  public static boolean backgroundCheckForValidSubscriptionFailFast(
      Context context, String fileName, String title, String subtitle) {

    String prefSubscrCode = getSavedSubscriberCode(context);

    if (prefSubscrCode != null) {
      String subscriptionCodeQuery = buildSubscriptionCodeQuery(context, prefSubscrCode, fileName);
      HttpClient httpclient = new DefaultHttpClient();
      try {
        HttpGet httpget = new HttpGet(subscriptionCodeQuery);
        HttpClientParams.setRedirecting(httpclient.getParams(), false);
        HttpResponse httpResponse = httpclient.execute(httpget);
        int responseCode = httpResponse.getStatusLine().getStatusCode();
        if (responseCode == UNAUTHORIZED_CODE) {
        } else if (responseCode == UNAUTHORIZED_ISSUE) {
        } else if (responseCode == UNAUTHORIZED_DEVICE) {
        } else {
          String tempURL = getTempURL(httpResponse);
          if (tempURL != null) {
            MagazineDownloadService.startMagazineDownload(
                context, new Magazine(fileName, title, subtitle, null, context), true, tempURL);
            return true;
          }
        }
      } catch (IllegalArgumentException e) {
        Log.e(TAG, "URI is malformed", e);
      } catch (ClientProtocolException e) {
        Log.e(TAG, "Download failed", e);
      } catch (IOException e) {
        Log.e(TAG, "Download failed", e);
      }
      return false;
    }

    String prefUsername = getSavedUsername(context);

    if (prefUsername != null) {
      String prefPassword = getSavedPassword(context);
      String usernamePasswordLoginQuery =
          buildUsernamePasswordLoginQuery(context, prefUsername, prefPassword, fileName);
      HttpClient httpclient = new DefaultHttpClient();
      try {
        HttpGet httpget = new HttpGet(usernamePasswordLoginQuery);
        HttpClientParams.setRedirecting(httpclient.getParams(), false);
        HttpResponse httpResponse = httpclient.execute(httpget);
        int responseCode = httpResponse.getStatusLine().getStatusCode();
        if (responseCode == UNAUTHORIZED_CODE) {
        } else if (responseCode == UNAUTHORIZED_ISSUE) {
        } else if (responseCode == UNAUTHORIZED_DEVICE) {
        } else {
          String tempURL = getTempURL(httpResponse);
          if (tempURL != null) {
            MagazineDownloadService.startMagazineDownload(
                context, new Magazine(fileName, title, subtitle, null, context), true, tempURL);
            return true;
          }
        }
      } catch (IllegalArgumentException e) {
        Log.e(TAG, "URI is malformed", e);
      } catch (ClientProtocolException e) {
        Log.e(TAG, "Download failed", e);
      } catch (IOException e) {
        Log.e(TAG, "Download failed", e);
      }
      return false;
    }
    return false;
  }