Java tutorial
/** * Copyright 2013 Medium Entertainment, Inc. * * 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 java.util.Iterator; import org.json.JSONException; import org.json.JSONObject; import org.springframework.web.util.UriComponentsBuilder; import android.content.Context; import com.playhaven.android.PlayHaven; import com.playhaven.android.PlayHavenException; import com.playhaven.android.compat.VendorCompat.ResourceType; /** * Enables requesting a CU via a subcontent request Url * instead of a placement. */ public class SubcontentRequest extends PlayHavenRequest { private String mDispatchContext; /** * Usually a subcontent request is initiated by a template, so it * will provide the desired url. * @param url the url generated by a template */ public SubcontentRequest(String dispatchContext) { super(); this.mDispatchContext = dispatchContext; } @Override protected UriComponentsBuilder createUrl(Context context) throws PlayHavenException { UriComponentsBuilder builder = super.createUrl(context); try { JSONObject addlParams = new JSONObject(mDispatchContext).getJSONObject("additional_parameters"); Iterator<?> paramKeys = addlParams.keys(); String key = null; while (paramKeys.hasNext()) { key = (String) paramKeys.next(); builder.queryParam(key, addlParams.getString(key)); } } catch (JSONException e) { // Hopefully the broken element won't be critical. PlayHaven.e(e); } return builder; } @Override public String getUrl(Context context) throws PlayHavenException { return createUrl(context).build().encode().toUriString(); } @Override protected int getApiPath(Context context) { return getCompat(context).getResourceId(context, ResourceType.string, "playhaven_request_subcontent"); } }