Android Open Source - sdk-android-2 Open Request






From Project

Back to project page sdk-android-2.

License

The source code is released under:

Apache License

If you think the Android project sdk-android-2 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 2013 Medium Entertainment, Inc.
 *//from w w  w  . j ava 2 s  .co  m
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.playhaven.android.req;

import android.content.Context;
import android.content.SharedPreferences;
import com.jayway.jsonpath.InvalidPathException;
import com.playhaven.android.PlayHaven;
import com.playhaven.android.PlayHavenException;
import com.playhaven.android.cache.Cache;
import com.playhaven.android.cache.CacheResponseHandler;
import com.playhaven.android.cache.CachedInfo;
import com.playhaven.android.data.JsonUrlExtractor;
import com.playhaven.android.util.JsonUtil;
import com.playhaven.android.util.KontagentUtil;
import com.playhaven.android.util.TimeZoneFormatter;
import org.springframework.http.HttpMethod;
import org.springframework.web.util.UriComponentsBuilder;

import java.net.URL;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

import static com.playhaven.android.compat.VendorCompat.ResourceType;

/**
 * Make an OPEN request to PlayHaven
 */
public class OpenRequest
extends PlayHavenRequest
{
    private static final String SCOUNT = "scount";
    private static final String SSUM = "ssum";
    private static final String STIME = "stime";
    private static final String SSTART = "sstart";
    private Cache cache;

    public OpenRequest()
    {
        super();
        setMethod(HttpMethod.POST);
    }

    @Override
    protected UriComponentsBuilder createUrl(android.content.Context context) throws PlayHavenException {
        UriComponentsBuilder builder = super.createUrl(context);
        builder.queryParam("tz", TimeZoneFormatter.getDefaultTimezone());

        String ktsid = KontagentUtil.getSenderId(context);
        if(ktsid == null)
        {
            ktsid = KontagentUtil.getSenderIdsAsJson(context);
            if(ktsid != null)
                builder.queryParam("ktsids", ktsid);
        }// else base request will add it in, don't duplicate

        SharedPreferences pref = PlayHaven.getPreferences(context);
        int scount = pref.getInt(SCOUNT, 0);
        long ssum = pref.getLong(SSUM, 0);
        long stime = pref.getLong(STIME, 0);
        ssum += stime;

        builder.queryParam(SCOUNT, scount);
        builder.queryParam(SSUM, ssum);

        SharedPreferences.Editor edit = pref.edit();
        // Increment count
        scount++;
        edit.putInt(SCOUNT, scount);
        // Clear current game time
        edit.putLong(STIME, 0);
        // Don't alter the previous sum until success
        // Save a start time
        Calendar rightNow = Calendar.getInstance();
        Date date = rightNow.getTime();
        edit.putLong(SSTART, date.getTime());
        // Commit changes
        edit.commit();

        return builder;
    }

    protected void handleResponse(Context context, String json)
    {
        SharedPreferences pref = PlayHaven.getPreferences(context);
        SharedPreferences.Editor edit = pref.edit();
        // reset SCOUNT
        edit.putInt(SCOUNT, 1);
        // reset SSUM
        edit.putLong(SSUM, 0);
        // Commit changes
        edit.commit();

        /**
         * Setup Kontagent information, if available
         */
        try{
            String ktapi = JsonUtil.asString(json, "$.response.ktapi");
            String ktsid = JsonUtil.asString(json, "$.response.ktsid");
            KontagentUtil.setSenderId(context, ktapi, ktsid);
        }catch(InvalidPathException e){
            // no-op
        }

        try{
            String newApiEndpoint = JsonUtil.asString(json, "$.response.prefix");
            if(newApiEndpoint != null)
            {
                if(!newApiEndpoint.endsWith("/"))
                    newApiEndpoint = newApiEndpoint + "/";

                String key = PlayHaven.Config.APIServer.toString();
                edit.putString(key, newApiEndpoint);
                edit.commit();
                PlayHaven.d("%s: %s", key, pref.getString(key, "unset"));
            }
        }catch(InvalidPathException e){
            // no-op
        }

        try{
            if(cache == null)
                cache = new Cache(context);

            ArrayList<String> urls = new ArrayList<String>();
            urls.addAll(JsonUrlExtractor.getContentTemplates(json));
            cache.bulkRequest(new CacheResponseHandler() {
                @Override
                public void cacheSuccess(CachedInfo... cachedInfos) {
                    /* no-op, just don't precache */
                }

                @Override
                public void cacheFail(URL url, PlayHavenException exception) {
                    /* no-op, just don't precache */
                }
            }, urls);
        } catch (Exception e) {
            /* no-op, just don't precache */
        }

        super.handleResponse(context, json);
    }

    @Override
    protected int getApiPath(Context context) 
    {
        return getCompat(context).getResourceId(context, ResourceType.string, "playhaven_request_open_v3");
    }
}




Java Source Code List

com.playhaven.android.DeviceId.java
com.playhaven.android.PlacementListener.java
com.playhaven.android.Placement.java
com.playhaven.android.PlayHavenException.java
com.playhaven.android.PlayHaven.java
com.playhaven.android.PushPlacement.java
com.playhaven.android.cache.BulkCacheDownloader.java
com.playhaven.android.cache.CacheCleaner.java
com.playhaven.android.cache.CacheDownloader.java
com.playhaven.android.cache.CacheResponseHandler.java
com.playhaven.android.cache.Cache.java
com.playhaven.android.cache.CachedInfo.java
com.playhaven.android.cache.package-info.java
com.playhaven.android.compat.UnityCompat.java
com.playhaven.android.compat.VendorCompat.java
com.playhaven.android.data.ContentUnitType.java
com.playhaven.android.data.CustomEvent.java
com.playhaven.android.data.DataCollectionField.java
com.playhaven.android.data.JsonUrlExtractor.java
com.playhaven.android.data.Purchase.java
com.playhaven.android.data.Reward.java
com.playhaven.android.data.package-info.java
com.playhaven.android.diagnostic.APIValidationIndicators.java
com.playhaven.android.diagnostic.DiagnosticApp.java
com.playhaven.android.diagnostic.DiagnosticPreferences.java
com.playhaven.android.diagnostic.InstrumentationReceiver.java
com.playhaven.android.diagnostic.Launcher.java
com.playhaven.android.diagnostic.OutputBox.java
com.playhaven.android.diagnostic.RequestTypeAdapter.java
com.playhaven.android.diagnostic.RequestType.java
com.playhaven.android.examples.ContentExample2.java
com.playhaven.android.examples.ContentExample.java
com.playhaven.android.examples.DialogExample.java
com.playhaven.android.examples.DisplayOptExample.java
com.playhaven.android.examples.EmbeddedExample.java
com.playhaven.android.examples.IAPTrackingExample.java
com.playhaven.android.examples.LoggingExample.java
com.playhaven.android.examples.MoreGamesExample.java
com.playhaven.android.examples.NoContent1Example.java
com.playhaven.android.examples.NoContent2Example.java
com.playhaven.android.examples.OnResumeExample.java
com.playhaven.android.examples.OpenExample.java
com.playhaven.android.examples.OptInExample.java
com.playhaven.android.examples.PreloadDialogExample.java
com.playhaven.android.examples.PreloadExample.java
com.playhaven.android.examples.PurchaseExample.java
com.playhaven.android.examples.RewardExample.java
com.playhaven.android.examples.WebviewFullscreenExample.java
com.playhaven.android.push.GCMBroadcastReceiver.java
com.playhaven.android.push.GCMRegistrationRequest.java
com.playhaven.android.push.NotificationBuilder.java
com.playhaven.android.push.PushReceiver.java
com.playhaven.android.req.ContentDispatchRequest.java
com.playhaven.android.req.ContentDispatchType.java
com.playhaven.android.req.ContentRequest.java
com.playhaven.android.req.ContentUnitRequest.java
com.playhaven.android.req.CustomEventRequest.java
com.playhaven.android.req.Identifier.java
com.playhaven.android.req.InstallRequest.java
com.playhaven.android.req.MetadataRequest.java
com.playhaven.android.req.NoContentException.java
com.playhaven.android.req.NoIdentifierException.java
com.playhaven.android.req.OpenRequest.java
com.playhaven.android.req.PlayHavenRequest.java
com.playhaven.android.req.PurchaseTrackingRequest.java
com.playhaven.android.req.PushTrackingRequest.java
com.playhaven.android.req.RequestListener.java
com.playhaven.android.req.ServerErrorHandler.java
com.playhaven.android.req.SignatureException.java
com.playhaven.android.req.SubcontentRequest.java
com.playhaven.android.req.UrlRequest.java
com.playhaven.android.req.UserAgent.java
com.playhaven.android.req.package-info.java
com.playhaven.android.util.DisplayUtil.java
com.playhaven.android.util.GoogleAdvertisementUtil.java
com.playhaven.android.util.GooglePlayServicesUtil.java
com.playhaven.android.util.JsonUtil.java
com.playhaven.android.util.KontagentUtil.java
com.playhaven.android.util.MemoryReporter.java
com.playhaven.android.util.TimeZoneFormatter.java
com.playhaven.android.util.package-info.java
com.playhaven.android.view.Badge.java
com.playhaven.android.view.ChildView.java
com.playhaven.android.view.DefaultPlayHavenListener.java
com.playhaven.android.view.FrameManager.java
com.playhaven.android.view.FullScreen.java
com.playhaven.android.view.HTMLView.java
com.playhaven.android.view.MoreGames.java
com.playhaven.android.view.NativeView.java
com.playhaven.android.view.PlayHavenListener.java
com.playhaven.android.view.PlayHavenView.java
com.playhaven.android.view.Windowed.java
com.playhaven.android.view.package-info.java
com.playhaven.android.package-info.java
javax.annotation.Generated.java
javax.annotation.package-info.java
${package}.__artifactId__Activity.java