初始化
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
package com.ifish.jpush.push;
|
||||
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.ifish.jpush.common.ClientConfig;
|
||||
import com.ifish.jpush.common.ServiceHelper;
|
||||
import com.ifish.jpush.common.connection.HttpProxy;
|
||||
import com.ifish.jpush.common.connection.IHttpClient;
|
||||
import com.ifish.jpush.common.connection.NativeHttpClient;
|
||||
import com.ifish.jpush.common.resp.APIConnectionException;
|
||||
import com.ifish.jpush.common.resp.APIRequestException;
|
||||
import com.ifish.jpush.common.resp.BaseResult;
|
||||
import com.ifish.jpush.common.resp.ResponseWrapper;
|
||||
import com.ifish.jpush.push.model.PushPayload;
|
||||
import com.ifish.jpush.utils.Preconditions;
|
||||
import com.ifish.jpush.utils.StringUtils;
|
||||
|
||||
|
||||
/**
|
||||
* Entrance for sending Push.
|
||||
*
|
||||
* For the following parameters, you can set them by instance creation.
|
||||
* This action will override setting in PushPayload Optional.
|
||||
* * apnsProduction If not present, the default is true.
|
||||
* * timeToLive If not present, the default is 86400(s) (one day).
|
||||
*
|
||||
* Can be used directly.
|
||||
*/
|
||||
public class PushClient {
|
||||
|
||||
private final NativeHttpClient _httpClient;
|
||||
private String _baseUrl;
|
||||
private String _pushPath;
|
||||
private String _pushValidatePath;
|
||||
|
||||
private JsonParser _jsonParser = new JsonParser();
|
||||
|
||||
// If not present, true by default.
|
||||
private boolean _apnsProduction = true;
|
||||
|
||||
// If not present, the default value is 86400(s) (one day)
|
||||
private long _timeToLive = 60 * 60 * 24;
|
||||
|
||||
private boolean _globalSettingEnabled = false;
|
||||
|
||||
/**
|
||||
* Create a Push Client.
|
||||
*
|
||||
* @param masterSecret API access secret of the appKey.
|
||||
* @param appKey The KEY of one application on JPush.
|
||||
*/
|
||||
public PushClient(String masterSecret, String appKey) {
|
||||
this(masterSecret, appKey, IHttpClient.DEFAULT_MAX_RETRY_TIMES);
|
||||
}
|
||||
|
||||
public PushClient(String masterSecret, String appKey, int maxRetryTimes) {
|
||||
this(masterSecret, appKey, maxRetryTimes, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a Push Client with max retry times.
|
||||
*
|
||||
* @param masterSecret API access secret of the appKey.
|
||||
* @param appKey The KEY of one application on JPush.
|
||||
* @param maxRetryTimes max retry times
|
||||
*/
|
||||
public PushClient(String masterSecret, String appKey, int maxRetryTimes, HttpProxy proxy) {
|
||||
this(masterSecret, appKey, maxRetryTimes, proxy, ClientConfig.getInstance());
|
||||
}
|
||||
|
||||
public PushClient(String masterSecret, String appKey, int maxRetryTimes, HttpProxy proxy, ClientConfig conf) {
|
||||
ServiceHelper.checkBasic(appKey, masterSecret);
|
||||
|
||||
this._baseUrl = (String) conf.get(ClientConfig.PUSH_HOST_NAME);
|
||||
this._pushPath = (String) conf.get(ClientConfig.PUSH_PATH);
|
||||
this._pushValidatePath = (String) conf.get(ClientConfig.PUSH_VALIDATE_PATH);
|
||||
|
||||
String authCode = ServiceHelper.getBasicAuthorization(appKey, masterSecret);
|
||||
this._httpClient = new NativeHttpClient(authCode, maxRetryTimes, proxy);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a Push Client with global settings.
|
||||
*
|
||||
* If you want different settings from default globally, this constructor is what you needed.
|
||||
*
|
||||
* @param masterSecret API access secret of the appKey.
|
||||
* @param appKey The KEY of one application on JPush.
|
||||
* @param apnsProduction Global APNs environment setting. It will override PushPayload Options.
|
||||
* @param timeToLive Global time_to_live setting. It will override PushPayload Options.
|
||||
*/
|
||||
public PushClient(String masterSecret, String appKey, boolean apnsProduction, long timeToLive) {
|
||||
this(masterSecret, appKey);
|
||||
|
||||
this._apnsProduction = apnsProduction;
|
||||
this._timeToLive = timeToLive;
|
||||
this._globalSettingEnabled = true;
|
||||
}
|
||||
|
||||
public void setDefaults(boolean apnsProduction, long timeToLive) {
|
||||
this._apnsProduction = apnsProduction;
|
||||
this._timeToLive = timeToLive;
|
||||
this._globalSettingEnabled = true;
|
||||
}
|
||||
|
||||
public void setBaseUrl(String baseUrl) {
|
||||
this._baseUrl = baseUrl;
|
||||
}
|
||||
|
||||
public PushResult sendPush(PushPayload pushPayload) throws APIConnectionException, APIRequestException {
|
||||
Preconditions.checkArgument(! (null == pushPayload), "pushPayload should not be null");
|
||||
|
||||
if (_globalSettingEnabled) {
|
||||
pushPayload.resetOptionsTimeToLive(_timeToLive);
|
||||
pushPayload.resetOptionsApnsProduction(_apnsProduction);
|
||||
}
|
||||
|
||||
ResponseWrapper response = _httpClient.sendPost(_baseUrl + _pushPath, pushPayload.toString());
|
||||
|
||||
return BaseResult.fromResponse(response, PushResult.class);
|
||||
}
|
||||
|
||||
public PushResult sendPushValidate(PushPayload pushPayload) throws APIConnectionException, APIRequestException {
|
||||
Preconditions.checkArgument(! (null == pushPayload), "pushPayload should not be null");
|
||||
|
||||
if (_globalSettingEnabled) {
|
||||
pushPayload.resetOptionsTimeToLive(_timeToLive);
|
||||
pushPayload.resetOptionsApnsProduction(_apnsProduction);
|
||||
}
|
||||
|
||||
ResponseWrapper response = _httpClient.sendPost(_baseUrl + _pushValidatePath, pushPayload.toString());
|
||||
|
||||
return BaseResult.fromResponse(response, PushResult.class);
|
||||
}
|
||||
|
||||
public PushResult sendPush(String payloadString) throws APIConnectionException, APIRequestException {
|
||||
Preconditions.checkArgument(StringUtils.isNotEmpty(payloadString), "pushPayload should not be empty");
|
||||
|
||||
try {
|
||||
_jsonParser.parse(payloadString);
|
||||
} catch (JsonParseException e) {
|
||||
Preconditions.checkArgument(false, "payloadString should be a valid JSON string.");
|
||||
}
|
||||
|
||||
ResponseWrapper response = _httpClient.sendPost(_baseUrl + _pushPath, payloadString);
|
||||
|
||||
return BaseResult.fromResponse(response, PushResult.class);
|
||||
}
|
||||
|
||||
public PushResult sendPushValidate(String payloadString) throws APIConnectionException, APIRequestException {
|
||||
Preconditions.checkArgument(StringUtils.isNotEmpty(payloadString), "pushPayload should not be empty");
|
||||
|
||||
try {
|
||||
_jsonParser.parse(payloadString);
|
||||
} catch (JsonParseException e) {
|
||||
Preconditions.checkArgument(false, "payloadString should be a valid JSON string.");
|
||||
}
|
||||
|
||||
ResponseWrapper response = _httpClient.sendPost(_baseUrl + _pushValidatePath, payloadString);
|
||||
|
||||
return BaseResult.fromResponse(response, PushResult.class);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user