package cn.emay.sdk.client; 
 | 
  
 | 
import java.io.File; 
 | 
import java.util.Date; 
 | 
  
 | 
import cn.emay.sdk.common.CommonConstants; 
 | 
import cn.emay.sdk.core.dto.sms.common.ResultModel; 
 | 
import cn.emay.sdk.core.dto.sms.request.BalanceRequest; 
 | 
import cn.emay.sdk.core.dto.sms.request.MoRequest; 
 | 
import cn.emay.sdk.core.dto.sms.request.ReportRequest; 
 | 
import cn.emay.sdk.core.dto.sms.request.RetrieveReportRequest; 
 | 
import cn.emay.sdk.core.dto.sms.request.SmsBatchOnlyRequest; 
 | 
import cn.emay.sdk.core.dto.sms.request.SmsBatchRequest; 
 | 
import cn.emay.sdk.core.dto.sms.request.SmsPersonalityAllRequest; 
 | 
import cn.emay.sdk.core.dto.sms.request.SmsPersonalityRequest; 
 | 
import cn.emay.sdk.core.dto.sms.request.SmsSingleRequest; 
 | 
import cn.emay.sdk.core.dto.sms.response.BalanceResponse; 
 | 
import cn.emay.sdk.core.dto.sms.response.MoResponse; 
 | 
import cn.emay.sdk.core.dto.sms.response.ReportResponse; 
 | 
import cn.emay.sdk.core.dto.sms.response.RetrieveReportResponse; 
 | 
import cn.emay.sdk.core.dto.sms.response.SmsResponse; 
 | 
import cn.emay.sdk.core.service.SDKService; 
 | 
import cn.emay.sdk.core.service.security.SDKSecurityServiceImpl; 
 | 
import cn.emay.sdk.task.ContrastHostTask; 
 | 
import cn.emay.sdk.util.DateUtil; 
 | 
import cn.emay.sdk.util.HostUtil; 
 | 
import cn.emay.sdk.util.Md5; 
 | 
import cn.emay.sdk.util.StringUtil; 
 | 
import cn.emay.sdk.util.exception.SDKParamsException; 
 | 
import cn.emay.sdk.util.http.common.EmayHttpResultCode; 
 | 
  
 | 
public class SmsSDKClient { 
 | 
  
 | 
    /** 
 | 
     * 亿美服务帐号 
 | 
     */ 
 | 
    private String appId; 
 | 
    /** 
 | 
     * 亿美服务密码 
 | 
     */ 
 | 
    private String secretkey; 
 | 
  
 | 
    private SDKService service; 
 | 
    /** 
 | 
     * 亿美http请求地址 
 | 
     */ 
 | 
    private String host; 
 | 
    /** 
 | 
     * SDK缓存目录 
 | 
     */ 
 | 
    private File file; 
 | 
  
