All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xerox.amazonws.devpay.DevPayLS Maven / Gradle / Ivy

//
// typica - A client library for Amazon Web Services
// Copyright (C) 2007,2008 Xerox Corporation
// 
// 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.xerox.amazonws.devpay;

import java.io.InputStream;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.xml.bind.JAXBException;
import org.xml.sax.SAXException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpException;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.methods.HttpGet;


import com.xerox.amazonws.common.AWSException;
import com.xerox.amazonws.common.AWSQueryConnection;
import com.xerox.amazonws.typica.jaxb.ActivateDesktopProductResponse;
import com.xerox.amazonws.typica.jaxb.ActivateDesktopProductResult;
import com.xerox.amazonws.typica.jaxb.ActivateHostedProductResponse;
import com.xerox.amazonws.typica.jaxb.ActivateHostedProductResult;
import com.xerox.amazonws.typica.jaxb.GetActiveSubscriptionsByPidResponse;
import com.xerox.amazonws.typica.jaxb.GetActiveSubscriptionsByPidResult;
import com.xerox.amazonws.typica.jaxb.RefreshUserTokenResponse;
import com.xerox.amazonws.typica.jaxb.RefreshUserTokenResult;
import com.xerox.amazonws.typica.jaxb.VerifyProductSubscriptionByPidResponse;
import com.xerox.amazonws.typica.jaxb.VerifyProductSubscriptionByPidResult;
import com.xerox.amazonws.typica.jaxb.VerifyProductSubscriptionByTokensResponse;
import com.xerox.amazonws.typica.jaxb.VerifyProductSubscriptionByTokensResult;

/**
 * This class provides an interface with the Amazon DevPay LS service. It provides high level
 * methods for listing and creating and deleting domains.
 *
 * @author D. Kavanagh
 * @author [email protected]
 */
public class DevPayLS extends AWSQueryConnection {

    private static Log logger = LogFactory.getLog(DevPayLS.class);

	/**
	 * Initializes the devpay service with your AWS login information.
	 *
     * @param awsAccessId The your user key into AWS
     * @param awsSecretKey The secret string used to generate signatures for authentication.
	 */
    public DevPayLS(String awsAccessId, String awsSecretKey) {
        this(awsAccessId, awsSecretKey, true);
    }

	/**
	 * Initializes the devpay service with your AWS login information.
	 *
     * @param awsAccessId The your user key into AWS
     * @param awsSecretKey The secret string used to generate signatures for authentication.
     * @param isSecure True if the data should be encrypted on the wire on the way to or from LS.
	 */
    public DevPayLS(String awsAccessId, String awsSecretKey, boolean isSecure) {
        this(awsAccessId, awsSecretKey, isSecure, "ls.amazonaws.com");
    }

	/**
	 * Initializes the devpay service with your AWS login information.
	 *
     * @param awsAccessId The your user key into AWS
     * @param awsSecretKey The secret string used to generate signatures for authentication.
     * @param isSecure True if the data should be encrypted on the wire on the way to or from LS.
     * @param server Which host to connect to.  Usually, this will be ls.amazonaws.com
	 */
    public DevPayLS(String awsAccessId, String awsSecretKey, boolean isSecure,
                             String server)
    {
        this(awsAccessId, awsSecretKey, isSecure, server,
             isSecure ? 443 : 80);
    }

    /**
	 * Initializes the devpay service with your AWS login information.
	 *
     * @param awsAccessId The your user key into AWS
     * @param awsSecretKey The secret string used to generate signatures for authentication.
     * @param isSecure True if the data should be encrypted on the wire on the way to or from LS.
     * @param server Which host to connect to.  Usually, this will be ls.amazonaws.com
     * @param port Which port to use.
     */
    public DevPayLS(String awsAccessId, String awsSecretKey, boolean isSecure,
                             String server, int port)
    {
		super(awsAccessId, awsSecretKey, isSecure, server, port);
		setVersionHeader(this);
    }

	/**
	 * This method returns the signature version
	 *
	 * @return the version
	 */
	public int getSignatureVersion() {
		return super.getSignatureVersion();
	}

	/**
	 * This method sets the signature version used to sign requests (0 or 1).
	 *
	 * @param version signature version
	 */
	public void setSignatureVersion(int version) {
		super.setSignatureVersion(version);
	}

	/**
	 * Activates a desktop product.
	 *
	 * @param activationKey key obtained from the customer
	 * @param productToken token for your product
	 * @return the product info
	 * @throws DevPayException wraps checked exceptions
	 */
	public DesktopProductInfo activateDesktopProduct(String activationKey, String productToken) throws DevPayException {
		Map params = new HashMap();
		params.put("ActivationKey", activationKey);
		params.put("ProductToken", productToken);
		HttpGet method = new HttpGet();
		ActivateDesktopProductResponse response =
					makeRequestInt(method, "ActivateDesktopProduct", params, ActivateDesktopProductResponse.class);

		ActivateDesktopProductResult result = response.getActivateDesktopProductResult();
		return new DesktopProductInfo(result.getAWSAccessKeyId(), result.getSecretAccessKey(), result.getUserToken());
	}

