Android Open Source - plus1-android-sdk Html Banner Downloader






From Project

Back to project page plus1-android-sdk.

License

The source code is released under:

Copyright (c) 2012, WapStart All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Red...

If you think the Android project plus1-android-sdk listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright (c) 2011, Alexander Klestov <a.klestov@co.wapstart.ru>
 * All rights reserved.//from  w  ww.  j  a  v a 2  s  .  c o  m
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   * Redistributions of source code must retain the above copyright notice,
 *     this list of conditions and the following disclaimer.
 *   * Redistributions in binary form must reproduce the above copyright notice,
 *     this list of conditions and the following disclaimer in the documentation
 *     and/or other materials provided with the distribution.
 *   * Neither the name of the "Wapstart" nor the names
 *     of its contributors may be used to endorse or promote products
 *     derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

package ru.wapstart.plus1.sdk;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.util.ArrayList;
import org.apache.http.HttpStatus;
import org.apache.http.client.entity.UrlEncodedFormEntity;

import ru.wapstart.plus1.sdk.HtmlBannerDownloader.HtmlBannerInfo;
import ru.wapstart.plus1.sdk.Plus1BannerDownloadListener.LoadError;
import ru.wapstart.plus1.sdk.Plus1BannerDownloadListener.BannerAdType;

import android.util.Log;

final class HtmlBannerDownloader extends BaseRequestLoader<HtmlBannerInfo> {
  private static final String LOGTAG = "HtmlBannerDownloader";

  protected class HtmlBannerInfo {
    private Integer mResponseCode;
    private String mBannerContent;
    private String mBannerAdType;
  }

  private ArrayList<Plus1BannerDownloadListener> mDownloadListenerList =
      new ArrayList<Plus1BannerDownloadListener>();

  public void addDownloadListener(Plus1BannerDownloadListener bannerDownloadListener) {
    mDownloadListenerList.add(bannerDownloadListener);
  }

  protected String getRequestUrl(Plus1Request request) {
    return request.getUrl();
  }

  protected UrlEncodedFormEntity getUrlEncodedFormEntity(Plus1Request request)
    throws UnsupportedEncodingException
  {
    return request.getUrlEncodedFormEntity(Plus1Request.RequestType.html);
  }

  protected HtmlBannerInfo makeResult(String content, HttpURLConnection connection)
    throws IOException
  {
    HtmlBannerInfo bannerInfo = new HtmlBannerInfo();
    bannerInfo.mResponseCode = connection.getResponseCode();
    bannerInfo.mBannerContent = content;
    bannerInfo.mBannerAdType = connection.getHeaderField("X-Adtype");

    Log.d(LOGTAG, "Response code: "    + bannerInfo.mResponseCode);
    if (!bannerInfo.mResponseCode.equals(HttpStatus.SC_NO_CONTENT)) {
      Log.d(LOGTAG, "X-Adtype: "      + bannerInfo.mBannerAdType);
      Log.d(LOGTAG, "Banner content: "  + bannerInfo.mBannerContent);
    }

    return bannerInfo;
  }

  @Override
  protected void onPostExecute(HtmlBannerInfo bannerInfo) {
    if (bannerInfo == null) {
      notifyOnBannerLoadFailed(LoadError.DownloadFailed);
    } else if (bannerInfo.mResponseCode.equals(HttpStatus.SC_NO_CONTENT)) {
      notifyOnBannerLoadFailed(LoadError.NoHaveBanner);
    } else if (bannerInfo.mResponseCode.equals(HttpStatus.SC_OK)) {
      try {
        notifyOnBannerLoaded(
          bannerInfo.mBannerContent,
          // FIXME: type of banner must exist
          null == bannerInfo.mBannerAdType
            ? BannerAdType.plus1
            : BannerAdType.valueOf(bannerInfo.mBannerAdType)
        );
      } catch (IllegalArgumentException e) {
        Log.e(LOGTAG, "Unsupported ad type: " + bannerInfo.mBannerAdType, e);

        notifyOnBannerLoadFailed(LoadError.UnknownAnswer);
      }
    } else {
      Log.e(
        LOGTAG,
        "An error occurred on the server. Status code was "
          + bannerInfo.mResponseCode.toString()
      );

      notifyOnBannerLoadFailed(LoadError.UnknownAnswer);
    }
  }

  private void notifyOnBannerLoaded(String content, BannerAdType adType) {
    for (Plus1BannerDownloadListener listener : mDownloadListenerList)
      listener.onBannerLoaded(content, adType);
  }

  private void notifyOnBannerLoadFailed(LoadError loadError) {
    for (Plus1BannerDownloadListener listener : mDownloadListenerList)
      listener.onBannerLoadFailed(loadError);
  }
}




Java Source Code List

ru.wapstart.plus1.bart.BartActivity.java
ru.wapstart.plus1.sdk.AdView.java
ru.wapstart.plus1.sdk.ApplicationBrowser.java
ru.wapstart.plus1.sdk.Base64.java
ru.wapstart.plus1.sdk.BaseAdView.java
ru.wapstart.plus1.sdk.BaseRequestLoader.java
ru.wapstart.plus1.sdk.Constants.java
ru.wapstart.plus1.sdk.HtmlBannerDownloader.java
ru.wapstart.plus1.sdk.InitRequestLoader.java
ru.wapstart.plus1.sdk.JsonHelper.java
ru.wapstart.plus1.sdk.MraidAbstractController.java
ru.wapstart.plus1.sdk.MraidBrowserController.java
ru.wapstart.plus1.sdk.MraidCommandRegistry.java
ru.wapstart.plus1.sdk.MraidCommand.java
ru.wapstart.plus1.sdk.MraidDisplayController.java
ru.wapstart.plus1.sdk.MraidProperty.java
ru.wapstart.plus1.sdk.MraidView.java
ru.wapstart.plus1.sdk.Plus1AdAnimator.java
ru.wapstart.plus1.sdk.Plus1BannerAsker.java
ru.wapstart.plus1.sdk.Plus1BannerDownloadListener.java
ru.wapstart.plus1.sdk.Plus1BannerView.java
ru.wapstart.plus1.sdk.Plus1Helper.java
ru.wapstart.plus1.sdk.Plus1Request.java