package com.cku.sms;

import java.io.IOException;
import java.util.Date;
import java.util.TreeMap;

import org.apache.commons.httpclient.HttpException;

import com.cku.core.ZAErrorCode;
import com.cku.core.ZAException;
import com.cku.util.DateUtils;
import com.cku.util.Debugger;
import com.cku.util.HttpClientUtil;
import com.cku.util.HttpResult;
import com.cku.util.MD5Generator;

public class SmsCode
{
	public static void publishToUCPASS(String phone, String[] params) throws HttpException, IOException, ZAException
	{
		String url = "http://www.ucpaas.com/maap/sms/code";
		TreeMap<String, String> paramMap = new TreeMap<String, String>();
		
		String appId = "2c36af85e71e4e29a9e36f0eeb7f37f6";
		String accountId = "e9f1269da05dbc97eba2fb9512359bb1";
		String authToken = "9d4ead73f30ff46b01319e9883f64f69";
		String templateId = "20143";
		
		String timestamp = DateUtils.formatDate(new Date(), "yyyyMMddHHmmssSSS");
		String sign = MD5Generator.generate(accountId + timestamp + authToken);
		
		paramMap.put("sid", accountId);
		paramMap.put("appId", appId);
		paramMap.put("time", timestamp);
		paramMap.put("sign", sign);
		paramMap.put("to", phone);
		paramMap.put("templateId", templateId);
		
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < params.length; ++i)
		{
			sb.append(params[i]);
			if (i < params.length - 1)
			{
				sb.append(",");
			}
		}
		
		paramMap.put("param", sb.toString());
		
		HttpResult hr = HttpClientUtil.get(null, url, paramMap);
		Debugger.doAssert(hr.getResultCode() == 200, ZAErrorCode.ZA_ERC_INVALID_STATUS, "Failed to get sms code(ucpass)-%s", 
				hr.getResponseBody());
	}
	
	public static void main(String[] args) throws HttpException, IOException, ZAException
	{
		String params[] = { "123456", "10" };
		publishToUCPASS("15210337190", params);
	}
}