 | 
    /** 
 | 
     * @param ip 
 | 
     *            亿美网关IP 
 | 
     * @param port 
 | 
     *            亿美网关端口 
 | 
     * @param appId 
 | 
     *            亿美服务帐号 
 | 
     * @param secretkey 
 | 
     *            亿美服务密码 
 | 
     * @throws SDKParamsException 
 | 
     */ 
 | 
    public SmsSDKClient(String ip, int port, String appId, String secretkey) throws SDKParamsException { 
 | 
        if (StringUtil.isEmpty(appId) || StringUtil.isEmpty(secretkey) || StringUtil.isEmpty(ip) || port <= 0) { 
 | 
            throw new SDKParamsException("SDK params error"); 
 | 
        } 
 | 
        this.appId = appId; 
 | 
        this.secretkey = secretkey; 
 | 
        if (!ip.toLowerCase().startsWith("http://")) { 
 | 
            ip = "http://" + ip; 
 | 
        } 
 | 
        host = ip + ":" + port; 
 | 
        CommonConstants.isBest = true; 
 | 
        CommonConstants.bestUrl = host; 
 | 
        service = new SDKSecurityServiceImpl(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * @param appId 
 | 
     *            亿美服务帐号 
 | 
     * @param secretkey 
 | 
     *            亿美服务密码 
 | 
     * @throws SDKParamsException 
 | 
     */ 
 | 
    public SmsSDKClient(String appId, String secretkey) throws SDKParamsException { 
 | 
        this(appId, secretkey, ""); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     *  
 | 
     * @param appId 
 | 
     *            亿美服务帐号 
 | 
     * @param secretkey 
 | 
     *            亿美服务密码 
 | 
     * @param filePath 
 | 
     *            缓存数据目录(用于存储请求地址) 
 | 
     * @throws SDKParamsException 
 | 
     */ 
 | 
    public SmsSDKClient(String appId, String secretkey, String filePath) throws SDKParamsException { 
 | 
        if (StringUtil.isEmpty(appId) || StringUtil.isEmpty(secretkey)) { 
 | 
            throw new SDKParamsException("SDK params error"); 
 | 
        } 
 | 
        this.appId = appId; 
 | 
        this.secretkey = secretkey; 
 | 
        file = HostUtil.creatCacheFile(filePath); 
 | 
        String url = HostUtil.getFileUrl(file, appId); 
 | 
        if (StringUtil.isEmpty(url)) { 
 | 
            HostUtil.getSDKInter(); 
 | 
            if (CommonConstants.interList == null || CommonConstants.interList.isEmpty()) { 
 | 
                throw new SDKParamsException("SDK Request interface address exception"); 
 | 
            } 
 | 
            new Thread(new ContrastHostTask(file, appId, secretkey)).start(); 
 | 
            CommonConstants.bestUrl = CommonConstants.interList.get(0); 
 | 
        } else { 
 | 
            CommonConstants.isBest = true; 
 | 
            CommonConstants.bestUrl = url; 
 | 
        } 
 | 
        service = new SDKSecurityServiceImpl(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 状态报告重新获取 
 | 
     *  
 | 
     * @param reportRequest 
 | 
     * @return 
 | 
     */ 
 | 
    public ResultModel<RetrieveReportResponse> retrieveReport(RetrieveReportRequest reportRequest) { 
 | 
        String timestamp = DateUtil.toString(new Date(), "yyyyMMddHHmmss"); 
 | 
        String sign = Md5.md5((appId + secretkey + timestamp).getBytes()); 
 | 
        String url = (host == null || host.equals("")) ? CommonConstants.bestUrl : host; 
 | 
        return service.retrieveReport(appId, timestamp, sign, url, reportRequest); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 发送单条短信 
 | 
     *  
 | 
     * @param request 
 | 
     * @return 
 | 
     */ 
 | 
  
 | 
    public ResultModel<SmsResponse> sendSingleSms(SmsSingleRequest request) { 
 | 
        String url = (host == null || host.equals("")) ? CommonConstants.bestUrl : host; 
 | 
        return service.sendSingleSms(appId, secretkey, url, request); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 发送批次短信【非自定义smsid】 
 | 
     *  
 | 
     * @param request 
 | 
     * @return 
 | 
     */ 
 | 
    public ResultModel<SmsResponse[]> sendBatchOnlySms(SmsBatchOnlyRequest request) { 
 | 
        String url = (host == null || host.equals("")) ? CommonConstants.bestUrl : host; 
 | 
        return service.sendBatchOnlySms(appId, secretkey, url, request); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 发送批次短信【自定义smsid】 
 | 
     *  
 | 
     * @param request 
 | 
     * @return 
 | 
     * @throws SDKParamsException 
 | 
     */ 
 | 
    public ResultModel<SmsResponse[]> sendBatchSms(SmsBatchRequest request) throws SDKParamsException { 
 | 
        String url = (host == null || host.equals("")) ? CommonConstants.bestUrl : host; 
 | 
        return service.sendBatchSms(appId, secretkey, url, request); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 发送个性短信 
 | 
     *  
 | 
     * @param request 
 | 
     * @return 
 | 
     */ 
 | 
  
 | 
    public ResultModel<SmsResponse[]> sendPersonalitySms(SmsPersonalityRequest request) throws SDKParamsException { 
 | 
        String url = (host == null || host.equals("")) ? CommonConstants.bestUrl : host; 
 | 
        return service.sendPersonalitySms(appId, secretkey, url, request); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 发送个性短信【全属性个性】 
 | 
     *  
 | 
     * @param request 
 | 
     * @return 
 | 
     */ 
 | 
    public ResultModel<SmsResponse[]> sendPersonalityAllSMS(SmsPersonalityAllRequest request) throws SDKParamsException { 
 | 
        String url = (host == null || host.equals("")) ? CommonConstants.bestUrl : host; 
 | 
        return service.sendPersonalityAllSms(appId, secretkey, url, request); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取余额 
 | 
     *  
 | 
     * @param request 
 | 
     * @return 
 | 
     */ 
 | 
    public ResultModel<BalanceResponse> getBalance(BalanceRequest request) { 
 | 
        String url = (host == null || host.equals("")) ? CommonConstants.bestUrl : host; 
 | 
        return service.getBalance(appId, secretkey, url, request); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取状态报告 
 | 
     *  
 | 
     * @param request 
 | 
     * @return 
 | 
     */ 
 | 
  
 | 
    public ResultModel<ReportResponse[]> getReport(ReportRequest reportRequest) { 
 | 
        String url = ""; 
 | 
        if (CommonConstants.isBest) { 
 | 
            url = CommonConstants.bestUrl; 
 | 
        } else { 
 | 
            return new ResultModel<ReportResponse[]>(EmayHttpResultCode.SUCCESS.getCode(), new ReportResponse[0]); 
 | 
        } 
 | 
        return service.getReport(appId, secretkey, url, reportRequest); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取上行短信 
 | 
     *  
 | 
     * @param request 
 | 
     * @return 
 | 
     */ 
 | 
    public ResultModel<MoResponse[]> getMo(MoRequest request) { 
 | 
        String url = ""; 
 | 
        if (CommonConstants.isBest) { 
 | 
            url = CommonConstants.bestUrl; 
 | 
        } else { 
 | 
            return new ResultModel<MoResponse[]>(EmayHttpResultCode.SUCCESS.getCode(), new MoResponse[0]); 
 | 
        } 
 | 
        return service.getMo(appId, secretkey, url, request); 
 | 
    } 
 | 
  
 | 
} 
 |