94 lines
3.2 KiB
Plaintext
94 lines
3.2 KiB
Plaintext
package com.ifish.jpush.common;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Random;
|
|
import java.util.Set;
|
|
import java.util.regex.Pattern;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import com.google.gson.JsonArray;
|
|
import com.google.gson.JsonPrimitive;
|
|
import com.ifish.jpush.utils.Base64;
|
|
import com.ifish.jpush.utils.StringUtils;
|
|
|
|
public class ServiceHelper {
|
|
|
|
private static final Logger LOG = LoggerFactory.getLogger(ServiceHelper.class);
|
|
private final static Pattern PUSH_PATTERNS = Pattern.compile("[^a-zA-Z0-9]");
|
|
private final static String BASIC_PREFIX = "Basic";
|
|
|
|
private static final Random RANDOM = new Random(System.currentTimeMillis());
|
|
private static final int MIN = 100000;
|
|
private static final int MAX = Integer.MAX_VALUE;
|
|
|
|
private static final int MAX_BADGE_NUMBER = 99999;
|
|
|
|
private static final Pattern USERNAME_PATTERN = Pattern.compile("^[a-zA-Z0-9][a-zA-Z_0-9.、。@,-]*");
|
|
private static final Pattern DATE_PATTERN = Pattern.compile("[0-9]{4}-[0-9]{2}-[0-9]{2}");
|
|
private static final String DATE_FORMAT = "yyyy-MM-dd";
|
|
|
|
|
|
public static boolean isValidIntBadge(int intBadge) {
|
|
if (intBadge >= 0 && intBadge <= MAX_BADGE_NUMBER) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static int generateSendno() {
|
|
return RANDOM.nextInt((MAX - MIN) + 1) + MIN;
|
|
}
|
|
|
|
public static String getBasicAuthorization(String username, String password) {
|
|
String encodeKey = username + ":" + password;
|
|
return BASIC_PREFIX + " " + String.valueOf(Base64.encode(encodeKey.getBytes()));
|
|
}
|
|
|
|
public static void checkBasic(String appKey, String masterSecret) {
|
|
if (StringUtils.isEmpty(appKey)
|
|
|| StringUtils.isEmpty(masterSecret)) {
|
|
throw new IllegalArgumentException("appKey and masterSecret are both required.");
|
|
}
|
|
if (appKey.length() != 24
|
|
|| masterSecret.length() != 24
|
|
|| PUSH_PATTERNS.matcher(appKey).find()
|
|
|| PUSH_PATTERNS.matcher(masterSecret).find()) {
|
|
throw new IllegalArgumentException("appKey and masterSecret format is incorrect. "
|
|
+ "They should be 24 size, and be composed with alphabet and numbers. "
|
|
+ "Please confirm that they are coming from JPush Web Portal.");
|
|
}
|
|
}
|
|
|
|
public static JsonArray fromSet(Set<String> sets) {
|
|
JsonArray array = new JsonArray();
|
|
if (null != sets && sets.size() > 0) {
|
|
for (String item : sets) {
|
|
array.add(new JsonPrimitive(item));
|
|
}
|
|
}
|
|
return array;
|
|
}
|
|
|
|
public static boolean checkUsername(String username) {
|
|
return USERNAME_PATTERN.matcher(username).matches();
|
|
}
|
|
|
|
public static boolean isValidBirthday( String birthday) {
|
|
try {
|
|
if( ! DATE_PATTERN.matcher(birthday).matches() ) {
|
|
return false;
|
|
}
|
|
SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT);
|
|
format.setLenient(false);
|
|
format.parse(birthday);
|
|
} catch (Exception e) {
|
|
LOG.error("incorrect date format. " + birthday, e);
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
}
|