Skip to content

Commit 2a03c0e

Browse files
committed
Merge pull request #5 from Liuchy1/master
Add IM API client features
2 parents 57c1911 + 50cab54 commit 2a03c0e

37 files changed

+2620
-239
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ bin/
33
.metadata/
44
target/
55
test-output/
6+
.idea/
67

78
*.class
89
*.project
910
*.DS_Store
1011
*.war
1112
*.ear
13+
*.iml
1214

1315
pom.xml.releaseBackup
1416
release.properties

README.md

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
### 依赖包
3535
* [slf4j](http://www.slf4j.org/) / log4j (Logger)
3636
* [gson](https://code.google.com/p/google-gson/) (Google JSON Utils)
37-
* [guava](https://code.google.com/p/guava-libraries/) (Google Java Utils)
3837

3938
> 其中 slf4j 可以与 logback, log4j, commons-logging 等日志框架一起工作,可根据你的需要配置使用。
4039
@@ -85,7 +84,7 @@
8584

8685
### 推送样例
8786

88-
> 以下片断来自项目代码里的文件:cn.jpush.api.examples.PushExample
87+
> 以下片断来自项目代码里的文件:example / cn.jpush.api.examples.PushExample
8988
9089
```
9190
JPushClient jpushClient = new JPushClient(masterSecret, appKey, 3);
@@ -188,11 +187,11 @@
188187

189188
### 统计获取样例
190189

191-
> 以下片断来自项目代码里的文件:cn.jpush.api.examples.ReportsExample
190+
> 以下片断来自项目代码里的文件:example / cn.jpush.api.examples.ReportsExample
192191
193192
```
194193
JPushClient jpushClient = new JPushClient(masterSecret, appKey);
195-
try {
194+
try {
196195
ReceivedsResult result = jpushClient.getReportReceiveds("1942377665");
197196
LOG.debug("Got result - " + result);
198197
@@ -208,3 +207,26 @@
208207
LOG.info("Error Message: " + e.getErrorMessage());
209208
}
210209
```
210+
211+
### Tag/Alias 样例
212+
213+
> 以下片断来自项目代码里的文件:example / cn.jpush.api.examples.DeviceExample
214+
215+
```
216+
try {
217+
TagAliasResult result = jpushClient.getDeviceTagAlias(REGISTRATION_ID1);
218+
219+
LOG.info(result.alias);
220+
LOG.info(result.tags.toString());
221+
222+
} catch (APIConnectionException e) {
223+
LOG.error("Connection error. Should retry later. ", e);
224+
225+
} catch (APIRequestException e) {
226+
LOG.error("Error response from JPush server. Should review and fix it. ", e);
227+
LOG.info("HTTP Status: " + e.getStatus());
228+
LOG.info("Error Code: " + e.getErrorCode());
229+
LOG.info("Error Message: " + e.getErrorMessage());
230+
}
231+
```
232+
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
package cn.jpush.api.jmessage;
2+
3+
4+
import cn.jpush.api.common.resp.APIConnectionException;
5+
import cn.jpush.api.jmessage.base.connection.APIRequestException;
6+
7+
public class IMGroupExample {
8+
9+
private static final String appkey = "242780bfdd7315dc1989fe2b";
10+
private static final String masterSecret = "2f5ced2bef64167950e63d13";
11+
12+
public static void testCreateGroup() {
13+
JMessageClient client = new JMessageClient(appkey, masterSecret);
14+
try {
15+
String res = client.createGroup("test_user", "test_gname1", "description", "test_user");
16+
System.out.println(res);
17+
} catch (APIConnectionException e) {
18+
System.out.println(e.getMessage());
19+
} catch (APIRequestException e) {
20+
System.out.println(e.getErrorMessage());
21+
}
22+
}
23+
24+
public static void testGetGroupInfo() {
25+
JMessageClient client = new JMessageClient(appkey, masterSecret);
26+
27+
try {
28+
String res = client.getGroupInfo(10003767);
29+
System.out.println(res);
30+
} catch (APIConnectionException e) {
31+
System.out.println(e.getMessage());
32+
} catch (APIRequestException e) {
33+
System.out.println(e.getErrorMessage());
34+
}
35+
}
36+
37+
public static void testGetGroupMemberList() {
38+
JMessageClient client = new JMessageClient(appkey, masterSecret);
39+
40+
try {
41+
String res = client.getGroupMembers(10003767);
42+
System.out.println(res);
43+
} catch (APIConnectionException e) {
44+
System.out.println(e.getMessage());
45+
} catch (APIRequestException e) {
46+
System.out.println(e.getErrorMessage());
47+
}
48+
}
49+
50+
public static void testGetGroupListByAppkey() {
51+
JMessageClient client = new JMessageClient(appkey, masterSecret);
52+
53+
try {
54+
String res = client.getGroupListByAppkey(0, 30);
55+
System.out.println(res);
56+
} catch (APIConnectionException e) {
57+
System.out.println(e.getMessage());
58+
} catch (APIRequestException e) {
59+
System.out.println(e.getErrorMessage());
60+
}
61+
}
62+
63+
public static void testManageGroup() {
64+
JMessageClient client = new JMessageClient(appkey, masterSecret);
65+
66+
try {
67+
String[] addList = {"baobao148"};
68+
String[] removeList = {"baobao148"};
69+
client.addOrRemoveMembers(10003767, addList, null );
70+
client.addOrRemoveMembers(10003767, null, removeList);
71+
} catch (APIConnectionException e) {
72+
System.out.println(e.getMessage());
73+
} catch (APIRequestException e) {
74+
System.out.println(e.getErrorMessage());
75+
}
76+
}
77+
78+
public static void testUpdateGroupInfo() {
79+
JMessageClient client = new JMessageClient(appkey, masterSecret);
80+
81+
try {
82+
client.updateGroupInfo(10003767, "test_gname_new", "update desc");
83+
} catch (APIConnectionException e) {
84+
System.out.println(e.getMessage());
85+
} catch (APIRequestException e) {
86+
System.out.println(e.getErrorMessage());
87+
}
88+
}
89+
90+
public static void testDeleteGroup() {
91+
JMessageClient client = new JMessageClient(appkey, masterSecret);
92+
93+
try {
94+
client.deleteGroup(10003765);
95+
} catch (APIConnectionException e) {
96+
System.out.println(e.getMessage());
97+
} catch (APIRequestException e) {
98+
System.out.println(e.getErrorMessage());
99+
}
100+
}
101+
102+
public static void main(String[] args) {
103+
// testGetGroupInfo();
104+
// testGetGroupListByAppkey();
105+
// testUpdateGroupInfo();
106+
// testDeleteGroup();
107+
108+
}
109+
}
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
package cn.jpush.api.jmessage;
2+
3+
4+
import cn.jpush.api.common.resp.APIConnectionException;
5+
import cn.jpush.api.jmessage.base.connection.APIRequestException;
6+
import cn.jpush.api.jmessage.base.model.RegisterInfo;
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
10+
import java.util.ArrayList;
11+
import java.util.List;
12+
13+
public class IMUserExample {
14+
15+
protected static final Logger LOG = LoggerFactory.getLogger(IMUserExample.class);
16+
17+
private static final String appkey = "242780bfdd7315dc1989fe2b";
18+
private static final String masterSecret = "2f5ced2bef64167950e63d13";
19+
20+
public static void testRegisterUsers() {
21+
JMessageClient client = new JMessageClient(appkey, masterSecret);
22+
23+
try {
24+
25+
List<RegisterInfo> users = new ArrayList<RegisterInfo>();
26+
27+
RegisterInfo user = RegisterInfo.newBuilder()
28+
.setUsername("test_user")
29+
.setPassword("test_pass")
30+
.build();
31+
32+
RegisterInfo user1 = RegisterInfo.newBuilder()
33+
.setUsername("test_user1")
34+
.setPassword("test_pass1")
35+
.build();
36+
37+
users.add(user);
38+
users.add(user1);
39+
40+
RegisterInfo[] regUsers = new RegisterInfo[users.size()];
41+
42+
String res = client.registerUsers(users.toArray(regUsers));
43+
System.out.println(res);
44+
} catch (APIConnectionException e) {
45+
e.printStackTrace();
46+
} catch (APIRequestException e) {
47+
System.out.println(e.getErrorMessage());
48+
}
49+
}
50+
51+
public static void testGetUserInfo() {
52+
JMessageClient client = new JMessageClient(appkey, masterSecret);
53+
54+
try {
55+
String res = client.getUserInfo("test_user");
56+
System.out.println(res);
57+
} catch (APIConnectionException e) {
58+
e.printStackTrace();
59+
} catch (APIRequestException e) {
60+
e.printStackTrace();
61+
}
62+
}
63+
64+
public static void testUpdatePassword() {
65+
JMessageClient client = new JMessageClient(appkey, masterSecret);
66+
67+
try {
68+
client.updateUserPassword("test_user", "test_new_pass");
69+
} catch (APIConnectionException e) {
70+
e.printStackTrace();
71+
} catch (APIRequestException e) {
72+
e.printStackTrace();
73+
}
74+
}
75+
76+
public static void testUpdateUserInfo() {
77+
JMessageClient client = new JMessageClient(appkey, masterSecret);
78+
79+
try {
80+
client.updateUserInfo("test_user", "test_nick", "2000-01-12", "help me!", 1, "shenzhen", "nanshan", null);
81+
} catch (APIConnectionException e) {
82+
e.printStackTrace();
83+
} catch (APIRequestException e) {
84+
e.printStackTrace();
85+
}
86+
}
87+
88+
public static void testGetUsers() {
89+
JMessageClient client = new JMessageClient(appkey, masterSecret);
90+
91+
try {
92+
String res = client.getUserList(0, 30);
93+
System.out.println(res);
94+
} catch (APIConnectionException e) {
95+
e.printStackTrace();
96+
} catch (APIRequestException e) {
97+
e.printStackTrace();
98+
}
99+
}
100+
101+
public static void testGetGroupsByUser() {
102+
JMessageClient client = new JMessageClient(appkey, masterSecret);
103+
104+
try {
105+
String res = client.getGroupListByUser("test_user");
106+
System.out.println(res);
107+
} catch (APIConnectionException e) {
108+
e.printStackTrace();
109+
} catch (APIRequestException e) {
110+
e.printStackTrace();
111+
}
112+
}
113+
114+
public static void testDeleteUser() {
115+
JMessageClient client = new JMessageClient(appkey, masterSecret);
116+
117+
try {
118+
client.deleteUser("test_user_119");
119+
} catch (APIConnectionException e) {
120+
e.printStackTrace();
121+
} catch (APIRequestException e) {
122+
e.printStackTrace();
123+
}
124+
}
125+
126+
public static void main(String[] args) {
127+
testRegisterUsers();
128+
}
129+
130+
}
131+

src/main/java/cn/jpush/api/common/ServiceHelper.java

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cn.jpush.api.common;
22

3+
import java.text.SimpleDateFormat;
34
import java.util.Random;
45
import java.util.Set;
56
import java.util.regex.Pattern;
@@ -9,9 +10,12 @@
910

1011
import com.google.gson.JsonArray;
1112
import com.google.gson.JsonPrimitive;
13+
import org.slf4j.Logger;
14+
import org.slf4j.LoggerFactory;
1215

1316
public class ServiceHelper {
1417

18+
private static final Logger LOG = LoggerFactory.getLogger(ServiceHelper.class);
1519
private final static Pattern PUSH_PATTERNS = Pattern.compile("[^a-zA-Z0-9]");
1620
private final static String BASIC_PREFIX = "Basic";
1721

@@ -20,8 +24,15 @@ public class ServiceHelper {
2024
private static final int MAX = Integer.MAX_VALUE;
2125

2226
private static final int MAX_BADGE_NUMBER = 99999;
23-
24-
27+
28+
private static final Pattern USERNAME_PATTERN = Pattern.compile("^[a-zA-Z0-9][a-zA-Z_0-9.、。@,-]*");
29+
private static final Pattern DATE_PATTERN = Pattern.compile("[0-9]{4}-[0-9]{2}-[0-9]{2}");
30+
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
31+
32+
static {
33+
DATE_FORMAT.setLenient(false);
34+
}
35+
2536
public static boolean isValidIntBadge(int intBadge) {
2637
if (intBadge >= 0 && intBadge <= MAX_BADGE_NUMBER) {
2738
return true;
@@ -37,7 +48,7 @@ public static String getBasicAuthorization(String username, String password) {
3748
String encodeKey = username + ":" + password;
3849
return BASIC_PREFIX + " " + String.valueOf(Base64.encode(encodeKey.getBytes()));
3950
}
40-
51+
4152
public static void checkBasic(String appKey, String masterSecret) {
4253
if (StringUtils.isEmpty(appKey)
4354
|| StringUtils.isEmpty(masterSecret)) {
@@ -63,4 +74,21 @@ public static JsonArray fromSet(Set<String> sets) {
6374
return array;
6475
}
6576

77+
public static boolean checkUsername(String username) {
78+
return USERNAME_PATTERN.matcher(username).matches();
79+
}
80+
81+
public static boolean isValidBirthday( String birthday) {
82+
try {
83+
if( ! DATE_PATTERN.matcher(birthday).matches() ) {
84+
return false;
85+
}
86+
DATE_FORMAT.parse(birthday);
87+
} catch (Exception e) {
88+
LOG.error("incorrect date format. " + birthday, e);
89+
return false;
90+
}
91+
return true;
92+
}
93+
6694
}

src/main/java/cn/jpush/api/common/connection/HttpProxy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import cn.jpush.api.utils.Preconditions;
1111

1212
public class HttpProxy {
13-
private static final Logger LOG = LoggerFactory.getLogger(NativeHttpClient.class);
13+
private static final Logger LOG = LoggerFactory.getLogger(HttpProxy.class);
1414

1515
private String host;
1616
private int port;

0 commit comments

Comments
 (0)