	/**
	 * Activates a hosted product.
	 *
	 * @param activationKey key obtained from the customer
	 * @param productToken token for your product
	 * @return the product info
	 * @throws DevPayException wraps checked exceptions
	 */
	public HostedProductInfo activateHostedProduct(String activationKey, String productToken) throws DevPayException {
		Map params = new HashMap();
		params.put("ActivationKey", activationKey);
		params.put("ProductToken", productToken);
		HttpGet method = new HttpGet();
		ActivateHostedProductResponse response =
					makeRequestInt(method, "ActivateHostedProduct", params, ActivateHostedProductResponse.class);

		ActivateHostedProductResult result = response.getActivateHostedProductResult();
		return new HostedProductInfo(result.getPersistentIdentifier(), result.getUserToken());
	}

	/**
	 * Gets list of active subscriptions by persistent identifier
	 *
	 * @param persistentIdentifier customers's PID
	 * @return true if product is subscribed
	 * @throws DevPayException wraps checked exceptions
	 */
	public List getActiveSubscriptionsByPid(String persistentIdentifier) throws DevPayException {
		Map params = new HashMap();
		params.put("PersistentIdentifier", persistentIdentifier);
		HttpGet method = new HttpGet();
		GetActiveSubscriptionsByPidResponse response =
					makeRequestInt(method, "GetActiveSubscriptionsByPid", params, GetActiveSubscriptionsByPidResponse.class);

		GetActiveSubscriptionsByPidResult result = response.getGetActiveSubscriptionsByPidResult();
		return result.getProductCodes();
	}

	/**
	 * Verifies that a specified product is subscribed to by a customer.
	 *
	 * @param persistentIdentifier customers's PID
	 * @param productCode the product code
	 * @return true if product is subscribed
	 * @throws DevPayException wraps checked exceptions
	 */
	public boolean isProductSubscribedByPid(String persistentIdentifier, String productCode) throws DevPayException {
		Map params = new HashMap();
		params.put("PersistentIdentifier", persistentIdentifier);
		params.put("ProductCode", productCode);
		HttpGet method = new HttpGet();
		VerifyProductSubscriptionByPidResponse response =
					makeRequestInt(method, "VerifyProductSubscriptionByPid", params, VerifyProductSubscriptionByPidResponse.class);

		VerifyProductSubscriptionByPidResult result = response.getVerifyProductSubscriptionByPidResult();
		return result.isSubscribed();
	}

	/**
	 * Verifies that a specified product is subscribed to by a customer.
	 *
	 * @param productToken the product token
	 * @param userToken the user token
	 * @return the list of product codes 
	 * @throws DevPayException wraps checked exceptions
	 */
	public boolean isProductSubscribedByTokens(String productToken, String userToken) throws DevPayException {
		Map params = new HashMap();
		params.put("ProductToken", productToken);
		params.put("UserToken", userToken);
		HttpGet method = new HttpGet();
		VerifyProductSubscriptionByTokensResponse response =
					makeRequestInt(method, "VerifyProductSubscriptionByTokens", params, VerifyProductSubscriptionByTokensResponse.class);

		VerifyProductSubscriptionByTokensResult result = response.getVerifyProductSubscriptionByTokensResult();
		return result.isSubscribed();
	}

	/**
	 * Gets the most up-to-date version of the user token.
	 *
	 * @param userToken the user token
	 * @param additionalTokens optional token (see dev guide), null if not used
	 * @return the list of product codes 
	 * @throws DevPayException wraps checked exceptions
	 */
	public String refreshUserToken(String userToken, String additionalTokens) throws DevPayException {
		Map params = new HashMap();
		params.put("UserToken", userToken);
		if (additionalTokens != null) {
			params.put("AdditionalTokens", additionalTokens);
		}
		HttpGet method = new HttpGet();
		RefreshUserTokenResponse response =
					makeRequestInt(method, "RefreshUserToken", params, RefreshUserTokenResponse.class);

		RefreshUserTokenResult result = response.getRefreshUserTokenResult();
		return result.getUserToken();
	}

	protected  T makeRequestInt(HttpRequestBase method, String action, Map params, Class respType)
		throws DevPayException {
		try {
			return makeRequest(method, action, params, respType);
		} catch (AWSException ex) {
			throw new DevPayException(ex);
		} catch (JAXBException ex) {
			throw new DevPayException("Problem parsing returned message.", ex);
		} catch (SAXException ex) {
			throw new DevPayException("Problem parsing returned message.", ex);
		} catch (HttpException ex) {
			throw new DevPayException(ex.getMessage(), ex);
		} catch (IOException ex) {
			throw new DevPayException(ex.getMessage(), ex);
		}
	}

	static void setVersionHeader(AWSQueryConnection connection) {
		ArrayList vals = new ArrayList();
		vals.add("2008-04-28");
		connection.getHeaders().put("Version", vals);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy